internal/assert/assert.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | // Package assert provides testing helpers.
package assert
import (
"slices"
"strings"
"testing"
g "alin.ovh/gomponents"
)
// Equal checks for equality between the given expected string and the rendered Node string.
func Equal(t *testing.T, expected string, actual g.Node) {
t.Helper()
var b strings.Builder
n, err := actual.(g.NodeWriter).WriteTo(&b)
if err != nil {
t.Fatal("error rendering actual:", err)
}
if n != int64(len(expected)) {
t.Fatalf(`expected length %d but got %d`, len(expected), n)
}
if expected != b.String() {
t.Fatalf(`expected "%v" but got "%v"`, expected, b.String())
}
}
// OneOf checks if the given expected list includes the rendered Node string.
func OneOf(t *testing.T, expected []string, actual g.Node) {
t.Helper()
var b strings.Builder
err := actual.Render(&b)
if err != nil {
t.Fatal("error rendering actual:", err)
}
if slices.Contains(expected, b.String()) {
return
}
t.Fatalf(`expected one of "%v" but got "%v"`, expected, b.String())
}
// Error checks for a non-nil error.
func Error(t *testing.T, err error) {
t.Helper()
if err == nil {
t.Fatal("error is nil")
}
}
|