Make great documentation goal 1.2, and plan the README's reorganisation and the nested-template gaps #33
@@ -80,3 +80,37 @@ func TestNodeCompileErrors(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestEveryFormatCompilesAtLink(t *testing.T) {
|
||||
n, err := compile(parse(t, `{"format":"{a} {b}","a":{"format":"x{c}","c":["1","2"]},"b":"{/w}"}`))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
w, err := compile(parse(t, `["p","q"]`))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
opsBy := func() map[string]bool {
|
||||
compiled := map[string]bool{}
|
||||
_ = eachNode(n, "t", func(path string, m node) error {
|
||||
if tm, ok := m.(*template); ok {
|
||||
compiled[path+" "+tm.format] = tm.ops != nil
|
||||
}
|
||||
return nil
|
||||
})
|
||||
return compiled
|
||||
}
|
||||
for format, has := range opsBy() {
|
||||
if has {
|
||||
t.Errorf("%s compiled before link", format)
|
||||
}
|
||||
}
|
||||
if err := bindInline(n, "t", map[string]node{"w": w}, func(nodeScope) error { return nil }); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
for format, has := range opsBy() {
|
||||
if !has {
|
||||
t.Errorf("%s not compiled at link", format)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user