Test Noun on a datatype no data writes, and check panics against invariant.Broken's phrase

This commit is contained in:
2026-10-05 15:48:34 +02:00
committed by Lillem4n
parent dd2fe61b13
commit a229ae90a2
4 changed files with 14 additions and 5 deletions
+4 -2
View File
@@ -8,6 +8,8 @@ import (
"strings" "strings"
"testing" "testing"
"time" "time"
"github.com/larvit/fejkdata/internal/invariant"
) )
func TestBuiltinIDGenerators(t *testing.T) { func TestBuiltinIDGenerators(t *testing.T) {
@@ -188,12 +190,12 @@ func ibanValid(s string) bool {
return rem == 1 return rem == 1
} }
// mustPanic fails unless call panics with internalError's phrase, which is what // mustPanic fails unless call panics with invariant.Broken's phrase, which is what
// separates a reported invariant break from a silently wrong value. // separates a reported invariant break from a silently wrong value.
func mustPanic(t *testing.T, name string, call func()) { func mustPanic(t *testing.T, name string, call func()) {
t.Helper() t.Helper()
defer func() { defer func() {
if r := recover(); r == nil || !strings.HasPrefix(fmt.Sprint(r), "fejkdata: internal error: ") { if r := recover(); r == nil || !strings.HasPrefix(fmt.Sprint(r), invariant.Broken("")) {
t.Errorf("%s: recovered %v, want the invariant reported as an internal error", name, r) t.Errorf("%s: recovered %v, want the invariant reported as an internal error", name, r)
} }
}() }()
+3 -2
View File
@@ -7,6 +7,7 @@ import (
"testing" "testing"
"github.com/larvit/fejkdata/internal/grammar" "github.com/larvit/fejkdata/internal/grammar"
"github.com/larvit/fejkdata/internal/invariant"
) )
// TestRegistryShapes pins the builtin contract Prep relies on: every entry supplies prep, // TestRegistryShapes pins the builtin contract Prep relies on: every entry supplies prep,
@@ -67,12 +68,12 @@ func TestArgGuardsPanic(t *testing.T) {
} }
} }
// mustPanic fails unless call panics with internalError's phrase, which is what // mustPanic fails unless call panics with invariant.Broken's phrase, which is what
// separates a reported invariant break from a silently wrong value. // separates a reported invariant break from a silently wrong value.
func mustPanic(t *testing.T, name string, call func()) { func mustPanic(t *testing.T, name string, call func()) {
t.Helper() t.Helper()
defer func() { defer func() {
if r := recover(); r == nil || !strings.HasPrefix(fmt.Sprint(r), "fejkdata: internal error: ") { if r := recover(); r == nil || !strings.HasPrefix(fmt.Sprint(r), invariant.Broken("")) {
t.Errorf("%s: recovered %v, want the invariant reported as an internal error", name, r) t.Errorf("%s: recovered %v, want the invariant reported as an internal error", name, r)
} }
}() }()
+6
View File
@@ -23,3 +23,9 @@ func TestStringNamesADatatypeNoDataWrites(t *testing.T) {
t.Errorf("String = %q, want DataType(9)", got) t.Errorf("String = %q, want DataType(9)", got)
} }
} }
func TestNounNamesADatatypeNoDataWrites(t *testing.T) {
if got := Noun(DataType(9)); got != "DataType(9)" {
t.Errorf("Noun = %q, want DataType(9)", got)
}
}
+1 -1
View File
@@ -20,7 +20,7 @@ func TestLiteralSaysWhichDatatypesItsTextIs(t *testing.T) {
{"-0", [datatype.Count]bool{datatype.Integer: true, datatype.Number: true, datatype.Boolean: true}}, {"-0", [datatype.Count]bool{datatype.Integer: true, datatype.Number: true, datatype.Boolean: true}},
} { } {
v := Literal(c.text) v := Literal(c.text)
for d := datatype.Integer; d <= datatype.Boolean; d++ { for d := datatype.Integer; d < datatype.Count; d++ {
if (v.Not[d] != "") != c.not[d] { if (v.Not[d] != "") != c.not[d] {
t.Errorf("Literal(%q).Not[%s] = %q", c.text, d, v.Not[d]) t.Errorf("Literal(%q).Not[%s] = %q", c.text, d, v.Not[d])
} }