@@ -260,7 +260,9 @@ func TestIntersect(t *testing.T) {
260260 {[]string {"a" , "b" }, []string {"a" , "b" , "c" }, []string {"a" , "b" }},
261261 {[]string {"a" , "b" , "c" }, []string {"d" , "e" }, []string {}},
262262 {[]string {}, []string {}, []string {}},
263- {nil , nil , make ([]interface {}, 0 )},
263+ {[]string {"a" , "b" }, nil , []interface {}{}},
264+ {nil , []string {"a" , "b" }, []interface {}{}},
265+ {nil , nil , []interface {}{}},
264266 {[]string {"1" , "2" }, []int {1 , 2 }, []string {}},
265267 {[]int {1 , 2 }, []string {"1" , "2" }, []int {}},
266268 {[]int {1 , 2 , 4 }, []int {2 , 4 }, []int {2 , 4 }},
@@ -270,6 +272,36 @@ func TestIntersect(t *testing.T) {
270272 // errors
271273 {"not array or slice" , []string {"a" }, false },
272274 {[]string {"a" }, "not array or slice" , false },
275+
276+ // []interface{} ∩ []interface{}
277+ {[]interface {}{"a" , "b" , "c" }, []interface {}{"a" , "b" , "b" }, []interface {}{"a" , "b" }},
278+ {[]interface {}{1 , 2 , 3 }, []interface {}{1 , 2 , 2 }, []interface {}{1 , 2 }},
279+ {[]interface {}{int8 (1 ), int8 (2 ), int8 (3 )}, []interface {}{int8 (1 ), int8 (2 ), int8 (2 )}, []interface {}{int8 (1 ), int8 (2 )}},
280+ {[]interface {}{int16 (1 ), int16 (2 ), int16 (3 )}, []interface {}{int16 (1 ), int16 (2 ), int16 (2 )}, []interface {}{int16 (1 ), int16 (2 )}},
281+ {[]interface {}{int32 (1 ), int32 (2 ), int32 (3 )}, []interface {}{int32 (1 ), int32 (2 ), int32 (2 )}, []interface {}{int32 (1 ), int32 (2 )}},
282+ {[]interface {}{int64 (1 ), int64 (2 ), int64 (3 )}, []interface {}{int64 (1 ), int64 (2 ), int64 (2 )}, []interface {}{int64 (1 ), int64 (2 )}},
283+ {[]interface {}{float32 (1 ), float32 (2 ), float32 (3 )}, []interface {}{float32 (1 ), float32 (2 ), float32 (2 )}, []interface {}{float32 (1 ), float32 (2 )}},
284+ {[]interface {}{float64 (1 ), float64 (2 ), float64 (3 )}, []interface {}{float64 (1 ), float64 (2 ), float64 (2 )}, []interface {}{float64 (1 ), float64 (2 )}},
285+
286+ // []interface{} ∩ []T
287+ {[]interface {}{"a" , "b" , "c" }, []string {"a" , "b" , "b" }, []interface {}{"a" , "b" }},
288+ {[]interface {}{1 , 2 , 3 }, []int {1 , 2 , 2 }, []interface {}{1 , 2 }},
289+ {[]interface {}{int8 (1 ), int8 (2 ), int8 (3 )}, []int8 {1 , 2 , 2 }, []interface {}{int8 (1 ), int8 (2 )}},
290+ {[]interface {}{int16 (1 ), int16 (2 ), int16 (3 )}, []int16 {1 , 2 , 2 }, []interface {}{int16 (1 ), int16 (2 )}},
291+ {[]interface {}{int32 (1 ), int32 (2 ), int32 (3 )}, []int32 {1 , 2 , 2 }, []interface {}{int32 (1 ), int32 (2 )}},
292+ {[]interface {}{int64 (1 ), int64 (2 ), int64 (3 )}, []int64 {1 , 2 , 2 }, []interface {}{int64 (1 ), int64 (2 )}},
293+ {[]interface {}{float32 (1 ), float32 (2 ), float32 (3 )}, []float32 {1 , 2 , 2 }, []interface {}{float32 (1 ), float32 (2 )}},
294+ {[]interface {}{float64 (1 ), float64 (2 ), float64 (3 )}, []float64 {1 , 2 , 2 }, []interface {}{float64 (1 ), float64 (2 )}},
295+
296+ // []T ∩ []interface{}
297+ {[]string {"a" , "b" , "c" }, []interface {}{"a" , "b" , "b" }, []string {"a" , "b" }},
298+ {[]int {1 , 2 , 3 }, []interface {}{1 , 2 , 2 }, []int {1 , 2 }},
299+ {[]int8 {1 , 2 , 3 }, []interface {}{int8 (1 ), int8 (2 ), int8 (2 )}, []int8 {1 , 2 }},
300+ {[]int16 {1 , 2 , 3 }, []interface {}{int16 (1 ), int16 (2 ), int16 (2 )}, []int16 {1 , 2 }},
301+ {[]int32 {1 , 2 , 3 }, []interface {}{int32 (1 ), int32 (2 ), int32 (2 )}, []int32 {1 , 2 }},
302+ {[]int64 {1 , 2 , 3 }, []interface {}{int64 (1 ), int64 (2 ), int64 (2 )}, []int64 {1 , 2 }},
303+ {[]float32 {1 , 2 , 3 }, []interface {}{float32 (1 ), float32 (2 ), float32 (2 )}, []float32 {1 , 2 }},
304+ {[]float64 {1 , 2 , 3 }, []interface {}{float64 (1 ), float64 (2 ), float64 (2 )}, []float64 {1 , 2 }},
273305 } {
274306 errMsg := fmt .Sprintf ("[%d] %v" , i , test )
275307
0 commit comments