From e45a8be0dcfc375963a061d83e04429995053da1 Mon Sep 17 00:00:00 2001 From: Stefan Majewsky Date: Fri, 24 Apr 2026 15:46:24 +0200 Subject: exclude testhelpers from coverage testing --- internal/testhelpers/assert/assert.go | 63 +++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 internal/testhelpers/assert/assert.go (limited to 'internal/testhelpers/assert/assert.go') 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 +// 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("")).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]) + } + } +} -- cgit v1.2.3