databricks-cli/libs/set/set_test.go

112 lines
2.1 KiB
Go

package set
import (
"fmt"
"testing"
"github.com/stretchr/testify/require"
)
func TestSet(t *testing.T) {
s := NewSetFrom([]string{})
require.ElementsMatch(t, []string{}, s.Iter())
s = NewSetFrom([]string{"a", "a", "a", "b", "b", "c", "d", "e"})
require.ElementsMatch(t, []string{"a", "b", "c", "d", "e"}, s.Iter())
i := NewSetFrom([]int{1, 1, 2, 3, 4, 5, 7, 7, 7, 10, 11})
require.ElementsMatch(t, []int{1, 2, 3, 4, 5, 7, 10, 11}, i.Iter())
f := NewSetFrom([]float32{1.1, 1.1, 2.0, 3.1, 4.5, 5.1, 7.1, 7.2, 7.1, 10.1, 11.0})
require.ElementsMatch(t, []float32{1.1, 2.0, 3.1, 4.5, 5.1, 7.1, 7.2, 10.1, 11.0}, f.Iter())
}
type testStruct struct {
key string
value int
}
func TestSetCustomKey(t *testing.T) {
s := NewSetF(func(item *testStruct) string {
return fmt.Sprintf("%s:%d", item.key, item.value)
})
s.Add(&testStruct{"a", 1})
s.Add(&testStruct{"b", 2})
s.Add(&testStruct{"c", 1})
s.Add(&testStruct{"a", 1})
s.Add(&testStruct{"a", 1})
s.Add(&testStruct{"a", 1})
s.Add(&testStruct{"c", 1})
s.Add(&testStruct{"c", 3})
require.ElementsMatch(t, []*testStruct{
{"a", 1},
{"b", 2},
{"c", 1},
{"c", 3},
}, s.Iter())
}
func TestSetAdd(t *testing.T) {
s := NewSet[string]()
s.Add("a")
s.Add("a")
s.Add("a")
s.Add("b")
s.Add("c")
s.Add("c")
s.Add("d")
s.Add("d")
require.ElementsMatch(t, []string{"a", "b", "c", "d"}, s.Iter())
}
func TestSetRemove(t *testing.T) {
s := NewSet[string]()
s.Add("a")
s.Add("a")
s.Add("a")
s.Add("b")
s.Add("c")
s.Add("c")
s.Add("d")
s.Add("d")
s.Remove("d")
s.Remove("d")
s.Remove("a")
require.ElementsMatch(t, []string{"b", "c"}, s.Iter())
}
func TestSetHas(t *testing.T) {
s := NewSet[string]()
require.False(t, s.Has("a"))
s.Add("a")
require.True(t, s.Has("a"))
s.Add("a")
s.Add("a")
require.True(t, s.Has("a"))
s.Add("b")
s.Add("c")
s.Add("c")
s.Add("d")
s.Add("d")
require.True(t, s.Has("a"))
require.True(t, s.Has("b"))
require.True(t, s.Has("c"))
require.True(t, s.Has("d"))
s.Remove("d")
s.Remove("a")
require.False(t, s.Has("a"))
require.True(t, s.Has("b"))
require.True(t, s.Has("c"))
require.False(t, s.Has("d"))
}