File size: 689 Bytes
ca7217f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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())
}