From 1c08e6b3ee83182582f9dc959bfde3fff1840ab9 Mon Sep 17 00:00:00 2001 From: Inhere Date: Sun, 24 Mar 2024 14:28:52 +0800 Subject: [PATCH] :necktie: up: assert - add new helper func: ContainsElems - fix maputil test error --- maputil/get_test.go | 8 ++++---- testutil/assert/asserts.go | 13 +++++++++++++ testutil/assert/asserts_test.go | 3 +++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/maputil/get_test.go b/maputil/get_test.go index b2d1c8330..30b024914 100644 --- a/maputil/get_test.go +++ b/maputil/get_test.go @@ -368,8 +368,8 @@ func TestEachTypedMap_HappyPath(t *testing.T) { values = append(values, val) }) - assert.Eq(t, []string{"key1", "key2", "key3"}, keys) - assert.Eq(t, []int{1, 2, 3}, values) + assert.ContainsElems(t, keys, []string{"key1", "key2", "key3"}) + assert.ContainsElems(t, values, []int{1, 2, 3}) } func TestEachTypedMap_NonStringKeys(t *testing.T) { @@ -387,6 +387,6 @@ func TestEachTypedMap_NonStringKeys(t *testing.T) { values = append(values, val) }) - assert.Eq(t, []int{1, 2, 3}, keys) - assert.Eq(t, []int{1, 2, 3}, values) + assert.ContainsElems(t, keys, []int{1, 2, 3}) + assert.ContainsElems(t, values, []int{1, 2, 3}) } diff --git a/testutil/assert/asserts.go b/testutil/assert/asserts.go index 69f248df4..68d3f8c2d 100644 --- a/testutil/assert/asserts.go +++ b/testutil/assert/asserts.go @@ -8,6 +8,7 @@ import ( "strings" "github.com/gookit/goutil/arrutil" + "github.com/gookit/goutil/comdef" "github.com/gookit/goutil/internal/checkfn" "github.com/gookit/goutil/maputil" "github.com/gookit/goutil/mathutil" @@ -287,6 +288,18 @@ func NotContainsKeys(t TestingT, mp any, keys any, fmtAndArgs ...any) bool { return true } +// ContainsElems asserts that the given list should contains sub elements. +func ContainsElems[T comdef.ScalarType](t TestingT, list, sub []T, fmtAndArgs ...any) bool { + if arrutil.ContainsAll(list, sub) { + return true + } + + t.Helper() + + // not contains all + return fail(t, fmt.Sprintf("%#v\nShould contain: %#v", list, sub), fmtAndArgs) +} + // StrContains asserts that the given strings is contains sub-string func StrContains(t TestingT, s, sub string, fmtAndArgs ...any) bool { if strings.Contains(s, sub) { diff --git a/testutil/assert/asserts_test.go b/testutil/assert/asserts_test.go index 9e655093e..79fa94883 100644 --- a/testutil/assert/asserts_test.go +++ b/testutil/assert/asserts_test.go @@ -315,4 +315,7 @@ func TestContains(t *testing.T) { assert.ContainsKeys(t, mp, []string{"name", "age"}) assert.NotContainsKey(t, mp, "addr") assert.NotContainsKeys(t, mp, []string{"addr"}) + + assert.ContainsElems(t, []string{"def"}, []string{"def"}) + assert.ContainsElems(t, []string{"def", "abc"}, []string{"def"}) }