github.com/altipla-consulting/ravendb-go-client@v0.1.3/string_array_test.go (about) 1 package ravendb 2 3 import ( 4 "sort" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 // stringArrayEq returns true if arrays have the same content, ignoring order 11 func stringArrayEq(a1, a2 []string) bool { 12 if len(a1) != len(a2) { 13 return false 14 } 15 if len(a1) == 0 { 16 return true 17 } 18 a1c := stringArrayCopy(a1) 19 a2c := stringArrayCopy(a2) 20 sort.Strings(a1c) 21 sort.Strings(a2c) 22 for i, s := range a1c { 23 if s != a2c[i] { 24 return false 25 } 26 } 27 return true 28 } 29 30 func TestStringArraySubtract(t *testing.T) { 31 var tests = []struct { 32 a1, a2 []string 33 exp []string 34 }{ 35 {nil, nil, nil}, 36 {[]string{}, nil, nil}, 37 {[]string{"a"}, nil, []string{"a"}}, 38 {[]string{"a", "b"}, []string{"a"}, []string{"b"}}, 39 } 40 for _, test := range tests { 41 got := stringArraySubtract(test.a1, test.a2) 42 sort.Strings(got) 43 if !stringArrayEq(test.exp, got) { 44 t.Fatalf("got: %#v, exp: %#v", got, test.exp) 45 } 46 } 47 } 48 49 func TestStringArrayContains(t *testing.T) { 50 var tests = []struct { 51 a []string 52 s string 53 exp bool 54 }{ 55 {nil, "a", false}, 56 {[]string{}, "a", false}, 57 {[]string{"a"}, "a", true}, 58 {[]string{"b", "a"}, "a", true}, 59 {[]string{"b", "a", "c", "d"}, "a", true}, 60 {[]string{"a"}, "A", false}, 61 {[]string{"a", "a"}, "a", true}, 62 {[]string{"a", ""}, "", true}, 63 {[]string{}, "", false}, 64 } 65 for _, test := range tests { 66 got := stringArrayContains(test.a, test.s) 67 assert.Equal(t, test.exp, got) 68 } 69 } 70 71 func TestStringArrayRemoveDuplicates(t *testing.T) { 72 var tests = []struct { 73 a []string 74 exp []string 75 }{ 76 {nil, nil}, 77 {[]string{}, []string{}}, 78 {[]string{"a"}, []string{"a"}}, 79 {[]string{"a", "a"}, []string{"a"}}, 80 {[]string{"a", "b"}, []string{"a", "b"}}, 81 {[]string{"a", "b", "a"}, []string{"a", "b"}}, 82 {[]string{"a", "A", "a", "z", "a"}, []string{"a", "z", "A"}}, 83 } 84 for _, test := range tests { 85 got := stringArrayRemoveDuplicates(test.a) 86 eq := stringArrayEq(test.exp, got) 87 assert.True(t, eq, "Expected: %v, got: %v", test.exp, got) 88 } 89 }