github.com/lyft/flytestdlib@v0.3.12-0.20210213045714-8cdd111ecda1/sets/generic_set_test.go (about) 1 package sets 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 type GenericVal string 10 11 func (g GenericVal) GetID() string { 12 return string(g) 13 } 14 15 func TestGenericSet(t *testing.T) { 16 assert.Equal(t, []string{"a", "b"}, NewGeneric(GenericVal("a"), GenericVal("b")).ListKeys()) 17 assert.Equal(t, []string{"a", "b"}, NewGeneric(GenericVal("a"), GenericVal("b"), GenericVal("a")).ListKeys()) 18 19 { 20 g1 := NewGeneric(GenericVal("a"), GenericVal("b")) 21 g2 := NewGeneric(GenericVal("a"), GenericVal("b"), GenericVal("c")) 22 { 23 g := g1.Intersection(g2) 24 assert.Equal(t, []string{"a", "b"}, g.ListKeys()) 25 } 26 { 27 g := g2.Intersection(g1) 28 assert.Equal(t, []string{"a", "b"}, g.ListKeys()) 29 } 30 } 31 { 32 g1 := NewGeneric(GenericVal("a"), GenericVal("b")) 33 g2 := NewGeneric(GenericVal("a"), GenericVal("b"), GenericVal("c")) 34 g := g2.Difference(g1) 35 assert.Equal(t, []string{"c"}, g.ListKeys()) 36 } 37 { 38 g1 := NewGeneric(GenericVal("a"), GenericVal("b")) 39 g2 := NewGeneric(GenericVal("a"), GenericVal("b"), GenericVal("c")) 40 g := g1.Difference(g2) 41 assert.Equal(t, []string{}, g.ListKeys()) 42 } 43 { 44 g1 := NewGeneric(GenericVal("a"), GenericVal("b")) 45 assert.True(t, g1.Has(GenericVal("a"))) 46 assert.False(t, g1.Has(GenericVal("c"))) 47 } 48 { 49 g1 := NewGeneric(GenericVal("a"), GenericVal("b")) 50 assert.False(t, g1.HasAll(GenericVal("a"), GenericVal("b"), GenericVal("c"))) 51 assert.True(t, g1.HasAll(GenericVal("a"), GenericVal("b"))) 52 } 53 54 { 55 g1 := NewGeneric(GenericVal("a"), GenericVal("b")) 56 g2 := NewGeneric(GenericVal("a"), GenericVal("b"), GenericVal("c")) 57 g := g1.Union(g2) 58 assert.Equal(t, []string{"a", "b", "c"}, g.ListKeys()) 59 } 60 61 { 62 g1 := NewGeneric(GenericVal("a"), GenericVal("b")) 63 g2 := NewGeneric(GenericVal("a"), GenericVal("b"), GenericVal("c")) 64 assert.True(t, g2.IsSuperset(g1)) 65 assert.False(t, g1.IsSuperset(g2)) 66 } 67 68 { 69 g1 := NewGeneric(GenericVal("a"), GenericVal("b")) 70 assert.True(t, g1.Has(GenericVal("a"))) 71 assert.False(t, g1.Has(GenericVal("c"))) 72 assert.Equal(t, []SetObject{ 73 GenericVal("a"), 74 GenericVal("b"), 75 }, g1.List()) 76 g2 := NewGeneric(g1.UnsortedList()...) 77 assert.True(t, g1.Equal(g2)) 78 } 79 { 80 g1 := NewGeneric(GenericVal("a"), GenericVal("b")) 81 g2 := NewGeneric(GenericVal("a"), GenericVal("b"), GenericVal("c")) 82 g3 := NewGeneric(GenericVal("a"), GenericVal("b")) 83 assert.False(t, g1.Equal(g2)) 84 assert.True(t, g1.Equal(g3)) 85 86 assert.Equal(t, 2, g1.Len()) 87 g1.Insert(GenericVal("b")) 88 assert.Equal(t, 2, g1.Len()) 89 assert.True(t, g1.Equal(g3)) 90 g1.Insert(GenericVal("c")) 91 assert.Equal(t, 3, g1.Len()) 92 assert.True(t, g1.Equal(g2)) 93 assert.True(t, g1.HasAny(GenericVal("a"), GenericVal("d"))) 94 assert.False(t, g1.HasAny(GenericVal("f"), GenericVal("d"))) 95 g1.Delete(GenericVal("f")) 96 assert.True(t, g1.Equal(g2)) 97 g1.Delete(GenericVal("c")) 98 assert.True(t, g1.Equal(g3)) 99 100 { 101 p, ok := g1.PopAny() 102 assert.NotNil(t, p) 103 assert.True(t, ok) 104 } 105 { 106 p, ok := g1.PopAny() 107 assert.NotNil(t, p) 108 assert.True(t, ok) 109 } 110 { 111 p, ok := g1.PopAny() 112 assert.Nil(t, p) 113 assert.False(t, ok) 114 } 115 } 116 }