mirror of
https://github.com/jefferyjob/go-easy-utils.git
synced 2025-10-04 14:42:47 +08:00
157 lines
4.3 KiB
Go
157 lines
4.3 KiB
Go
package sliceUtil
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestChunk(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
slice []any
|
|
size int
|
|
want [][]any
|
|
}{
|
|
{
|
|
name: "empty slice",
|
|
slice: []any{},
|
|
size: 3,
|
|
want: [][]any{},
|
|
},
|
|
{
|
|
name: "slice with less than chunk size",
|
|
slice: []any{1, 2},
|
|
size: 3,
|
|
want: [][]any{{1, 2}},
|
|
},
|
|
{
|
|
name: "slice with exact chunk size",
|
|
slice: []any{1, 2, 3, 4, 5, 6},
|
|
size: 3,
|
|
want: [][]any{{1, 2, 3}, {4, 5, 6}},
|
|
},
|
|
{
|
|
name: "slice with more than chunk size",
|
|
slice: []any{1, 2, 3, 4, 5, 6, 7},
|
|
size: 3,
|
|
want: [][]any{{1, 2, 3}, {4, 5, 6}, {7}},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := ChunkSlice(tt.slice, tt.size)
|
|
if len(got) != len(tt.want) {
|
|
t.Errorf("Chunk() = %+v, want %+v", got, tt.want)
|
|
return
|
|
}
|
|
for i := range got {
|
|
if !reflect.DeepEqual(got[i], tt.want[i]) {
|
|
t.Errorf("Chunk() = %+v, want %+v", got, tt.want)
|
|
break
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestChunkStr(t *testing.T) {
|
|
slice := []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"}
|
|
size := 3
|
|
expected := [][]string{{"a", "b", "c"}, {"d", "e", "f"}, {"g", "h", "i"}, {"j", "k"}}
|
|
result := ChunkSlice(slice, size)
|
|
if !reflect.DeepEqual(result, expected) {
|
|
t.Errorf("ChunkStr(%v, %d) = %v; expected %v", slice, size, result, expected)
|
|
}
|
|
}
|
|
|
|
func TestChunkInt(t *testing.T) {
|
|
slice := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
|
|
size := 4
|
|
expected := [][]int{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11}}
|
|
result := ChunkSlice(slice, size)
|
|
if !reflect.DeepEqual(result, expected) {
|
|
t.Errorf("ChunkInt(%v, %d) = %v; expected %v", slice, size, result, expected)
|
|
}
|
|
}
|
|
|
|
func TestChunkInt8(t *testing.T) {
|
|
slice := []int8{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
|
|
size := 4
|
|
expected := [][]int8{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11}}
|
|
result := ChunkSlice(slice, size)
|
|
if !reflect.DeepEqual(result, expected) {
|
|
t.Errorf("ChunkInt8(%v, %d) = %v; expected %v", slice, size, result, expected)
|
|
}
|
|
}
|
|
|
|
func TestChunkInt32(t *testing.T) {
|
|
slice := []int32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
|
|
size := 4
|
|
expected := [][]int32{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11}}
|
|
result := ChunkSlice(slice, size)
|
|
if !reflect.DeepEqual(result, expected) {
|
|
t.Errorf("ChunkInt32(%v, %d) = %v; expected %v", slice, size, result, expected)
|
|
}
|
|
}
|
|
|
|
func TestChunkInt64(t *testing.T) {
|
|
slice := []int64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
|
|
size := 4
|
|
expected := [][]int64{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11}}
|
|
result := ChunkSlice(slice, size)
|
|
if !reflect.DeepEqual(result, expected) {
|
|
t.Errorf("ChunkInt64(%v, %d) = %v; expected %v", slice, size, result, expected)
|
|
}
|
|
}
|
|
|
|
func TestChunkUint(t *testing.T) {
|
|
slice := []uint{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
|
|
size := 4
|
|
expected := [][]uint{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11}}
|
|
result := ChunkSlice(slice, size)
|
|
if !reflect.DeepEqual(result, expected) {
|
|
t.Errorf("ChunkUint(%v, %d) = %v; expected %v", slice, size, result, expected)
|
|
}
|
|
}
|
|
|
|
func TestChunkUint8(t *testing.T) {
|
|
slice := []uint8{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
|
|
size := 4
|
|
expected := [][]uint8{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11}}
|
|
result := ChunkSlice(slice, size)
|
|
if !reflect.DeepEqual(result, expected) {
|
|
t.Errorf("ChunkUint8(%v, %d) = %v; expected %v", slice, size, result, expected)
|
|
}
|
|
}
|
|
|
|
func TestChunkUint16(t *testing.T) {
|
|
slice := []uint16{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
|
|
size := 4
|
|
expected := [][]uint16{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11}}
|
|
result := ChunkSlice(slice, size)
|
|
if !reflect.DeepEqual(result, expected) {
|
|
t.Errorf("ChunkUint16(%v, %d) = %v; expected %v", slice, size, result, expected)
|
|
}
|
|
}
|
|
|
|
func TestChunkUint32(t *testing.T) {
|
|
slice := []uint32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
|
|
size := 4
|
|
expected := [][]uint32{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11}}
|
|
result := ChunkSlice(slice, size)
|
|
if !reflect.DeepEqual(result, expected) {
|
|
t.Errorf("ChunkUint32(%v, %d) = %v; expected %v", slice, size, result, expected)
|
|
}
|
|
}
|
|
|
|
func TestChunkUint64(t *testing.T) {
|
|
slice := []uint64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
|
|
size := 4
|
|
expected := [][]uint64{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11}}
|
|
result := ChunkSlice(slice, size)
|
|
if !reflect.DeepEqual(result, expected) {
|
|
t.Errorf("ChunkUint64(%v, %d) = %v; expected %v", slice, size, result, expected)
|
|
}
|
|
}
|