Shit ton of tests
This commit is contained in:
parent
99b00887a8
commit
ccf98c2f6e
13 changed files with 1157 additions and 1 deletions
274
maputils/mapUtils_test.go
Normal file
274
maputils/mapUtils_test.go
Normal file
|
@ -0,0 +1,274 @@
|
|||
package maputils_test
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"git.mstar.dev/mstar/goutils/maputils"
|
||||
"git.mstar.dev/mstar/goutils/sliceutils"
|
||||
)
|
||||
|
||||
func TestMapSameKeys(t *testing.T) {
|
||||
type args struct {
|
||||
dic map[string]int
|
||||
apply func(string, int) int
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want map[string]int
|
||||
}{
|
||||
{
|
||||
name: "map",
|
||||
args: args{
|
||||
dic: map[string]int{
|
||||
"a": 1,
|
||||
"b": 2,
|
||||
"c": 3,
|
||||
},
|
||||
apply: func(s string, i int) int { return i + 1 },
|
||||
},
|
||||
want: map[string]int{
|
||||
"a": 2,
|
||||
"b": 3,
|
||||
"c": 4,
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := maputils.MapSameKeys(tt.args.dic, tt.args.apply); !reflect.DeepEqual(
|
||||
got,
|
||||
tt.want,
|
||||
) {
|
||||
t.Errorf("MapSameKeys() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestMapNewKeys(t *testing.T) {
|
||||
type args struct {
|
||||
in map[string]int
|
||||
apply func(string, int) (string, int)
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want map[string]int
|
||||
}{
|
||||
{
|
||||
name: "new keys",
|
||||
args: args{
|
||||
in: map[string]int{
|
||||
"a": 1,
|
||||
"b": 2,
|
||||
"c": 3,
|
||||
},
|
||||
apply: func(s string, i int) (string, int) { return s + "-", i + 1 },
|
||||
},
|
||||
want: map[string]int{
|
||||
"a-": 2,
|
||||
"b-": 3,
|
||||
"c-": 4,
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := maputils.MapNewKeys(tt.args.in, tt.args.apply); !reflect.DeepEqual(
|
||||
got,
|
||||
tt.want,
|
||||
) {
|
||||
t.Errorf("MapNewKeys() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestFilterMap(t *testing.T) {
|
||||
type args struct {
|
||||
dic map[string]int
|
||||
filter func(string, int) bool
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want map[string]int
|
||||
}{
|
||||
{
|
||||
name: "filter",
|
||||
args: args{
|
||||
dic: map[string]int{
|
||||
"a": 1,
|
||||
"b": 2,
|
||||
"c": 3,
|
||||
},
|
||||
filter: func(s string, i int) bool { return s == "a" },
|
||||
},
|
||||
want: map[string]int{"a": 1},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := maputils.FilterMap(tt.args.dic, tt.args.filter); !reflect.DeepEqual(
|
||||
got,
|
||||
tt.want,
|
||||
) {
|
||||
t.Errorf("FilterMap() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestKeysFromMap(t *testing.T) {
|
||||
type args struct {
|
||||
m map[string]int
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want []string
|
||||
}{
|
||||
{
|
||||
name: "keys",
|
||||
args: args{
|
||||
m: map[string]int{
|
||||
"a": 1,
|
||||
"b": 2,
|
||||
"c": 3,
|
||||
},
|
||||
},
|
||||
want: []string{"a", "b", "c"},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := maputils.KeysFromMap(tt.args.m); !sliceutils.CompareUnordered(got, tt.want) {
|
||||
t.Errorf("KeysFromMap() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCompareMap(t *testing.T) {
|
||||
type args struct {
|
||||
a map[string]int
|
||||
b map[string]int
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want bool
|
||||
}{
|
||||
{
|
||||
name: "equal",
|
||||
args: args{
|
||||
a: map[string]int{
|
||||
"a": 1,
|
||||
"b": 2,
|
||||
"c": 3,
|
||||
},
|
||||
b: map[string]int{
|
||||
"b": 2,
|
||||
"a": 1,
|
||||
"c": 3,
|
||||
},
|
||||
},
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
name: "not equal, same len, same keys",
|
||||
args: args{
|
||||
a: map[string]int{
|
||||
"a": 5,
|
||||
"b": 6,
|
||||
"c": 7,
|
||||
},
|
||||
b: map[string]int{
|
||||
"a": 1,
|
||||
"b": 2,
|
||||
"c": 3,
|
||||
},
|
||||
},
|
||||
want: false,
|
||||
},
|
||||
{
|
||||
name: "not equal, diff len",
|
||||
args: args{
|
||||
a: map[string]int{
|
||||
"a": 5,
|
||||
"b": 6,
|
||||
"c": 7,
|
||||
},
|
||||
b: map[string]int{
|
||||
"a": 1,
|
||||
"b": 2,
|
||||
},
|
||||
},
|
||||
want: false,
|
||||
},
|
||||
{
|
||||
name: "not equal, same len, diff keys",
|
||||
args: args{
|
||||
a: map[string]int{
|
||||
"a": 5,
|
||||
"b": 6,
|
||||
"c": 7,
|
||||
},
|
||||
b: map[string]int{
|
||||
"e": 1,
|
||||
"f": 2,
|
||||
"g": 3,
|
||||
},
|
||||
},
|
||||
want: false,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := maputils.CompareMap(tt.args.a, tt.args.b); got != tt.want {
|
||||
t.Errorf("CompareMap() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCompact(t *testing.T) {
|
||||
type args struct {
|
||||
m map[int]int
|
||||
compactor func(accK int, accV int, nextK int, nextV int) (int, int)
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want int
|
||||
want1 int
|
||||
}{
|
||||
// TODO: Add test cases.
|
||||
{
|
||||
name: "compact",
|
||||
args: args{
|
||||
m: map[int]int{
|
||||
4: 1,
|
||||
5: 2,
|
||||
6: 3,
|
||||
},
|
||||
compactor: func(accK int, accV int, nextK int, nextV int) (int, int) { return accK + nextK, accV + nextV },
|
||||
},
|
||||
want: 4 + 5 + 6,
|
||||
want1: 1 + 2 + 3,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, got1 := maputils.Compact(tt.args.m, tt.args.compactor)
|
||||
if !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("Compact() got = %v, want %v", got, tt.want)
|
||||
}
|
||||
if !reflect.DeepEqual(got1, tt.want1) {
|
||||
t.Errorf("Compact() got1 = %v, want %v", got1, tt.want1)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue