OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * These are not quite unit tests, since we build on top of the analyzer and the | 6 * These are not quite unit tests, since we build on top of the analyzer and the |
7 * html5parser to build the input for each test. | 7 * html5parser to build the input for each test. |
8 */ | 8 */ |
9 library emitter_test; | 9 library emitter_test; |
10 | 10 |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 group('emit text node field', () { | 169 group('emit text node field', () { |
170 test('declaration', () { | 170 test('declaration', () { |
171 var elem = parseSubtree('<div>{{bar}}</div>'); | 171 var elem = parseSubtree('<div>{{bar}}</div>'); |
172 var emitter = new ContentFieldEmitter(analyzeElement(elem).children[0]); | 172 var emitter = new ContentFieldEmitter(analyzeElement(elem).children[0]); |
173 expect(_declarations(emitter), 'var __binding0;'); | 173 expect(_declarations(emitter), 'var __binding0;'); |
174 }); | 174 }); |
175 | 175 |
176 test('created', () { | 176 test('created', () { |
177 var elem = parseSubtree('<div>{{bar}}</div>'); | 177 var elem = parseSubtree('<div>{{bar}}</div>'); |
178 var emitter = new ContentFieldEmitter(analyzeElement(elem).children[0]); | 178 var emitter = new ContentFieldEmitter(analyzeElement(elem).children[0]); |
179 expect(_created(emitter), | 179 expect(_created(emitter), "__binding0 = new autogenerated.Text('');"); |
180 '__binding0 = autogenerated.nodeForBinding(bar);'); | |
181 }); | 180 }); |
182 | 181 |
183 test('inserted', () { | 182 test('inserted', () { |
184 var elem = parseSubtree('<div>{{bar}}</div>'); | 183 var elem = parseSubtree('<div>{{bar}}</div>'); |
185 var emitter = new ContentFieldEmitter(analyzeElement(elem).children[0]); | 184 var emitter = new ContentFieldEmitter(analyzeElement(elem).children[0]); |
186 expect(_inserted(emitter), ''); | 185 expect(_inserted(emitter), ''); |
187 }); | 186 }); |
188 | 187 |
189 test('removed', () { | 188 test('removed', () { |
190 var elem = parseSubtree('<div>{{bar}}</div>'); | 189 var elem = parseSubtree('<div>{{bar}}</div>'); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 var elem = parseSubtree('<div foo="{{bar}}"></div>'); | 252 var elem = parseSubtree('<div foo="{{bar}}"></div>'); |
254 var emitter = new AttributeEmitter(analyzeElement(elem)); | 253 var emitter = new AttributeEmitter(analyzeElement(elem)); |
255 expect(_created(emitter), equals('__stoppers1 = [];')); | 254 expect(_created(emitter), equals('__stoppers1 = [];')); |
256 }); | 255 }); |
257 | 256 |
258 test('inserted', () { | 257 test('inserted', () { |
259 var elem = parseSubtree('<div foo="{{bar}}"></div>'); | 258 var elem = parseSubtree('<div foo="{{bar}}"></div>'); |
260 var emitter = new AttributeEmitter(analyzeElement(elem)); | 259 var emitter = new AttributeEmitter(analyzeElement(elem)); |
261 expect(_inserted(emitter), equalsIgnoringWhitespace( | 260 expect(_inserted(emitter), equalsIgnoringWhitespace( |
262 '__stoppers1.add(autogenerated.watchAndInvoke(() => ' | 261 '__stoppers1.add(autogenerated.watchAndInvoke(() => ' |
263 'bar, (__e) { __e0.attributes["foo"] = __e.newValue; }));')); | 262 "bar, (__e) { __e0.attributes['foo'] = __e.newValue; }));")); |
264 }); | 263 }); |
265 | 264 |
266 test('inserted for 1-way binding with dom accessor', () { | 265 test('inserted for 1-way binding with dom accessor', () { |
267 var elem = parseSubtree('<input value="{{bar}}">'); | 266 var elem = parseSubtree('<input value="{{bar}}">'); |
268 var emitter = new AttributeEmitter(analyzeElement(elem)); | 267 var emitter = new AttributeEmitter(analyzeElement(elem)); |
269 expect(_inserted(emitter), equalsIgnoringWhitespace( | 268 expect(_inserted(emitter), equalsIgnoringWhitespace( |
270 '__stoppers1.add(autogenerated.watchAndInvoke(() => bar, (__e) { ' | 269 '__stoppers1.add(autogenerated.watchAndInvoke(() => bar, (__e) { ' |
271 '__e0.value = __e.newValue; }));')); | 270 '__e0.value = __e.newValue; }));')); |
272 }); | 271 }); |
273 | 272 |
274 test('inserted for 2-way binding with dom accessor', () { | 273 test('inserted for 2-way binding with dom accessor', () { |
275 var elem = parseSubtree('<input data-bind="value:bar">'); | 274 var elem = parseSubtree('<input data-bind="value:bar">'); |
276 var emitter = new AttributeEmitter(analyzeElement(elem)); | 275 var emitter = new AttributeEmitter(analyzeElement(elem)); |
277 expect(_inserted(emitter), equalsIgnoringWhitespace( | 276 expect(_inserted(emitter), equalsIgnoringWhitespace( |
278 '__stoppers1.add(autogenerated.watchAndInvoke(() => bar, (__e) { ' | 277 '__stoppers1.add(autogenerated.watchAndInvoke(() => bar, (__e) { ' |
279 '__e0.value = __e.newValue; }));')); | 278 '__e0.value = __e.newValue; }));')); |
280 }); | 279 }); |
281 | 280 |
282 test('inserted for data attribute', () { | 281 test('inserted for data attribute', () { |
283 var elem = parseSubtree('<div data-foo="{{bar}}"></div>'); | 282 var elem = parseSubtree('<div data-foo="{{bar}}"></div>'); |
284 var emitter = new AttributeEmitter(analyzeElement(elem)); | 283 var emitter = new AttributeEmitter(analyzeElement(elem)); |
285 expect(_inserted(emitter), equalsIgnoringWhitespace( | 284 expect(_inserted(emitter), equalsIgnoringWhitespace( |
286 '__stoppers1.add(autogenerated.watchAndInvoke(() => bar, (__e) { ' | 285 '__stoppers1.add(autogenerated.watchAndInvoke(() => bar, (__e) { ' |
287 '__e0.attributes["data-foo"] = __e.newValue; }));')); | 286 "__e0.attributes['data-foo'] = __e.newValue; }));")); |
288 }); | 287 }); |
289 | 288 |
290 test('inserted for class', () { | 289 test('inserted for class', () { |
291 var elem = parseSubtree('<div class="{{bar}} {{foo}}" />'); | 290 var elem = parseSubtree('<div class="{{bar}} {{foo}}" />'); |
292 var emitter = new AttributeEmitter(analyzeElement(elem)); | 291 var emitter = new AttributeEmitter(analyzeElement(elem)); |
293 expect(_inserted(emitter), equalsIgnoringWhitespace(''' | 292 expect(_inserted(emitter), equalsIgnoringWhitespace(''' |
294 __stoppers1.add(autogenerated.bindCssClasses(__e0, () => bar)); | 293 __stoppers1.add(autogenerated.bindCssClasses(__e0, () => bar)); |
295 __stoppers1.add(autogenerated.bindCssClasses(__e0, () => foo)); | 294 __stoppers1.add(autogenerated.bindCssClasses(__e0, () => foo)); |
296 ''')); | 295 ''')); |
297 }); | 296 }); |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
394 var context = new Context(); | 393 var context = new Context(); |
395 new RecursiveEmitter(null, context).visit(info); | 394 new RecursiveEmitter(null, context).visit(info); |
396 return context.createdMethod.toString().trim(); | 395 return context.createdMethod.toString().trim(); |
397 } | 396 } |
398 | 397 |
399 _declarationsRecursive(ElementInfo info) { | 398 _declarationsRecursive(ElementInfo info) { |
400 var context = new Context(); | 399 var context = new Context(); |
401 new RecursiveEmitter(null, context).visit(info); | 400 new RecursiveEmitter(null, context).visit(info); |
402 return context.declarations.toString().trim(); | 401 return context.declarations.toString().trim(); |
403 } | 402 } |
OLD | NEW |