diff options
author | Cameron Moore <moorereason@gmail.com> | 2017-05-01 21:25:39 -0500 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-05-18 10:13:44 +0300 |
commit | f1c29b017bbd88e701cd5151dd186e868672ef89 (patch) | |
tree | b5c66b6ea33ff6b10904ac0a906cb363b624c24b /tpl/collections/collections_test.go | |
parent | 93b3b1386714999d716e03b131f77234248f1724 (diff) |
tpl/collections: Add support for interfaces to intersect
Fixes #1952
Diffstat (limited to 'tpl/collections/collections_test.go')
-rw-r--r-- | tpl/collections/collections_test.go | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/tpl/collections/collections_test.go b/tpl/collections/collections_test.go index eefbcef6c..07055de86 100644 --- a/tpl/collections/collections_test.go +++ b/tpl/collections/collections_test.go @@ -260,7 +260,9 @@ func TestIntersect(t *testing.T) { {[]string{"a", "b"}, []string{"a", "b", "c"}, []string{"a", "b"}}, {[]string{"a", "b", "c"}, []string{"d", "e"}, []string{}}, {[]string{}, []string{}, []string{}}, - {nil, nil, make([]interface{}, 0)}, + {[]string{"a", "b"}, nil, []interface{}{}}, + {nil, []string{"a", "b"}, []interface{}{}}, + {nil, nil, []interface{}{}}, {[]string{"1", "2"}, []int{1, 2}, []string{}}, {[]int{1, 2}, []string{"1", "2"}, []int{}}, {[]int{1, 2, 4}, []int{2, 4}, []int{2, 4}}, @@ -270,6 +272,36 @@ func TestIntersect(t *testing.T) { // errors {"not array or slice", []string{"a"}, false}, {[]string{"a"}, "not array or slice", false}, + + // []interface{} ∩ []interface{} + {[]interface{}{"a", "b", "c"}, []interface{}{"a", "b", "b"}, []interface{}{"a", "b"}}, + {[]interface{}{1, 2, 3}, []interface{}{1, 2, 2}, []interface{}{1, 2}}, + {[]interface{}{int8(1), int8(2), int8(3)}, []interface{}{int8(1), int8(2), int8(2)}, []interface{}{int8(1), int8(2)}}, + {[]interface{}{int16(1), int16(2), int16(3)}, []interface{}{int16(1), int16(2), int16(2)}, []interface{}{int16(1), int16(2)}}, + {[]interface{}{int32(1), int32(2), int32(3)}, []interface{}{int32(1), int32(2), int32(2)}, []interface{}{int32(1), int32(2)}}, + {[]interface{}{int64(1), int64(2), int64(3)}, []interface{}{int64(1), int64(2), int64(2)}, []interface{}{int64(1), int64(2)}}, + {[]interface{}{float32(1), float32(2), float32(3)}, []interface{}{float32(1), float32(2), float32(2)}, []interface{}{float32(1), float32(2)}}, + {[]interface{}{float64(1), float64(2), float64(3)}, []interface{}{float64(1), float64(2), float64(2)}, []interface{}{float64(1), float64(2)}}, + + // []interface{} ∩ []T + {[]interface{}{"a", "b", "c"}, []string{"a", "b", "b"}, []interface{}{"a", "b"}}, + {[]interface{}{1, 2, 3}, []int{1, 2, 2}, []interface{}{1, 2}}, + {[]interface{}{int8(1), int8(2), int8(3)}, []int8{1, 2, 2}, []interface{}{int8(1), int8(2)}}, + {[]interface{}{int16(1), int16(2), int16(3)}, []int16{1, 2, 2}, []interface{}{int16(1), int16(2)}}, + {[]interface{}{int32(1), int32(2), int32(3)}, []int32{1, 2, 2}, []interface{}{int32(1), int32(2)}}, + {[]interface{}{int64(1), int64(2), int64(3)}, []int64{1, 2, 2}, []interface{}{int64(1), int64(2)}}, + {[]interface{}{float32(1), float32(2), float32(3)}, []float32{1, 2, 2}, []interface{}{float32(1), float32(2)}}, + {[]interface{}{float64(1), float64(2), float64(3)}, []float64{1, 2, 2}, []interface{}{float64(1), float64(2)}}, + + // []T ∩ []interface{} + {[]string{"a", "b", "c"}, []interface{}{"a", "b", "b"}, []string{"a", "b"}}, + {[]int{1, 2, 3}, []interface{}{1, 2, 2}, []int{1, 2}}, + {[]int8{1, 2, 3}, []interface{}{int8(1), int8(2), int8(2)}, []int8{1, 2}}, + {[]int16{1, 2, 3}, []interface{}{int16(1), int16(2), int16(2)}, []int16{1, 2}}, + {[]int32{1, 2, 3}, []interface{}{int32(1), int32(2), int32(2)}, []int32{1, 2}}, + {[]int64{1, 2, 3}, []interface{}{int64(1), int64(2), int64(2)}, []int64{1, 2}}, + {[]float32{1, 2, 3}, []interface{}{float32(1), float32(2), float32(2)}, []float32{1, 2}}, + {[]float64{1, 2, 3}, []interface{}{float64(1), float64(2), float64(2)}, []float64{1, 2}}, } { errMsg := fmt.Sprintf("[%d] %v", i, test) |