Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(407)

Side by Side Diff: test/analyzer_test.dart

Issue 12016007: Add a warning about using a component that isn't referenced (Closed) Base URL: https://github.com/dart-lang/web-ui.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/src/analyzer.dart ('k') | test/testing.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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 }
OLDNEW
« no previous file with comments | « lib/src/analyzer.dart ('k') | test/testing.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698