mirror of https://github.com/databricks/cli.git
112 lines
2.1 KiB
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"))
|
||
|
}
|