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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
suites:
-
name: Primitives
suites:
-
name: Numbers
resources:
-
source: |-
one = { 1 }
select = { 1 ->
*[0] Zero
[1] One
}
tests:
-
name: can be used in a placeable
asserts:
-
id: one
value: 1
-
name: can be used as a selector
asserts:
-
id: select
value: One
-
name: Simple string value
resources:
-
source: |-
foo = Foo
placeable-literal = { "Foo" } Bar
placeable-message = { foo } Bar
selector-literal = { "Foo" ->
*[Foo] Member 1
}
bar =
.attr = Bar Attribute
placeable-attr = { bar.attr }
-baz = Baz
.attr = BazAttribute
selector-attr = { -baz.attr ->
*[BazAttribute] Member 3
}
tests:
-
name: can be used as a value
asserts:
-
id: foo
value: Foo
-
name: can be used in a placeable
asserts:
-
id: placeable-literal
value: Foo Bar
-
name: can be a value of a message referenced in a placeable
asserts:
-
id: placeable-message
value: Foo Bar
-
name: can be a selector
asserts:
-
id: selector-literal
value: Member 1
-
name: can be used as an attribute value
asserts:
-
id: bar
attribute: attr
value: Bar Attribute
-
name: can be a value of an attribute used in a placeable
asserts:
-
id: placeable-attr
value: Bar Attribute
-
name: can be a value of an attribute used as a selector
asserts:
-
id: selector-attr
value: Member 3
-
name: Complex string value
resources:
-
source: |-
foo = Foo
bar = { foo }Bar
placeable-message = { bar }Baz
baz =
.attr = { bar }BazAttribute
-bazTerm = Value
.attr = { bar }BazAttribute
placeable-attr = { baz.attr }
# XXX: This is different from JS fixture which
# illegally uses message attribute as selector.
selector-attr = { -bazTerm.attr ->
[FooBarBazAttribute] FooBarBaz
*[other] Other
}
tests:
-
name: can be used as a value
asserts:
-
id: bar
value: FooBar
-
name: can be a value of a message referenced in a placeable
asserts:
-
id: placeable-message
value: FooBarBaz
-
name: can be used as an attribute value
asserts:
-
id: baz
attribute: attr
value: FooBarBazAttribute
-
name: can be a value of an attribute used in a placeable
asserts:
-
id: placeable-attr
value: FooBarBazAttribute
-
name: can be a value of an attribute used as a selector
asserts:
-
id: selector-attr
value: FooBarBaz
-
name: (Rust) Placeable
resources:
-
source: |-
foo = { { "Foo" } }
tests:
-
name: Placeable in placable work
asserts:
-
id: foo
value: Foo