Test Noun on a datatype no data writes, and check panics against invariant.Broken's phrase
This commit is contained in:
+4
-2
@@ -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)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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])
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user