diff options
| author | Stefan Majewsky <majewsky@gmx.net> | 2026-04-24 15:46:24 +0200 |
|---|---|---|
| committer | Stefan Majewsky <majewsky@gmx.net> | 2026-04-24 16:10:09 +0200 |
| commit | e45a8be0dcfc375963a061d83e04429995053da1 (patch) | |
| tree | 55a5f39180be3d289ccbd1f406022d3a72c13034 /internal/testhelpers/assert/assert.go | |
| parent | 027641ef9efec9ed5dfc463d9c2f38c32716d9b5 (diff) | |
| download | go-oblast-e45a8be0dcfc375963a061d83e04429995053da1.tar.gz | |
exclude testhelpers from coverage testing
Diffstat (limited to 'internal/testhelpers/assert/assert.go')
| -rw-r--r-- | internal/testhelpers/assert/assert.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/internal/testhelpers/assert/assert.go b/internal/testhelpers/assert/assert.go new file mode 100644 index 0000000..6e641ca --- /dev/null +++ b/internal/testhelpers/assert/assert.go @@ -0,0 +1,63 @@ +// SPDX-FileCopyrightText: 2026 Stefan Majewsky <majewsky@gmx.net> +// SPDX-License-Identifier: Apache-2.0 + +package assert + +import ( + "cmp" + "errors" + "reflect" + "testing" +) + +// Equal is a test assertion. +func Equal[V comparable](t testing.TB, actual, expected V) { + t.Helper() + if actual != expected { + t.Errorf("expected %#v", expected) + t.Errorf(" but got %#v", actual) + } +} + +// DeepEqual is a test assertion. +func DeepEqual[V any](t testing.TB, actual, expected V) { + t.Helper() + if !reflect.DeepEqual(actual, expected) { + t.Errorf("expected %#v", expected) + t.Errorf(" but got %#v", actual) + } +} + +// ErrEqual is a test assertion. +func ErrEqual(t testing.TB, actual error, expected string) { + t.Helper() + Equal(t, cmp.Or(actual, errors.New("<success>")).Error(), expected) +} + +// SliceEqual is a test assertion. +func SliceEqual[V comparable](t testing.TB, actual []V, expected ...V) { + t.Helper() + if len(actual) != len(expected) { + t.Errorf("length mismatch: expected %#v, but got %#v", expected, actual) + } + for idx := range actual { + if actual[idx] != expected[idx] { + t.Errorf("element %d: expected %#v", idx, expected[idx]) + t.Errorf("element %d: but got %#v", idx, actual[idx]) + } + } +} + +// SliceDeepEqual is a test assertion. +func SliceDeepEqual[V any](t testing.TB, actual []V, expected ...V) { + t.Helper() + if len(actual) != len(expected) { + t.Errorf("length mismatch: expected %#v, but got %#v", expected, actual) + } + for idx := range actual { + if !reflect.DeepEqual(actual[idx], expected[idx]) { + t.Errorf("element %d: expected %#v", idx, expected[idx]) + t.Errorf("element %d: but got %#v", idx, actual[idx]) + } + } +} |
