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 library analyzer_test; | 5 library analyzer_test; |
6 | 6 |
7 import 'package:html5lib/dom.dart'; | 7 import 'package:html5lib/dom.dart'; |
8 import 'package:html5lib/parser.dart'; | 8 import 'package:html5lib/parser.dart'; |
9 import 'package:unittest/compact_vm_config.dart'; | 9 import 'package:unittest/compact_vm_config.dart'; |
10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
11 import 'package:web_ui/src/analyzer.dart'; | 11 import 'package:web_ui/src/analyzer.dart'; |
12 import 'package:web_ui/src/info.dart'; | 12 import 'package:web_ui/src/info.dart'; |
13 import 'package:web_ui/src/files.dart'; | 13 import 'package:web_ui/src/files.dart'; |
14 import 'package:web_ui/src/file_system/path.dart'; | 14 import 'package:web_ui/src/file_system/path.dart'; |
15 import 'package:web_ui/src/messages.dart'; | 15 import 'package:web_ui/src/messages.dart'; |
16 import 'package:web_ui/src/utils.dart'; | 16 import 'package:web_ui/src/utils.dart'; |
17 import 'package:logging/logging.dart'; | 17 import 'package:logging/logging.dart'; |
18 import 'testing.dart'; | 18 import 'testing.dart'; |
19 import 'testing.dart' as testing show analyzeElement, analyzeDefinitionsInTree; | 19 import 'testing.dart' as testing; |
Siggi Cherem (dart-lang)
2013/01/18 02:56:56
do we need two imports to the same file?
Jennifer Messerly
2013/01/18 02:59:31
Not sure what the original intent was?
I guess we
| |
20 | 20 |
21 main() { | 21 main() { |
22 useCompactVMConfiguration(); | 22 useCompactVMConfiguration(); |
23 | 23 |
24 // the mock messages | 24 // the mock messages |
25 var messages; | 25 var messages; |
26 | 26 |
27 analyzeElement(elem) => testing.analyzeElement(elem, messages: messages); | 27 analyzeElement(elem) => testing.analyzeElement(elem, messages: messages); |
28 | 28 |
29 analyzeDefinitionsInTree(doc) => testing.analyzeDefinitionsInTree( | 29 analyzeDefinitionsInTree(doc) => testing.analyzeDefinitionsInTree( |
30 doc, messages: messages); | 30 doc, messages: messages); |
31 | 31 |
32 analyzeFiles(files) => testing.analyzeFiles(files, messages: messages); | |
33 | |
32 group("", () { | 34 group("", () { |
33 setUp(() { | 35 setUp(() { |
34 messages = new Messages.silent(); | 36 messages = new Messages.silent(); |
35 }); | 37 }); |
36 | 38 |
37 test('parse single element', () { | 39 test('parse single element', () { |
38 var input = '<div></div>'; | 40 var input = '<div></div>'; |
39 var elem = parseSubtree(input); | 41 var elem = parseSubtree(input); |
40 expect(elem.outerHTML, input); | 42 expect(elem.outerHTML, input); |
41 }); | 43 }); |
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
459 expect(info.children[0].node, equals(div)); | 461 expect(info.children[0].node, equals(div)); |
460 expect(info.children[0].createdInCode, true); | 462 expect(info.children[0].createdInCode, true); |
461 expect(div.id, ''); | 463 expect(div.id, ''); |
462 expect(elem.attributes, equals({ | 464 expect(elem.attributes, equals({ |
463 'iterate': 'foo in bar', 'is': 'x-list', 'id': '__e-0'})); | 465 'iterate': 'foo in bar', 'is': 'x-list', 'id': '__e-0'})); |
464 expect(info.ifCondition, isNull); | 466 expect(info.ifCondition, isNull); |
465 expect(info.loopVariable, equals('foo')); | 467 expect(info.loopVariable, equals('foo')); |
466 expect(info.loopItems, equals('bar')); | 468 expect(info.loopItems, equals('bar')); |
467 }); | 469 }); |
468 | 470 |
471 test('component is="" not found - warning', () { | |
472 var elem = parseSubtree('<li is="x-todo-row"></li>'); | |
473 var info = analyzeElement(elem); | |
474 expect(messages.length, 1); | |
475 expect(messages[0].message, contains('x-todo-row not found')); | |
476 expect(messages[0].span, equals(elem.sourceSpan)); | |
477 }); | |
478 | |
479 test('component custom tag not found - warning', () { | |
480 var elem = parseSubtree('<x-todo-row></x-todo-row>'); | |
481 var info = analyzeElement(elem); | |
482 expect(messages.length, 1); | |
483 expect(messages[0].message, contains('x-todo-row not found')); | |
484 expect(messages[0].span, equals(elem.sourceSpan)); | |
485 }); | |
486 | |
487 test('extends not found - warning', () { | |
488 var files = parseFiles({ | |
489 'index.html': '<body><element name="x-quux3" extends="x-foo" ' | |
490 'constructor="Bar"><template>' | |
491 }); | |
492 var fileInfo = analyzeFiles(files); | |
493 var elem = fileInfo['index.html'].bodyInfo.node.query('element'); | |
494 expect(messages.length, 1); | |
495 expect(messages[0].message, contains('x-foo not found')); | |
496 expect(messages[0].span, equals(elem.sourceSpan)); | |
497 }); | |
498 | |
469 test('data-value - deprecated', () { | 499 test('data-value - deprecated', () { |
470 var elem = parseSubtree('<li is="x-todo-row" data-value="todo:x"></li>'); | 500 var elem = parseSubtree('<li is="x-todo-row" data-value="todo:x"></li>'); |
471 var info = analyzeElement(elem); | 501 var info = analyzeElement(elem); |
472 expect(info.attributes, isEmpty); | 502 expect(info.attributes, isEmpty); |
473 expect(info.events, isEmpty); | 503 expect(info.events, isEmpty); |
474 expect(info.values, equals({'todo': 'x'})); | 504 expect(info.values, equals({'todo': 'x'})); |
475 expect(messages.length, 2); | 505 expect(messages.length, 2); |
476 expect(messages[0].message, contains('x-todo-row not found')); | 506 expect(messages[0].message, contains('x-todo-row not found')); |
477 expect(messages[0].span, equals(elem.sourceSpan)); | 507 expect(messages[0].span, equals(elem.sourceSpan)); |
478 expect(messages[1].message, contains('data-value is deprecated')); | 508 expect(messages[1].message, contains('data-value is deprecated')); |
479 expect(messages[1].span, equals(elem.sourceSpan)); | 509 expect(messages[1].span, equals(elem.sourceSpan)); |
480 }); | 510 }); |
481 | 511 |
512 | |
482 test('component properties 1-way binding', () { | 513 test('component properties 1-way binding', () { |
483 var files = parseFiles({ | 514 var files = parseFiles({ |
484 'index.html': '<head><link rel="components" href="foo.html">' | 515 'index.html': '<head><link rel="components" href="foo.html">' |
485 '<body><element name="x-bar" extends="x-foo" ' | 516 '<body><element name="x-bar" extends="x-foo" ' |
486 'constructor="Bar"></element>' | 517 'constructor="Bar"></element>' |
487 '<x-bar quux="{{123}}">', | 518 '<x-bar quux="{{123}}">', |
488 'foo.html': '<body><element name="x-foo" constructor="Foo">' | 519 'foo.html': '<body><element name="x-foo" constructor="Foo">' |
489 }); | 520 }); |
490 | 521 |
491 var fileInfo = analyzeFiles(files); | 522 var fileInfo = analyzeFiles(files); |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
837 var info = fileInfo['index.html']; | 868 var info = fileInfo['index.html']; |
838 expect(info.components.keys, equals(['x-bar', 'x-foo'])); | 869 expect(info.components.keys, equals(['x-bar', 'x-foo'])); |
839 | 870 |
840 var compInfo = fileInfo['foo.html'].declaredComponents[0]; | 871 var compInfo = fileInfo['foo.html'].declaredComponents[0]; |
841 expect(info.query('x-foo').component, equals(compInfo)); | 872 expect(info.query('x-foo').component, equals(compInfo)); |
842 compInfo = fileInfo['bar.html'].declaredComponents[0]; | 873 compInfo = fileInfo['bar.html'].declaredComponents[0]; |
843 expect(info.query('x-bar').component, equals(compInfo)); | 874 expect(info.query('x-bar').component, equals(compInfo)); |
844 }); | 875 }); |
845 }); | 876 }); |
846 } | 877 } |
OLD | NEW |