Shit ton of tests

This commit is contained in:
Melody Becker 2025-04-24 15:59:15 +02:00
parent 99b00887a8
commit ccf98c2f6e
Signed by: mstar
SSH key fingerprint: SHA256:9VAo09aaVNTWKzPW7Hq2LW+ox9OdwmTSHRoD4mlz1yI
13 changed files with 1157 additions and 1 deletions

View file

@ -0,0 +1,243 @@
package sliceutils_test
import (
"reflect"
"testing"
"git.mstar.dev/mstar/goutils/sliceutils"
)
func TestMap(t *testing.T) {
in := []int8{1, 2, 3, 4}
out := []int16{2, 4, 6, 8}
got := sliceutils.Map(in, func(t int8) int16 { return int16(t) * 2 })
if !reflect.DeepEqual(out, got) {
t.Fatalf("Map() = %v, want %v", got, out)
}
}
func TestFilter(t *testing.T) {
in := []int8{1, 2, 3, 4}
out := []int8{2, 4}
got := sliceutils.Filter(in, func(t int8) bool { return t%2 == 0 })
if !reflect.DeepEqual(out, got) {
t.Fatalf("Map() = %v, want %v", got, out)
}
}
func TestRemoveDuplicate(t *testing.T) {
in := []int8{1, 2, 2, 3, 3, 3, 4}
out := []int8{1, 2, 3, 4}
got := sliceutils.RemoveDuplicate(in)
if !reflect.DeepEqual(out, got) {
t.Fatalf("Map() = %v, want %v", got, out)
}
}
func TestReverse(t *testing.T) {
in := []int8{1, 2, 3, 4}
out := []int8{4, 3, 2, 1}
sliceutils.Reverse(in)
if !reflect.DeepEqual(out, in) {
t.Fatalf("Map() = %v, want %v", in, out)
}
}
func TestCompareOrdered(t *testing.T) {
type args struct {
a []int
b []int
}
tests := []struct {
name string
args args
want bool
}{
{
name: "equal",
args: args{
a: []int{1, 2, 3, 4},
b: []int{1, 2, 3, 4},
},
want: true,
},
{
name: "not equal, same len",
args: args{
a: []int{1, 2, 3, 4},
b: []int{0, 1, 2, 3},
},
want: false,
},
{
name: "not equal, diff len",
args: args{
a: []int{1, 2, 3, 4},
b: []int{0, 1, 2},
},
want: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := sliceutils.CompareOrdered(tt.args.a, tt.args.b); got != tt.want {
t.Errorf("CompareOrdered() = %v, want %v", got, tt.want)
}
})
}
}
func TestCompareUnordered(t *testing.T) {
type args struct {
a []int
b []int
}
tests := []struct {
name string
args args
want bool
}{
{
name: "equal ordered",
args: args{
a: []int{1, 2, 3, 4},
b: []int{1, 2, 3, 4},
},
want: true,
},
{
name: "equal unordered",
args: args{
a: []int{1, 2, 3, 4},
b: []int{2, 4, 3, 1},
},
want: true,
},
{
name: "not equal, same len",
args: args{
a: []int{1, 2, 3, 4},
b: []int{0, 2, 3, 4},
},
want: false,
},
{
name: "not equal, diff len",
args: args{
a: []int{1, 2, 3, 4},
b: []int{0, 1, 2},
},
want: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := sliceutils.CompareUnordered(tt.args.a, tt.args.b); got != tt.want {
t.Errorf("CompareUnordered() = %v, want %v", got, tt.want)
}
})
}
}
func TestContains(t *testing.T) {
type args struct {
a []int
b int
}
tests := []struct {
name string
args args
want bool
}{
{
name: "contains",
args: args{
a: []int{1, 2, 3, 4},
b: 3,
},
want: true,
},
{
name: "doesnt contain",
args: args{
a: []int{1, 2, 3, 4},
b: 0,
},
want: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := sliceutils.Contains(tt.args.a, tt.args.b); got != tt.want {
t.Errorf("Contains() = %v, want %v", got, tt.want)
}
})
}
}
func TestContainsFunc(t *testing.T) {
type args struct {
a []int
f func(t int) bool
}
tests := []struct {
name string
args args
want bool
}{
{
name: "contains",
args: args{
a: []int{1, 2, 3, 4},
f: func(t int) bool { return t == 2 },
},
want: true,
},
{
name: "doesnt contain",
args: args{
a: []int{1, 2, 3, 4},
f: func(t int) bool { return t == 9 },
},
want: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := sliceutils.ContainsFunc(tt.args.a, tt.args.f); got != tt.want {
t.Errorf("ContainsFunc() = %v, want %v", got, tt.want)
}
})
}
}
func TestCompact(t *testing.T) {
type args struct {
a []int
compactor func(acc int, next int) int
}
tests := []struct {
name string
args args
want int
}{
{
name: "sum",
args: args{
a: []int{1, 2, 3, 4},
compactor: func(acc, next int) int { return acc + next },
},
want: 1 + 2 + 3 + 4,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := sliceutils.Compact(tt.args.a, tt.args.compactor); !reflect.DeepEqual(
got,
tt.want,
) {
t.Errorf("Compact() = %v, want %v", got, tt.want)
}
})
}
}