@@ -571,21 +571,45 @@ func TestUnion(t *testing.T) {
571571 expect interface {}
572572 isErr bool
573573 }{
574+ {nil , nil , []interface {}{}, false },
575+ {nil , []string {"a" , "b" }, []string {"a" , "b" }, false },
576+ {[]string {"a" , "b" }, nil , []string {"a" , "b" }, false },
577+
578+ // []A ∪ []B
579+ {[]string {"1" , "2" }, []int {3 }, []string {}, false },
580+ {[]int {1 , 2 }, []string {"1" , "2" }, []int {}, false },
581+
582+ // []T ∪ []T
574583 {[]string {"a" , "b" , "c" , "c" }, []string {"a" , "b" , "b" }, []string {"a" , "b" , "c" }, false },
575584 {[]string {"a" , "b" }, []string {"a" , "b" , "c" }, []string {"a" , "b" , "c" }, false },
576585 {[]string {"a" , "b" , "c" }, []string {"d" , "e" }, []string {"a" , "b" , "c" , "d" , "e" }, false },
577586 {[]string {}, []string {}, []string {}, false },
578- {[]string {"a" , "b" }, nil , []string {"a" , "b" }, false },
579- {nil , []string {"a" , "b" }, []string {"a" , "b" }, false },
580- {nil , nil , make ([]interface {}, 0 ), true },
581- {[]string {"1" , "2" }, []int {1 , 2 }, make ([]string , 0 ), false },
582- {[]int {1 , 2 }, []string {"1" , "2" }, make ([]int , 0 ), false },
583587 {[]int {1 , 2 , 3 }, []int {3 , 4 , 5 }, []int {1 , 2 , 3 , 4 , 5 }, false },
584588 {[]int {1 , 2 , 3 }, []int {1 , 2 , 3 }, []int {1 , 2 , 3 }, false },
585589 {[]int {1 , 2 , 4 }, []int {2 , 4 }, []int {1 , 2 , 4 }, false },
586590 {[]int {2 , 4 }, []int {1 , 2 , 4 }, []int {2 , 4 , 1 }, false },
587591 {[]int {1 , 2 , 4 }, []int {3 , 6 }, []int {1 , 2 , 4 , 3 , 6 }, false },
588592 {[]float64 {2.2 , 4.4 }, []float64 {1.1 , 2.2 , 4.4 }, []float64 {2.2 , 4.4 , 1.1 }, false },
593+ {[]interface {}{"a" , "b" , "c" , "c" }, []interface {}{"a" , "b" , "b" }, []interface {}{"a" , "b" , "c" }, false },
594+
595+ // []T ∪ []interface{}
596+ {[]string {"1" , "2" }, []interface {}{"9" }, []string {"1" , "2" , "9" }, false },
597+ {[]int {2 , 4 }, []interface {}{1 , 2 , 4 }, []int {2 , 4 , 1 }, false },
598+ {[]int8 {2 , 4 }, []interface {}{int8 (1 ), int8 (2 ), int8 (4 )}, []int8 {2 , 4 , 1 }, false },
599+ {[]int8 {2 , 4 }, []interface {}{1 , 2 , 4 }, []int8 {2 , 4 , 1 }, false },
600+ {[]int16 {2 , 4 }, []interface {}{1 , 2 , 4 }, []int16 {2 , 4 , 1 }, false },
601+ {[]int32 {2 , 4 }, []interface {}{1 , 2 , 4 }, []int32 {2 , 4 , 1 }, false },
602+ {[]int64 {2 , 4 }, []interface {}{1 , 2 , 4 }, []int64 {2 , 4 , 1 }, false },
603+ {[]float64 {2.2 , 4.4 }, []interface {}{1.1 , 2.2 , 4.4 }, []float64 {2.2 , 4.4 , 1.1 }, false },
604+ {[]float32 {2.2 , 4.4 }, []interface {}{1.1 , 2.2 , 4.4 }, []float32 {2.2 , 4.4 , 1.1 }, false },
605+
606+ // []interface{} ∪ []T
607+ {[]interface {}{"a" , "b" , "c" , "c" }, []string {"a" , "b" , "b" }, []interface {}{"a" , "b" , "c" }, false },
608+ {[]interface {}{}, []string {}, []interface {}{}, false },
609+ {[]interface {}{1 , 2 }, []int {2 , 3 }, []interface {}{1 , 2 , 3 }, false },
610+ {[]interface {}{1 , 2 }, []int8 {2 , 3 }, []interface {}{1 , 2 , int8 (3 )}, false },
611+ {[]interface {}{1.1 , 2.2 }, []float64 {2.2 , 3.3 }, []interface {}{1.1 , 2.2 , 3.3 }, false },
612+
589613 // errors
590614 {"not array or slice" , []string {"a" }, false , true },
591615 {[]string {"a" }, "not array or slice" , false , true },
0 commit comments