| 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) | 
 | 		} | 
 | 	} | 
 | } |