aboutsummaryrefslogtreecommitdiff
path: root/pkg/u/list_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/u/list_test.go')
-rw-r--r--pkg/u/list_test.go96
1 files changed, 96 insertions, 0 deletions
diff --git a/pkg/u/list_test.go b/pkg/u/list_test.go
new file mode 100644
index 0000000..a6d84c7
--- /dev/null
+++ b/pkg/u/list_test.go
@@ -0,0 +1,96 @@
+// go:build unit
+
+package u
+
+import (
+ "testing"
+
+ "github.com/google/go-cmp/cmp"
+)
+
+func TestFirst(t *testing.T) {
+ testCases := []struct {
+ name string
+ slice []int
+ first int
+ exist bool
+ }{
+ {
+ name: "multiple items slice",
+ slice: []int{1, 2, 3},
+ first: 1,
+ exist: true,
+ },
+ {
+ name: "single item slice",
+ slice: []int{1},
+ first: 1,
+ exist: true,
+ },
+ {
+ name: "empty slice",
+ slice: []int{},
+ first: 0,
+ exist: false,
+ },
+ }
+ for _, tc := range testCases {
+ t.Run(tc.name, func(t *testing.T) {
+
+ first, empty := First(tc.slice)
+
+ if first != tc.first {
+ t.Errorf("Error first, want %d got %d", tc.first, first)
+ }
+
+ if empty != tc.exist {
+ t.Errorf("Error empty, want %t got %t", tc.exist, empty)
+ }
+
+ })
+ }
+}
+
+func TestSubList(t *testing.T) {
+ testCases := []struct {
+ name string
+ slice []int
+ size int
+ want [][]int
+ }{
+ {
+ name: "sigle size sub list",
+ slice: []int{1, 2, 3},
+ size: 1,
+ want: [][]int{{1}, {2}, {3}},
+ },
+ {
+ name: "multiple size sub list",
+ slice: []int{1, 2, 3, 4},
+ size: 2,
+ want: [][]int{{1, 2}, {3, 4}},
+ },
+ {
+ name: "uneven multiple size sub list",
+ slice: []int{1, 2, 3, 4, 5},
+ size: 2,
+ want: [][]int{{1, 2}, {3, 4}, {5}},
+ },
+ {
+ name: "empty sub list",
+ slice: []int{},
+ size: 2,
+ want: [][]int{{}},
+ },
+ }
+ for _, tc := range testCases {
+ t.Run(tc.name, func(t *testing.T) {
+
+ subList := ChunkBy(tc.slice, tc.size)
+
+ if diff := cmp.Diff(tc.want, subList); diff != "" {
+ t.Errorf("Wrong result given - wanted + got\n %s", diff)
+ }
+ })
+ }
+}