tpl/collections: Add uint support to In
authorCameron Moore <moorereason@gmail.com>
Mon, 22 May 2017 02:10:27 +0000 (21:10 -0500)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 8 Jun 2017 19:01:15 +0000 (21:01 +0200)
tpl/collections/collections.go
tpl/collections/collections_test.go

index 5d2cf3b35bc62531d0aeebf883d278377b65c2dc..06ed788ca1ef8df7989a8f4ecdda3e50763707ea 100644 (file)
@@ -261,6 +261,13 @@ func (ns *Namespace) In(l interface{}, v interface{}) bool {
                                                return true
                                        }
                                }
+                       case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
+                               switch vv.Kind() {
+                               case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
+                                       if vv.Uint() == lvv.Uint() {
+                                               return true
+                                       }
+                               }
                        case reflect.Float32, reflect.Float64:
                                switch vv.Kind() {
                                case reflect.Float32, reflect.Float64:
@@ -564,7 +571,6 @@ func (ns *Namespace) Union(l1, l2 interface{}) (interface{}, error) {
                        if l1v.Type() != l2v.Type() &&
                                l1v.Type().Elem().Kind() != reflect.Interface &&
                                l2v.Type().Elem().Kind() != reflect.Interface {
-
                                return r.Interface(), nil
                        }
 
index 811cb4c879a9dfdfa58ea91abbdd8f9aae6db154..52b4cdf5935e50fc2d60dc608d21ce6d0b8022e4 100644 (file)
@@ -298,6 +298,7 @@ func TestIntersect(t *testing.T) {
                {[]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{}{uint(1), uint(2), uint(3)}, []uint{1, 2, 2}, []interface{}{uint(1), uint(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)}},
 
@@ -604,10 +605,11 @@ func TestUnion(t *testing.T) {
                {[]float32{2.2, 4.4}, []interface{}{1.1, 2.2, 4.4}, []float32{2.2, 4.4, 1.1}, false},
 
                // []interface{} ∪ []T
-               {[]interface{}{"a", "b", "c", "c"}, []string{"a", "b", "b"}, []interface{}{"a", "b", "c"}, false},
+               {[]interface{}{"a", "b", "c", "c"}, []string{"a", "b", "d"}, []interface{}{"a", "b", "c", "d"}, false},
                {[]interface{}{}, []string{}, []interface{}{}, false},
                {[]interface{}{1, 2}, []int{2, 3}, []interface{}{1, 2, 3}, false},
                {[]interface{}{1, 2}, []int8{2, 3}, []interface{}{1, 2, int8(3)}, false},
+               {[]interface{}{uint(1), uint(2)}, []uint{2, 3}, []interface{}{uint(1), uint(2), uint(3)}, false},
                {[]interface{}{1.1, 2.2}, []float64{2.2, 3.3}, []interface{}{1.1, 2.2, 3.3}, false},
 
                // errors