@@ -25,20 +25,32 @@ suite('Built-in functions', function() {
25
25
test ( 'missing argument' , function ( ) {
26
26
let msg ;
27
27
28
+ errors = [ ] ;
28
29
msg = bundle . getMessage ( 'num-decimal' ) ;
29
- assert . strictEqual ( bundle . formatPattern ( msg . value , { } , errors ) , '{$arg}' ) ;
30
- assert . strictEqual ( errors . length , 1 ) ;
31
- assert . ok ( errors . pop ( ) instanceof ReferenceError ) ;
32
-
30
+ assert . strictEqual ( bundle . formatPattern ( msg . value , { } , errors ) , '{NUMBER()}' ) ;
31
+ assert . strictEqual ( errors . length , 2 ) ;
32
+ assert . ok ( errors [ 0 ] instanceof ReferenceError ) ;
33
+ assert . strictEqual ( errors [ 0 ] . message , "Unknown variable: $arg" ) ;
34
+ assert . ok ( errors [ 1 ] instanceof TypeError ) ;
35
+ assert . strictEqual ( errors [ 1 ] . message , "Invalid argument type to NUMBER" ) ;
36
+
37
+ errors = [ ] ;
33
38
msg = bundle . getMessage ( 'num-percent' ) ;
34
- assert . strictEqual ( bundle . formatPattern ( msg . value , { } , errors ) , '{$arg}' ) ;
35
- assert . strictEqual ( errors . length , 1 ) ;
36
- assert . ok ( errors . pop ( ) instanceof ReferenceError ) ;
37
-
39
+ assert . strictEqual ( bundle . formatPattern ( msg . value , { } , errors ) , '{NUMBER()}' ) ;
40
+ assert . strictEqual ( errors . length , 2 ) ;
41
+ assert . ok ( errors [ 0 ] instanceof ReferenceError ) ;
42
+ assert . strictEqual ( errors [ 0 ] . message , "Unknown variable: $arg" ) ;
43
+ assert . ok ( errors [ 1 ] instanceof TypeError ) ;
44
+ assert . strictEqual ( errors [ 1 ] . message , "Invalid argument type to NUMBER" ) ;
45
+
46
+ errors = [ ] ;
38
47
msg = bundle . getMessage ( 'num-bad-opt' ) ;
39
- assert . strictEqual ( bundle . formatPattern ( msg . value , { } , errors ) , '{$arg}' ) ;
40
- assert . strictEqual ( errors . length , 1 ) ;
41
- assert . ok ( errors . pop ( ) instanceof ReferenceError ) ;
48
+ assert . strictEqual ( bundle . formatPattern ( msg . value , { } , errors ) , '{NUMBER()}' ) ;
49
+ assert . strictEqual ( errors . length , 2 ) ;
50
+ assert . ok ( errors [ 0 ] instanceof ReferenceError ) ;
51
+ assert . strictEqual ( errors [ 0 ] . message , "Unknown variable: $arg" ) ;
52
+ assert . ok ( errors [ 1 ] instanceof TypeError ) ;
53
+ assert . strictEqual ( errors [ 1 ] . message , "Invalid argument type to NUMBER" ) ;
42
54
} ) ;
43
55
44
56
test ( 'number argument' , function ( ) {
@@ -58,63 +70,89 @@ suite('Built-in functions', function() {
58
70
assert . strictEqual ( errors . length , 0 ) ;
59
71
} ) ;
60
72
61
- // XXX Functions should report errors.
62
- // https://github.com/projectfluent/fluent.js/issues/106
63
73
test ( 'string argument' , function ( ) {
64
74
const args = { arg : "Foo" } ;
65
75
let msg ;
66
76
77
+ errors = [ ] ;
67
78
msg = bundle . getMessage ( 'num-decimal' ) ;
68
79
assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{NUMBER()}' ) ;
69
- assert . strictEqual ( errors . length , 0 ) ;
80
+ assert . strictEqual ( errors . length , 1 ) ;
81
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
82
+ assert . strictEqual ( errors [ 0 ] . message , "Invalid argument type to NUMBER" ) ;
70
83
84
+ errors = [ ] ;
71
85
msg = bundle . getMessage ( 'num-percent' ) ;
72
86
assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{NUMBER()}' ) ;
73
- assert . strictEqual ( errors . length , 0 ) ;
87
+ assert . strictEqual ( errors . length , 1 ) ;
88
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
89
+ assert . strictEqual ( errors [ 0 ] . message , "Invalid argument type to NUMBER" ) ;
74
90
91
+ errors = [ ] ;
75
92
msg = bundle . getMessage ( 'num-bad-opt' ) ;
76
93
assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{NUMBER()}' ) ;
77
- assert . strictEqual ( errors . length , 0 ) ;
94
+ assert . strictEqual ( errors . length , 1 ) ;
95
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
96
+ assert . strictEqual ( errors [ 0 ] . message , "Invalid argument type to NUMBER" ) ;
78
97
} ) ;
79
98
80
- // XXX Functions should report errors.
81
- // https://github.com/projectfluent/fluent.js/issues/106
82
99
test ( 'date argument' , function ( ) {
83
100
const date = new Date ( '2016-09-29' ) ;
84
101
const args = { arg : date } ;
85
102
let msg ;
86
103
104
+ errors = [ ] ;
87
105
msg = bundle . getMessage ( 'num-decimal' ) ;
88
106
assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{NUMBER()}' ) ;
89
- assert . strictEqual ( errors . length , 0 ) ;
107
+ assert . strictEqual ( errors . length , 1 ) ;
108
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
109
+ assert . strictEqual ( errors [ 0 ] . message , "Invalid argument type to NUMBER" ) ;
90
110
111
+ errors = [ ] ;
91
112
msg = bundle . getMessage ( 'num-percent' ) ;
92
113
assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{NUMBER()}' ) ;
93
- assert . strictEqual ( errors . length , 0 ) ;
114
+ assert . strictEqual ( errors . length , 1 ) ;
115
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
116
+ assert . strictEqual ( errors [ 0 ] . message , "Invalid argument type to NUMBER" ) ;
94
117
118
+ errors = [ ] ;
95
119
msg = bundle . getMessage ( 'num-bad-opt' ) ;
96
120
assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{NUMBER()}' ) ;
97
- assert . strictEqual ( errors . length , 0 ) ;
121
+ assert . strictEqual ( errors . length , 1 ) ;
122
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
123
+ assert . strictEqual ( errors [ 0 ] . message , "Invalid argument type to NUMBER" ) ;
98
124
} ) ;
99
125
100
126
test ( 'invalid argument' , function ( ) {
101
127
const args = { arg : [ ] } ;
102
128
let msg ;
103
129
130
+ errors = [ ] ;
104
131
msg = bundle . getMessage ( 'num-decimal' ) ;
105
- assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{$arg}' ) ;
106
- assert . strictEqual ( errors . length , 1 ) ;
107
- assert . ok ( errors . pop ( ) instanceof TypeError ) ;
132
+ assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{NUMBER()}' ) ;
133
+ assert . strictEqual ( errors . length , 2 ) ;
134
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
135
+ assert . strictEqual ( errors [ 0 ] . message , "Variable type not supported: $arg, object" ) ;
136
+ assert . ok ( errors [ 1 ] instanceof TypeError ) ;
137
+ assert . strictEqual ( errors [ 1 ] . message , "Invalid argument type to NUMBER" ) ;
108
138
139
+ errors = [ ] ;
109
140
msg = bundle . getMessage ( 'num-percent' ) ;
110
- assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{$arg}' ) ;
111
- assert . strictEqual ( errors . length , 1 ) ;
112
- assert . ok ( errors . pop ( ) instanceof TypeError ) ;
141
+ assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{NUMBER()}' ) ;
142
+ assert . strictEqual ( errors . length , 2 ) ;
143
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
144
+ assert . strictEqual ( errors [ 0 ] . message , "Variable type not supported: $arg, object" ) ;
145
+ assert . ok ( errors [ 1 ] instanceof TypeError ) ;
146
+ assert . strictEqual ( errors [ 1 ] . message , "Invalid argument type to NUMBER" ) ;
113
147
148
+ errors = [ ] ;
114
149
msg = bundle . getMessage ( 'num-bad-opt' ) ;
115
- assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{$arg}' ) ;
116
- assert . strictEqual ( errors . length , 1 ) ;
117
- assert . ok ( errors . pop ( ) instanceof TypeError ) ;
150
+ assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{NUMBER()}' ) ;
151
+ assert . strictEqual ( errors . length , 2 ) ;
152
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
153
+ assert . strictEqual ( errors [ 0 ] . message , "Variable type not supported: $arg, object" ) ;
154
+ assert . ok ( errors [ 1 ] instanceof TypeError ) ;
155
+ assert . strictEqual ( errors [ 1 ] . message , "Invalid argument type to NUMBER" ) ;
118
156
} ) ;
119
157
} ) ;
120
158
@@ -131,20 +169,32 @@ suite('Built-in functions', function() {
131
169
test ( 'missing argument' , function ( ) {
132
170
let msg ;
133
171
172
+ errors = [ ] ;
134
173
msg = bundle . getMessage ( 'dt-default' ) ;
135
- assert . strictEqual ( bundle . formatPattern ( msg . value , { } , errors ) , '{$arg}' ) ;
136
- assert . strictEqual ( errors . length , 1 ) ;
137
- assert . ok ( errors . pop ( ) instanceof ReferenceError ) ;
138
-
174
+ assert . strictEqual ( bundle . formatPattern ( msg . value , { } , errors ) , '{DATETIME()}' ) ;
175
+ assert . strictEqual ( errors . length , 2 ) ;
176
+ assert . ok ( errors [ 0 ] instanceof ReferenceError ) ;
177
+ assert . strictEqual ( errors [ 0 ] . message , "Unknown variable: $arg" ) ;
178
+ assert . ok ( errors [ 1 ] instanceof TypeError ) ;
179
+ assert . strictEqual ( errors [ 1 ] . message , "Invalid argument type to DATETIME" ) ;
180
+
181
+ errors = [ ] ;
139
182
msg = bundle . getMessage ( 'dt-month' ) ;
140
- assert . strictEqual ( bundle . formatPattern ( msg . value , { } , errors ) , '{$arg}' ) ;
141
- assert . strictEqual ( errors . length , 1 ) ;
142
- assert . ok ( errors . pop ( ) instanceof ReferenceError ) ;
143
-
183
+ assert . strictEqual ( bundle . formatPattern ( msg . value , { } , errors ) , '{DATETIME()}' ) ;
184
+ assert . strictEqual ( errors . length , 2 ) ;
185
+ assert . ok ( errors [ 0 ] instanceof ReferenceError ) ;
186
+ assert . strictEqual ( errors [ 0 ] . message , "Unknown variable: $arg" ) ;
187
+ assert . ok ( errors [ 1 ] instanceof TypeError ) ;
188
+ assert . strictEqual ( errors [ 1 ] . message , "Invalid argument type to DATETIME" ) ;
189
+
190
+ errors = [ ] ;
144
191
msg = bundle . getMessage ( 'dt-bad-opt' ) ;
145
- assert . strictEqual ( bundle . formatPattern ( msg . value , { } , errors ) , '{$arg}' ) ;
146
- assert . strictEqual ( errors . length , 1 ) ;
147
- assert . ok ( errors . pop ( ) instanceof ReferenceError ) ;
192
+ assert . strictEqual ( bundle . formatPattern ( msg . value , { } , errors ) , '{DATETIME()}' ) ;
193
+ assert . strictEqual ( errors . length , 2 ) ;
194
+ assert . ok ( errors [ 0 ] instanceof ReferenceError ) ;
195
+ assert . strictEqual ( errors [ 0 ] . message , "Unknown variable: $arg" ) ;
196
+ assert . ok ( errors [ 1 ] instanceof TypeError ) ;
197
+ assert . strictEqual ( errors [ 1 ] . message , "Invalid argument type to DATETIME" ) ;
148
198
} ) ;
149
199
150
200
test ( 'Date argument' , function ( ) {
@@ -175,62 +225,88 @@ suite('Built-in functions', function() {
175
225
assert . strictEqual ( errors . length , 0 ) ;
176
226
} ) ;
177
227
178
- // XXX Functions should report errors.
179
- // https://github.com/projectfluent/fluent.js/issues/106
180
228
test ( 'number argument' , function ( ) {
181
229
let args = { arg : 1 } ;
182
230
let msg ;
183
231
232
+ errors = [ ] ;
184
233
msg = bundle . getMessage ( 'dt-default' ) ;
185
234
assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{DATETIME()}' ) ;
186
- assert . strictEqual ( errors . length , 0 ) ;
235
+ assert . strictEqual ( errors . length , 1 ) ;
236
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
237
+ assert . strictEqual ( errors [ 0 ] . message , "Invalid argument type to DATETIME" ) ;
187
238
239
+ errors = [ ] ;
188
240
msg = bundle . getMessage ( 'dt-month' ) ;
189
241
assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{DATETIME()}' ) ;
190
- assert . strictEqual ( errors . length , 0 ) ;
242
+ assert . strictEqual ( errors . length , 1 ) ;
243
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
244
+ assert . strictEqual ( errors [ 0 ] . message , "Invalid argument type to DATETIME" ) ;
191
245
246
+ errors = [ ] ;
192
247
msg = bundle . getMessage ( 'dt-bad-opt' ) ;
193
248
assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{DATETIME()}' ) ;
194
- assert . strictEqual ( errors . length , 0 ) ;
249
+ assert . strictEqual ( errors . length , 1 ) ;
250
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
251
+ assert . strictEqual ( errors [ 0 ] . message , "Invalid argument type to DATETIME" ) ;
195
252
} ) ;
196
253
197
- // XXX Functions should report errors.
198
- // https://github.com/projectfluent/fluent.js/issues/106
199
254
test ( 'string argument' , function ( ) {
200
255
let args = { arg : 'Foo' } ;
201
256
let msg ;
202
257
258
+ errors = [ ] ;
203
259
msg = bundle . getMessage ( 'dt-default' ) ;
204
260
assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{DATETIME()}' ) ;
205
- assert . strictEqual ( errors . length , 0 ) ;
261
+ assert . strictEqual ( errors . length , 1 ) ;
262
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
263
+ assert . strictEqual ( errors [ 0 ] . message , "Invalid argument type to DATETIME" ) ;
206
264
265
+ errors = [ ] ;
207
266
msg = bundle . getMessage ( 'dt-month' ) ;
208
267
assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{DATETIME()}' ) ;
209
- assert . strictEqual ( errors . length , 0 ) ;
268
+ assert . strictEqual ( errors . length , 1 ) ;
269
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
270
+ assert . strictEqual ( errors [ 0 ] . message , "Invalid argument type to DATETIME" ) ;
210
271
272
+ errors = [ ] ;
211
273
msg = bundle . getMessage ( 'dt-bad-opt' ) ;
212
274
assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{DATETIME()}' ) ;
213
- assert . strictEqual ( errors . length , 0 ) ;
275
+ assert . strictEqual ( errors . length , 1 ) ;
276
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
277
+ assert . strictEqual ( errors [ 0 ] . message , "Invalid argument type to DATETIME" ) ;
214
278
} ) ;
215
279
216
280
test ( 'invalid argument' , function ( ) {
217
281
let args = { arg : [ ] } ;
218
282
let msg ;
219
283
284
+ errors = [ ] ;
220
285
msg = bundle . getMessage ( 'dt-default' ) ;
221
- assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{$arg}' ) ;
222
- assert . strictEqual ( errors . length , 1 ) ;
223
- assert . ok ( errors . pop ( ) instanceof TypeError ) ;
286
+ assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{DATETIME()}' ) ;
287
+ assert . strictEqual ( errors . length , 2 ) ;
288
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
289
+ assert . strictEqual ( errors [ 0 ] . message , "Variable type not supported: $arg, object" ) ;
290
+ assert . ok ( errors [ 1 ] instanceof TypeError ) ;
291
+ assert . strictEqual ( errors [ 1 ] . message , "Invalid argument type to DATETIME" ) ;
224
292
293
+ errors = [ ] ;
225
294
msg = bundle . getMessage ( 'dt-month' ) ;
226
- assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{$arg}' ) ;
227
- assert . strictEqual ( errors . length , 1 ) ;
228
- assert . ok ( errors . pop ( ) instanceof TypeError ) ;
295
+ assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{DATETIME()}' ) ;
296
+ assert . strictEqual ( errors . length , 2 ) ;
297
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
298
+ assert . strictEqual ( errors [ 0 ] . message , "Variable type not supported: $arg, object" ) ;
299
+ assert . ok ( errors [ 1 ] instanceof TypeError ) ;
300
+ assert . strictEqual ( errors [ 1 ] . message , "Invalid argument type to DATETIME" ) ;
229
301
302
+ errors = [ ] ;
230
303
msg = bundle . getMessage ( 'dt-bad-opt' ) ;
231
- assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{$arg}' ) ;
232
- assert . strictEqual ( errors . length , 1 ) ;
233
- assert . ok ( errors . pop ( ) instanceof TypeError ) ;
304
+ assert . strictEqual ( bundle . formatPattern ( msg . value , args , errors ) , '{DATETIME()}' ) ;
305
+ assert . strictEqual ( errors . length , 2 ) ;
306
+ assert . ok ( errors [ 0 ] instanceof TypeError ) ;
307
+ assert . strictEqual ( errors [ 0 ] . message , "Variable type not supported: $arg, object" ) ;
308
+ assert . ok ( errors [ 1 ] instanceof TypeError ) ;
309
+ assert . strictEqual ( errors [ 1 ] . message , "Invalid argument type to DATETIME" ) ;
234
310
} ) ;
235
311
} ) ;
236
312
} ) ;
0 commit comments