From 4ee0d61a6410182228090fa50fc97f836f0a0bbf Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Tue, 29 Sep 2026 14:11:19 +0200 Subject: [PATCH] Name each node switch sample by its type --- render_test.go | 55 ++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/render_test.go b/render_test.go index 6642a18..28ab84a 100644 --- a/render_test.go +++ b/render_test.go @@ -3,8 +3,8 @@ package fejkdata import ( "encoding/json" "go/ast" + "reflect" "slices" - "sort" "testing" ) @@ -62,23 +62,6 @@ type unhandledNode struct{} func (*unhandledNode) isNode() {} -// nodeSwitches are the switches node's comment lists, each over a scope holding row 0 -// of the sample table. -func nodeSwitches(tbl *table) map[string]func(node) { - return map[string]func(node){ - "columnItems": func(n node) { columnItems(n) }, - "contained": func(n node) { contained(n) }, - "paths": func(n node) { paths(n) }, - "prove": func(n node) { (&valueProof{}).prove(n) }, - "render": func(n node) { - var set holdSet - render(engine(1).rand, n, renderScope{set: &set, row: renderedRow{tbl, 0}}) - }, - "renderEdges": func(n node) { renderEdges(n) }, - "stepInto": func(n node) { _, _ = stepInto(n, "x") }, - } -} - // nodeSwitchSkips is the kinds a switch is never handed: its callers step past them first. var nodeSwitchSkips = map[string][]string{ "columnItems": {"folder", "table", "tableRow"}, @@ -93,14 +76,17 @@ func TestNodeSwitchesHandleEveryKind(t *testing.T) { "r.tsv": "code\tname\n01\t{digits(2)}\n02\tB\n", })) tbl := f.root.children["r"].(*table) - samples := map[string]node{ - "choice": compiled(t, `["a","b"]`), - "folder": &f.root, - "nullItem": &nullItem{}, - "table": tbl, - "tableColumn": tbl.formatTemplate.fields["name"], - "tableRow": tbl.rowNode, - "template": compiled(t, `{"format":"{x}","x":"1"}`), + samples := map[string]node{} + for _, n := range []node{ + compiled(t, `["a","b"]`), + compiled(t, `{"format":"{x}","x":"1"}`), + &f.root, + &nullItem{}, + tbl, + tbl.formatTemplate.fields["name"], + tbl.rowNode, + } { + samples[reflect.TypeOf(n).Elem().Name()] = n } var kinds []string _, files := sourceFiles(t) @@ -111,16 +97,27 @@ func TestNodeSwitchesHandleEveryKind(t *testing.T) { } } } - sort.Strings(kinds) + slices.Sort(kinds) sampled := make([]string, 0, len(samples)) for kind := range samples { sampled = append(sampled, kind) } - sort.Strings(sampled) + slices.Sort(sampled) if !slices.Equal(kinds, sampled) { t.Fatalf("node kinds %v, samples %v; give every kind a sample here", kinds, sampled) } - for name, call := range nodeSwitches(tbl) { + for name, call := range map[string]func(node){ + "columnItems": func(n node) { columnItems(n) }, + "contained": func(n node) { contained(n) }, + "paths": func(n node) { paths(n) }, + "prove": func(n node) { (&valueProof{}).prove(n) }, + "render": func(n node) { + var set holdSet + render(engine(1).rand, n, renderScope{set: &set, row: renderedRow{tbl, 0}}) + }, + "renderEdges": func(n node) { renderEdges(n) }, + "stepInto": func(n node) { _, _ = stepInto(n, "x") }, + } { mustPanic(t, name+" on an unhandled node", func() { call(&unhandledNode{}) }) for _, kind := range kinds { if slices.Contains(nodeSwitchSkips[name], kind) {