From 47ec883bb0f839412ca7a6d6a7fddb3c80b2913b Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Thu, 3 Sep 2026 17:48:20 +0200 Subject: [PATCH] Tests: reusable NewTemplate, and bracket names rejected at load --- faketemplate_test.go | 15 +++++++++++++++ loading_test.go | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/faketemplate_test.go b/faketemplate_test.go index 4b0bb1c..c67b36e 100644 --- a/faketemplate_test.go +++ b/faketemplate_test.go @@ -97,6 +97,21 @@ func TestFakeTemplateErrors(t *testing.T) { } } +func TestNewTemplateReusable(t *testing.T) { + f := shipped(t) + tmpl, err := f.NewTemplate(`{digits(2)}`) + if err != nil { + t.Fatalf("NewTemplate: %v", err) + } + seen := map[string]bool{} + for i := 0; i < 50; i++ { + seen[tmpl.Fake()] = true + } + if len(seen) < 2 { + t.Fatalf("Template.Fake() repeated %v, want varied draws from one compile", seen) + } +} + func TestFakeTemplateRepeatBound(t *testing.T) { f := shipped(t) _, err := f.FakeTemplate(`{"format":"{x}","repeat":200,"x":{"format":"{y}","repeat":200,"y":{"format":"z","repeat":200}}}`) diff --git a/loading_test.go b/loading_test.go index be407ed..b841b07 100644 --- a/loading_test.go +++ b/loading_test.go @@ -275,6 +275,16 @@ func TestNewErrors(t *testing.T) { map[string]string{"a|b": `"1"`}, `category "a|b" contains "|"`, }, + // A bracket is not a token-grammar character, but the CLI reads an argument + // starting with [ as a JSON array, so a name carrying one would be misread. + "field name with a bracket": { + map[string]string{"a": `{"format":"{x}","x":"1","b[c":"2"}`}, + `field "b[c" contains "["`, + }, + "category name with a bracket": { + map[string]string{"[abc]": `"1"`}, + `category "[abc]" contains "["`, + }, // An empty name is not a path segment, so List never offered it — while a // bare {}, a trailing dot in Fake("a.") and a {/a.} reference all reached // it. The engine accepted spellings it would never advertise.