mirror of
https://github.com/zeromicro/go-zero.git
synced 2026-05-13 09:50:00 +08:00
chore: refactor set in collection package (#5016)
This commit is contained in:
@@ -12,9 +12,9 @@ func init() {
|
||||
logx.Disable()
|
||||
}
|
||||
|
||||
// TypedSet functionality tests
|
||||
// Set functionality tests
|
||||
func TestTypedSetInt(t *testing.T) {
|
||||
set := NewIntSet()
|
||||
set := NewSet[int]()
|
||||
values := []int{1, 2, 3, 2, 1} // Contains duplicates
|
||||
|
||||
// Test adding
|
||||
@@ -39,7 +39,7 @@ func TestTypedSetInt(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestTypedSetStringOps(t *testing.T) {
|
||||
set := NewStringSet()
|
||||
set := NewSet[string]()
|
||||
values := []string{"a", "b", "c", "b", "a"}
|
||||
|
||||
set.Add(values...)
|
||||
@@ -56,7 +56,7 @@ func TestTypedSetStringOps(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestTypedSetClear(t *testing.T) {
|
||||
set := NewIntSet()
|
||||
set := NewSet[int]()
|
||||
set.Add(1, 2, 3)
|
||||
assert.Equal(t, 3, set.Count())
|
||||
|
||||
@@ -66,7 +66,7 @@ func TestTypedSetClear(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestTypedSetEmpty(t *testing.T) {
|
||||
set := NewIntSet()
|
||||
set := NewSet[int]()
|
||||
assert.Equal(t, 0, set.Count())
|
||||
assert.False(t, set.Contains(1))
|
||||
assert.Empty(t, set.Keys())
|
||||
@@ -74,16 +74,16 @@ func TestTypedSetEmpty(t *testing.T) {
|
||||
|
||||
func TestTypedSetMultipleTypes(t *testing.T) {
|
||||
// Test different typed generic sets
|
||||
intSet := NewIntSet()
|
||||
int64Set := NewInt64Set()
|
||||
uintSet := NewUintSet()
|
||||
uint64Set := NewUint64Set()
|
||||
stringSet := NewStringSet()
|
||||
intSet := NewSet[int]()
|
||||
int64Set := NewSet[int64]()
|
||||
uintSet := NewSet[uint]()
|
||||
uint64Set := NewSet[uint64]()
|
||||
stringSet := NewSet[string]()
|
||||
|
||||
intSet.Add(1, 2, 3)
|
||||
int64Set.Add(int64(1), int64(2), int64(3))
|
||||
uintSet.Add(uint(1), uint(2), uint(3))
|
||||
uint64Set.Add(uint64(1), uint64(2), uint64(3))
|
||||
int64Set.Add(1, 2, 3)
|
||||
uintSet.Add(1, 2, 3)
|
||||
uint64Set.Add(1, 2, 3)
|
||||
stringSet.Add("1", "2", "3")
|
||||
|
||||
assert.Equal(t, 3, intSet.Count())
|
||||
@@ -93,9 +93,9 @@ func TestTypedSetMultipleTypes(t *testing.T) {
|
||||
assert.Equal(t, 3, stringSet.Count())
|
||||
}
|
||||
|
||||
// TypedSet benchmarks
|
||||
// Set benchmarks
|
||||
func BenchmarkTypedIntSet(b *testing.B) {
|
||||
s := NewIntSet()
|
||||
s := NewSet[int]()
|
||||
for i := 0; i < b.N; i++ {
|
||||
s.Add(i)
|
||||
_ = s.Contains(i)
|
||||
@@ -103,7 +103,7 @@ func BenchmarkTypedIntSet(b *testing.B) {
|
||||
}
|
||||
|
||||
func BenchmarkTypedStringSet(b *testing.B) {
|
||||
s := NewStringSet()
|
||||
s := NewSet[string]()
|
||||
for i := 0; i < b.N; i++ {
|
||||
s.Add(string(rune(i)))
|
||||
_ = s.Contains(string(rune(i)))
|
||||
@@ -119,26 +119,10 @@ func BenchmarkRawSet(b *testing.B) {
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkUnmanagedSet(b *testing.B) {
|
||||
s := NewUnmanagedSet()
|
||||
for i := 0; i < b.N; i++ {
|
||||
s.Add(i)
|
||||
_ = s.Contains(i)
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkSet(b *testing.B) {
|
||||
s := NewSet()
|
||||
for i := 0; i < b.N; i++ {
|
||||
s.AddInt(i)
|
||||
_ = s.Contains(i)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAdd(t *testing.T) {
|
||||
// given
|
||||
set := NewUnmanagedSet()
|
||||
values := []any{1, 2, 3}
|
||||
set := NewSet[int]()
|
||||
values := []int{1, 2, 3}
|
||||
|
||||
// when
|
||||
set.Add(values...)
|
||||
@@ -150,82 +134,74 @@ func TestAdd(t *testing.T) {
|
||||
|
||||
func TestAddInt(t *testing.T) {
|
||||
// given
|
||||
set := NewSet()
|
||||
set := NewSet[int]()
|
||||
values := []int{1, 2, 3}
|
||||
|
||||
// when
|
||||
set.AddInt(values...)
|
||||
set.Add(values...)
|
||||
|
||||
// then
|
||||
assert.True(t, set.Contains(1) && set.Contains(2) && set.Contains(3))
|
||||
keys := set.KeysInt()
|
||||
keys := set.Keys()
|
||||
sort.Ints(keys)
|
||||
assert.EqualValues(t, values, keys)
|
||||
}
|
||||
|
||||
func TestAddInt64(t *testing.T) {
|
||||
// given
|
||||
set := NewSet()
|
||||
set := NewSet[int64]()
|
||||
values := []int64{1, 2, 3}
|
||||
|
||||
// when
|
||||
set.AddInt64(values...)
|
||||
set.Add(values...)
|
||||
|
||||
// then
|
||||
assert.True(t, set.Contains(int64(1)) && set.Contains(int64(2)) && set.Contains(int64(3)))
|
||||
assert.Equal(t, len(values), len(set.KeysInt64()))
|
||||
assert.True(t, set.Contains(1) && set.Contains(2) && set.Contains(3))
|
||||
assert.Equal(t, len(values), len(set.Keys()))
|
||||
}
|
||||
|
||||
func TestAddUint(t *testing.T) {
|
||||
// given
|
||||
set := NewSet()
|
||||
set := NewSet[uint]()
|
||||
values := []uint{1, 2, 3}
|
||||
|
||||
// when
|
||||
set.AddUint(values...)
|
||||
set.Add(values...)
|
||||
|
||||
// then
|
||||
assert.True(t, set.Contains(uint(1)) && set.Contains(uint(2)) && set.Contains(uint(3)))
|
||||
assert.Equal(t, len(values), len(set.KeysUint()))
|
||||
assert.True(t, set.Contains(1) && set.Contains(2) && set.Contains(3))
|
||||
assert.Equal(t, len(values), len(set.Keys()))
|
||||
}
|
||||
|
||||
func TestAddUint64(t *testing.T) {
|
||||
// given
|
||||
set := NewSet()
|
||||
set := NewSet[uint64]()
|
||||
values := []uint64{1, 2, 3}
|
||||
|
||||
// when
|
||||
set.AddUint64(values...)
|
||||
set.Add(values...)
|
||||
|
||||
// then
|
||||
assert.True(t, set.Contains(uint64(1)) && set.Contains(uint64(2)) && set.Contains(uint64(3)))
|
||||
assert.Equal(t, len(values), len(set.KeysUint64()))
|
||||
assert.True(t, set.Contains(1) && set.Contains(2) && set.Contains(3))
|
||||
assert.Equal(t, len(values), len(set.Keys()))
|
||||
}
|
||||
|
||||
func TestAddStr(t *testing.T) {
|
||||
// given
|
||||
set := NewSet()
|
||||
set := NewSet[string]()
|
||||
values := []string{"1", "2", "3"}
|
||||
|
||||
// when
|
||||
set.AddStr(values...)
|
||||
set.Add(values...)
|
||||
|
||||
// then
|
||||
assert.True(t, set.Contains("1") && set.Contains("2") && set.Contains("3"))
|
||||
assert.Equal(t, len(values), len(set.KeysStr()))
|
||||
assert.Equal(t, len(values), len(set.Keys()))
|
||||
}
|
||||
|
||||
func TestContainsWithoutElements(t *testing.T) {
|
||||
// given
|
||||
set := NewSet()
|
||||
|
||||
// then
|
||||
assert.False(t, set.Contains(1))
|
||||
}
|
||||
|
||||
func TestContainsUnmanagedWithoutElements(t *testing.T) {
|
||||
// given
|
||||
set := NewUnmanagedSet()
|
||||
set := NewSet[int]()
|
||||
|
||||
// then
|
||||
assert.False(t, set.Contains(1))
|
||||
@@ -233,8 +209,8 @@ func TestContainsUnmanagedWithoutElements(t *testing.T) {
|
||||
|
||||
func TestRemove(t *testing.T) {
|
||||
// given
|
||||
set := NewSet()
|
||||
set.Add([]any{1, 2, 3}...)
|
||||
set := NewSet[int]()
|
||||
set.Add([]int{1, 2, 3}...)
|
||||
|
||||
// when
|
||||
set.Remove(2)
|
||||
@@ -245,57 +221,9 @@ func TestRemove(t *testing.T) {
|
||||
|
||||
func TestCount(t *testing.T) {
|
||||
// given
|
||||
set := NewSet()
|
||||
set.Add([]any{1, 2, 3}...)
|
||||
set := NewSet[int]()
|
||||
set.Add([]int{1, 2, 3}...)
|
||||
|
||||
// then
|
||||
assert.Equal(t, set.Count(), 3)
|
||||
}
|
||||
|
||||
func TestKeysIntMismatch(t *testing.T) {
|
||||
set := NewSet()
|
||||
set.add(int64(1))
|
||||
set.add(2)
|
||||
vals := set.KeysInt()
|
||||
assert.EqualValues(t, []int{2}, vals)
|
||||
}
|
||||
|
||||
func TestKeysInt64Mismatch(t *testing.T) {
|
||||
set := NewSet()
|
||||
set.add(1)
|
||||
set.add(int64(2))
|
||||
vals := set.KeysInt64()
|
||||
assert.EqualValues(t, []int64{2}, vals)
|
||||
}
|
||||
|
||||
func TestKeysUintMismatch(t *testing.T) {
|
||||
set := NewSet()
|
||||
set.add(1)
|
||||
set.add(uint(2))
|
||||
vals := set.KeysUint()
|
||||
assert.EqualValues(t, []uint{2}, vals)
|
||||
}
|
||||
|
||||
func TestKeysUint64Mismatch(t *testing.T) {
|
||||
set := NewSet()
|
||||
set.add(1)
|
||||
set.add(uint64(2))
|
||||
vals := set.KeysUint64()
|
||||
assert.EqualValues(t, []uint64{2}, vals)
|
||||
}
|
||||
|
||||
func TestKeysStrMismatch(t *testing.T) {
|
||||
set := NewSet()
|
||||
set.add(1)
|
||||
set.add("2")
|
||||
vals := set.KeysStr()
|
||||
assert.EqualValues(t, []string{"2"}, vals)
|
||||
}
|
||||
|
||||
func TestSetType(t *testing.T) {
|
||||
set := NewUnmanagedSet()
|
||||
set.add(1)
|
||||
set.add("2")
|
||||
vals := set.Keys()
|
||||
assert.ElementsMatch(t, []any{1, "2"}, vals)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user