package sets import ( "encoding/json" "strconv" "testing" "github.com/stretchr/testify/assert" ) func TestOrderedSet(t *testing.T) { set := NewOrderedSet[int]() set.Add(1, 4, 6, 8, 9) set.Add(7, 4, 9, 2, 3) assert.Equal(t, 8, set.Len()) assert.Equal(t, []int{1, 4, 6, 8, 9, 7, 2, 3}, set.AsSlice()) set.Del(4, 5, 6, 7) assert.Equal(t, 5, set.Len()) assert.Equal(t, []int{1, 8, 9, 2, 3}, set.AsSlice()) b, _ := json.Marshal(set) assert.JSONEq(t, `[1,8,9,2,3]`, string(b)) set2 := NewOrderedSetWithHash(func(v int) string { return strconv.Itoa(v) }) _ = json.Unmarshal(b, set2) assert.Equal(t, 5, set.Len()) assert.Equal(t, []int{1, 8, 9, 2, 3}, set.AsSlice()) }