| package vendor |
| |
| import "testing" |
| import "reflect" |
| |
| func set(args ...string) map[string]bool { |
| r := make(map[string]bool) |
| for _, a := range args { |
| r[a] = true |
| } |
| return r |
| } |
| |
| func TestUnion(t *testing.T) { |
| tests := []struct { |
| a, b map[string]bool |
| want map[string]bool |
| }{{ |
| a: nil, b: nil, |
| want: set(), |
| }, { |
| a: nil, b: set("b"), |
| want: set("b"), |
| }, { |
| a: set("a"), b: nil, |
| want: set("a"), |
| }, { |
| a: set("a"), b: set("b"), |
| want: set("b", "a"), |
| }, { |
| a: set("c"), b: set("c"), |
| want: set("c"), |
| }} |
| |
| for _, tt := range tests { |
| got := union(tt.a, tt.b) |
| if !reflect.DeepEqual(tt.want, got) { |
| t.Errorf("union(%v, %v) want: %v, got %v", tt.a, tt.b, tt.want, got) |
| } |
| } |
| } |
| |
| func TestIntersection(t *testing.T) { |
| tests := []struct { |
| a, b map[string]bool |
| want map[string]bool |
| }{{ |
| a: nil, b: nil, |
| want: set(), |
| }, { |
| a: nil, b: set("b"), |
| want: set(), |
| }, { |
| a: set("a"), b: nil, |
| want: set(), |
| }, { |
| a: set("a"), b: set("b"), |
| want: set(), |
| }, { |
| a: set("c"), b: set("c"), |
| want: set("c"), |
| }, { |
| a: set("a", "c"), b: set("b", "c"), |
| want: set("c"), |
| }} |
| |
| for _, tt := range tests { |
| got := intersection(tt.a, tt.b) |
| if !reflect.DeepEqual(tt.want, got) { |
| t.Errorf("intersection(%v, %v) want: %v, got %v", tt.a, tt.b, tt.want, got) |
| } |
| } |
| } |
| |
| func TestDifference(t *testing.T) { |
| tests := []struct { |
| a, b map[string]bool |
| want map[string]bool |
| }{{ |
| a: nil, b: nil, |
| want: set(), |
| }, { |
| a: nil, b: set("b"), |
| want: set("b"), |
| }, { |
| a: set("a"), b: nil, |
| want: set("a"), |
| }, { |
| a: set("a"), b: set("b"), |
| want: set("a", "b"), |
| }, { |
| a: set("c"), b: set("c"), |
| want: set(), |
| }, { |
| a: set("a", "c"), b: set("b", "c"), |
| want: set("a", "b"), |
| }} |
| |
| for _, tt := range tests { |
| got := difference(tt.a, tt.b) |
| if !reflect.DeepEqual(tt.want, got) { |
| t.Errorf("difference(%v, %v) want: %v, got %v", tt.a, tt.b, tt.want, got) |
| } |
| } |
| } |
| |
| func TestContains(t *testing.T) { |
| tests := []struct { |
| a map[string]bool |
| s []string |
| want bool |
| }{{ |
| a: nil, s: nil, |
| want: false, |
| }, { |
| a: set("a"), s: nil, |
| want: false, |
| }, { |
| a: set("a"), s: []string{"a"}, |
| want: true, |
| }, { |
| a: set("a"), s: []string{"b"}, |
| want: false, |
| }, { |
| a: set("a", "b"), s: []string{"b"}, |
| want: true, |
| }, { |
| a: set("a"), s: []string{"a", "b"}, |
| want: false, |
| }, { |
| a: set("a", "b", "c"), s: []string{"a", "b"}, |
| want: true, |
| }, { |
| a: set("a", "b", "c"), s: []string{"x", "b"}, |
| want: false, |
| }, { |
| a: set("a", "b", "c"), s: []string{"b", "c", "d"}, |
| want: false, |
| }} |
| |
| for _, tt := range tests { |
| got := contains(tt.a, tt.s...) |
| if !reflect.DeepEqual(tt.want, got) { |
| t.Errorf("contains(%v, %v) want: %v, got %v", tt.a, tt.s, tt.want, got) |
| } |
| } |
| } |