forked from alexkappa/mustache
-
Notifications
You must be signed in to change notification settings - Fork 0
/
parse_test.go
71 lines (68 loc) · 1.34 KB
/
parse_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// Copyright (c) 2014 Alex Kalyvitis
package mustache
import (
"reflect"
"testing"
)
func TestParser(t *testing.T) {
for _, test := range []struct {
template string
expected []node
}{
{
"{{#foo}}\n\t{{#foo}}hello nested{{/foo}}{{/foo}}",
[]node{
§ionNode{"foo", false, []node{
textNode("\n\t"),
§ionNode{"foo", false, []node{
textNode("hello nested"),
}},
}},
},
},
{
"\nfoo {{bar}} {{#alex}}\r\n\tbaz\n{{/alex}} {{!foo}}",
[]node{
textNode("\nfoo "),
&varNode{"bar", true},
textNode(" "),
§ionNode{"alex", false, []node{
textNode("\r\n\tbaz\n"),
}},
textNode(" "),
commentNode("foo"),
},
},
{
"this will{{^foo}}not{{/foo}} be rendered",
[]node{
textNode("this will"),
§ionNode{"foo", true, []node{
textNode("not"),
}},
textNode(" be rendered"),
},
},
{
"{{#list}}({{.}}){{/list}}",
[]node{
§ionNode{"list", false, []node{
textNode("("),
&varNode{".", true},
textNode(")"),
}},
},
},
} {
parser := newParser(newLexer(test.template, "{{", "}}"))
elems, err := parser.parse()
if err != nil {
t.Fatal(err)
}
for i, elem := range elems {
if !reflect.DeepEqual(elem, test.expected[i]) {
t.Errorf("elements are not equal %v != %v", elem, test.expected[i])
}
}
}
}