OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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('ElementTest'); | 5 #library('ElementTest'); |
6 #import('../../pkg/unittest/unittest.dart'); | 6 #import('../../pkg/unittest/unittest.dart'); |
7 #import('../../pkg/unittest/html_config.dart'); | 7 #import('../../pkg/unittest/html_config.dart'); |
8 #import('dart:html'); | 8 #import('dart:html'); |
9 | 9 |
10 expectLargeRect(ClientRect rect) { | 10 expectLargeRect(ClientRect rect) { |
11 Expect.equals(rect.top, 0); | 11 expect(rect.top, 0); |
12 Expect.equals(rect.left, 0); | 12 expect(rect.left, 0); |
13 Expect.isTrue(rect.width > 100); | 13 expect(rect.width, greaterThan(100)); |
14 Expect.isTrue(rect.height > 100); | 14 expect(rect.height, greaterThan(100)); |
15 Expect.equals(rect.bottom, rect.top + rect.height); | 15 expect(rect.bottom, rect.top + rect.height); |
16 Expect.equals(rect.right, rect.left + rect.width); | 16 expect(rect.right, rect.left + rect.width); |
17 } | 17 } |
18 | 18 |
19 void testEventHelper(EventListenerList listenerList, String type, | 19 void testEventHelper(EventListenerList listenerList, String type, |
20 [Function registerOnEventListener = null]) { | 20 [Function registerOnEventListener = null]) { |
21 testMultipleEventHelper(listenerList, [type], registerOnEventListener); | 21 testMultipleEventHelper(listenerList, [type], registerOnEventListener); |
22 } | 22 } |
23 // Allows testing where we polyfill different browsers firing different events. | 23 // Allows testing where we polyfill different browsers firing different events. |
24 void testMultipleEventHelper(EventListenerList listenerList, List<String> types, | 24 void testMultipleEventHelper(EventListenerList listenerList, List<String> types, |
25 [Function registerOnEventListener = null]) { | 25 [Function registerOnEventListener = null]) { |
26 bool firedWhenAddedToListenerList = false; | 26 bool firedWhenAddedToListenerList = false; |
27 bool firedOnEvent = false; | 27 bool firedOnEvent = false; |
28 listenerList.add((e) { | 28 listenerList.add((e) { |
29 firedWhenAddedToListenerList = true; | 29 firedWhenAddedToListenerList = true; |
30 }); | 30 }); |
31 if (registerOnEventListener != null) { | 31 if (registerOnEventListener != null) { |
32 registerOnEventListener((e) { | 32 registerOnEventListener((e) { |
33 firedOnEvent = true; | 33 firedOnEvent = true; |
34 }); | 34 }); |
35 } | 35 } |
36 for (var type in types) { | 36 for (var type in types) { |
37 final event = new Event(type); | 37 final event = new Event(type); |
38 listenerList.dispatch(event); | 38 listenerList.dispatch(event); |
39 } | 39 } |
40 | 40 |
41 Expect.isTrue(firedWhenAddedToListenerList); | 41 expect(firedWhenAddedToListenerList, isTrue); |
42 if (registerOnEventListener != null) { | 42 if (registerOnEventListener != null) { |
43 Expect.isTrue(firedOnEvent); | 43 expect(firedOnEvent, isTrue); |
44 } | 44 } |
45 } | 45 } |
46 | 46 |
47 void testConstructorHelper(String tag, String htmlSnippet, | 47 void testConstructorHelper(String tag, String htmlSnippet, |
48 String expectedText, Function isExpectedClass) { | 48 String expectedText, Function isExpectedClass) { |
49 Expect.isTrue(isExpectedClass(new Element.tag(tag))); | 49 expect(isExpectedClass(new Element.tag(tag)), isTrue); |
50 final elementFromSnippet = new Element.html(htmlSnippet); | 50 final elementFromSnippet = new Element.html(htmlSnippet); |
51 Expect.isTrue(isExpectedClass(elementFromSnippet)); | 51 expect(isExpectedClass(elementFromSnippet), isTrue); |
52 Expect.equals(expectedText, elementFromSnippet.text); | 52 expect(elementFromSnippet.text, expectedText); |
53 } | 53 } |
54 | 54 |
55 main() { | 55 main() { |
56 useHtmlConfiguration(); | 56 useHtmlConfiguration(); |
57 | 57 |
| 58 var isHRElement = predicate((x) => x is HRElement, 'is a HRElement'); |
| 59 var isBRElement = predicate((x) => x is BRElement, 'is a BRElement'); |
| 60 var isInputElement = |
| 61 predicate((x) => x is InputElement, 'is an InputElement'); |
| 62 var isImageElement = |
| 63 predicate((x) => x is ImageElement, 'is an ImageElement'); |
| 64 var isSpanElement = predicate((x) => x is SpanElement, 'is a SpanElement'); |
| 65 var isAnchorElement = |
| 66 predicate((x) => x is AnchorElement, 'is an AnchorElement'); |
| 67 var isElementList = |
| 68 predicate((x) => x is List<Element>, 'is a List<Element>'); |
| 69 var isHeadingElement = |
| 70 predicate((x) => x is HeadingElement, 'is a HeadingElement'); |
| 71 |
58 Element makeElement() => new Element.tag('div'); | 72 Element makeElement() => new Element.tag('div'); |
59 | 73 |
60 Element makeElementWithChildren() => | 74 Element makeElementWithChildren() => |
61 new Element.html("<div><br/><img/><input/></div>"); | 75 new Element.html("<div><br/><img/><input/></div>"); |
62 | 76 |
63 test('computedStyle', () { | 77 test('computedStyle', () { |
64 final element = document.body; | 78 final element = document.body; |
65 element.computedStyle.then(expectAsync1((style) { | 79 element.computedStyle.then(expectAsync1((style) { |
66 Expect.equals(style.getPropertyValue('left'), 'auto'); | 80 expect(style.getPropertyValue('left'), 'auto'); |
67 })); | 81 })); |
68 }); | 82 }); |
69 | 83 |
70 test('rect', () { | 84 test('rect', () { |
71 final container = new Element.tag("div"); | 85 final container = new Element.tag("div"); |
72 container.style.position = 'absolute'; | 86 container.style.position = 'absolute'; |
73 container.style.top = '8px'; | 87 container.style.top = '8px'; |
74 container.style.left = '8px'; | 88 container.style.left = '8px'; |
75 final element = new Element.tag("div"); | 89 final element = new Element.tag("div"); |
76 element.style.width = '200px'; | 90 element.style.width = '200px'; |
(...skipping 29 matching lines...) Expand all Loading... |
106 expect(element.offsetHeight, greaterThan(100)); | 120 expect(element.offsetHeight, greaterThan(100)); |
107 expect(element.scrollWidth, greaterThan(100)); | 121 expect(element.scrollWidth, greaterThan(100)); |
108 expect(element.scrollHeight, greaterThan(100)); | 122 expect(element.scrollHeight, greaterThan(100)); |
109 expect(element.getBoundingClientRect().left, 8); | 123 expect(element.getBoundingClientRect().left, 8); |
110 expect(element.getBoundingClientRect().top, 8); | 124 expect(element.getBoundingClientRect().top, 8); |
111 container.remove(); | 125 container.remove(); |
112 }); | 126 }); |
113 | 127 |
114 group('constructors', () { | 128 group('constructors', () { |
115 test('error', () { | 129 test('error', () { |
116 Expect.throws(() => new Element.html('<br/><br/>'), | 130 expect(() => new Element.html('<br/><br/>'), throwsArgumentError); |
117 (e) => e is ArgumentError); | |
118 }); | 131 }); |
119 | 132 |
120 test('.html has no parent', () => | 133 test('.html has no parent', () => |
121 Expect.isNull(new Element.html('<br/>').parent)); | 134 expect(new Element.html('<br/>').parent, isNull)); |
122 | 135 |
123 test('a', () => testConstructorHelper('a', '<a>foo</a>', 'foo', | 136 test('a', () => testConstructorHelper('a', '<a>foo</a>', 'foo', |
124 (element) => element is AnchorElement)); | 137 (element) => element is AnchorElement)); |
125 test('area', () => testConstructorHelper('area', '<area>foo</area>', '', | 138 test('area', () => testConstructorHelper('area', '<area>foo</area>', '', |
126 (element) => element is AreaElement)); | 139 (element) => element is AreaElement)); |
127 // TODO(jacobr): audio tags cause tests to segfault when using dartium. | 140 // TODO(jacobr): audio tags cause tests to segfault when using dartium. |
128 // b/5522106. | 141 // b/5522106. |
129 // test('audio', () => testConstructorHelper('audio', | 142 // test('audio', () => testConstructorHelper('audio', |
130 // '<audio>foo</audio>', 'foo', | 143 // '<audio>foo</audio>', 'foo', |
131 // (element) => element is AudioElement)); | 144 // (element) => element is AudioElement)); |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 element, 'touchstart', listener, true)); | 440 element, 'touchstart', listener, true)); |
428 }); | 441 }); |
429 | 442 |
430 group('attributes', () { | 443 group('attributes', () { |
431 test('manipulation', () { | 444 test('manipulation', () { |
432 final element = new Element.html( | 445 final element = new Element.html( |
433 '''<div class="foo" style="overflow: hidden" data-foo="bar" | 446 '''<div class="foo" style="overflow: hidden" data-foo="bar" |
434 data-foo2="bar2" dir="rtl"> | 447 data-foo2="bar2" dir="rtl"> |
435 </div>'''); | 448 </div>'''); |
436 final attributes = element.attributes; | 449 final attributes = element.attributes; |
437 Expect.equals(attributes['class'], 'foo'); | 450 expect(attributes['class'], 'foo'); |
438 Expect.equals(attributes['style'], 'overflow: hidden'); | 451 expect(attributes['style'], 'overflow: hidden'); |
439 Expect.equals(attributes['data-foo'], 'bar'); | 452 expect(attributes['data-foo'], 'bar'); |
440 Expect.equals(attributes['data-foo2'], 'bar2'); | 453 expect(attributes['data-foo2'], 'bar2'); |
441 Expect.equals(attributes.length, 5); | 454 expect(attributes.length, 5); |
442 Expect.equals(element.dataAttributes.length, 2); | 455 expect(element.dataAttributes.length, 2); |
443 element.dataAttributes['foo'] = 'baz'; | 456 element.dataAttributes['foo'] = 'baz'; |
444 Expect.equals(element.dataAttributes['foo'], 'baz'); | 457 expect(element.dataAttributes['foo'], 'baz'); |
445 Expect.equals(attributes['data-foo'], 'baz'); | 458 expect(attributes['data-foo'], 'baz'); |
446 attributes['data-foo2'] = 'baz2'; | 459 attributes['data-foo2'] = 'baz2'; |
447 Expect.equals(attributes['data-foo2'], 'baz2'); | 460 expect(attributes['data-foo2'], 'baz2'); |
448 Expect.equals(element.dataAttributes['foo2'], 'baz2'); | 461 expect(element.dataAttributes['foo2'], 'baz2'); |
449 Expect.equals(attributes['dir'], 'rtl'); | 462 expect(attributes['dir'], 'rtl'); |
450 | 463 |
451 final dataAttributes = element.dataAttributes; | 464 final dataAttributes = element.dataAttributes; |
452 dataAttributes.remove('foo2'); | 465 dataAttributes.remove('foo2'); |
453 Expect.equals(attributes.length, 4); | 466 expect(attributes.length, 4); |
454 Expect.equals(dataAttributes.length, 1); | 467 expect(dataAttributes.length, 1); |
455 attributes.remove('style'); | 468 attributes.remove('style'); |
456 Expect.equals(attributes.length, 3); | 469 expect(attributes.length, 3); |
457 dataAttributes['foo3'] = 'baz3'; | 470 dataAttributes['foo3'] = 'baz3'; |
458 Expect.equals(dataAttributes.length, 2); | 471 expect(dataAttributes.length, 2); |
459 Expect.equals(attributes.length, 4); | 472 expect(attributes.length, 4); |
460 attributes['style'] = 'width: 300px;'; | 473 attributes['style'] = 'width: 300px;'; |
461 Expect.equals(attributes.length, 5); | 474 expect(attributes.length, 5); |
462 }); | 475 }); |
463 | 476 |
464 test('coercion', () { | 477 test('coercion', () { |
465 final element = new Element.tag('div'); | 478 final element = new Element.tag('div'); |
466 element.attributes['foo'] = 42; | 479 element.attributes['foo'] = 42; |
467 element.attributes['bar'] = 3.1; | 480 element.attributes['bar'] = 3.1; |
468 Expect.equals(element.attributes['foo'], '42'); | 481 expect(element.attributes['foo'], '42'); |
469 Expect.equals(element.attributes['bar'], '3.1'); | 482 expect(element.attributes['bar'], '3.1'); |
470 }); | 483 }); |
471 }); | 484 }); |
472 | 485 |
473 group('elements', () { | 486 group('elements', () { |
474 test('is a subset of nodes', () { | 487 test('is a subset of nodes', () { |
475 var el = new Element.html("<div>Foo<br/><img/></div>"); | 488 var el = new Element.html("<div>Foo<br/><img/></div>"); |
476 Expect.equals(3, el.nodes.length); | 489 expect(el.nodes.length, 3); |
477 Expect.equals(2, el.elements.length); | 490 expect(el.elements.length, 2); |
478 Expect.equals(el.nodes[1], el.elements[0]); | 491 expect(el.nodes[1], el.elements[0]); |
479 Expect.equals(el.nodes[2], el.elements[1]); | 492 expect(el.nodes[2], el.elements[1]); |
480 }); | 493 }); |
481 | 494 |
482 test('changes when an element is added to nodes', () { | 495 test('changes when an element is added to nodes', () { |
483 var el = new Element.html("<div>Foo<br/><img/></div>"); | 496 var el = new Element.html("<div>Foo<br/><img/></div>"); |
484 el.nodes.add(new Element.tag('hr')); | 497 el.nodes.add(new Element.tag('hr')); |
485 Expect.equals(3, el.elements.length); | 498 expect(el.elements.length, 3); |
486 Expect.isTrue(el.elements[2] is HRElement); | 499 expect(el.elements[2], isHRElement); |
487 Expect.equals(el.nodes[3], el.elements[2]); | 500 expect(el.nodes[3], el.elements[2]); |
488 }); | 501 }); |
489 | 502 |
490 test('changes nodes when an element is added', () { | 503 test('changes nodes when an element is added', () { |
491 var el = new Element.html("<div>Foo<br/><img/></div>"); | 504 var el = new Element.html("<div>Foo<br/><img/></div>"); |
492 el.elements.add(new Element.tag('hr')); | 505 el.elements.add(new Element.tag('hr')); |
493 Expect.equals(4, el.nodes.length); | 506 expect(el.nodes.length, 4); |
494 Expect.isTrue(el.nodes[3] is HRElement); | 507 expect(el.nodes[3], isHRElement); |
495 Expect.equals(el.elements[2], el.nodes[3]); | 508 expect(el.elements[2], el.nodes[3]); |
496 }); | 509 }); |
497 | 510 |
498 test('last', () { | 511 test('last', () { |
499 var el = makeElementWithChildren(); | 512 var el = makeElementWithChildren(); |
500 Expect.isTrue(el.elements.last is InputElement); | 513 expect(el.elements.last, isInputElement); |
501 }); | 514 }); |
502 | 515 |
503 test('forEach', () { | 516 test('forEach', () { |
504 var els = []; | 517 var els = []; |
505 var el = makeElementWithChildren(); | 518 var el = makeElementWithChildren(); |
506 el.elements.forEach((n) => els.add(n)); | 519 el.elements.forEach((n) => els.add(n)); |
507 Expect.isTrue(els[0] is BRElement); | 520 expect(els[0], isBRElement); |
508 Expect.isTrue(els[1] is ImageElement); | 521 expect(els[1], isImageElement); |
509 Expect.isTrue(els[2] is InputElement); | 522 expect(els[2], isInputElement); |
510 }); | 523 }); |
511 | 524 |
512 test('filter', () { | 525 test('filter', () { |
513 var filtered = makeElementWithChildren().elements. | 526 var filtered = makeElementWithChildren().elements. |
514 filter((n) => n is ImageElement); | 527 filter((n) => n is ImageElement); |
515 Expect.equals(1, filtered.length); | 528 expect(1, filtered.length); |
516 Expect.isTrue(filtered[0] is ImageElement); | 529 expect(filtered[0], isImageElement); |
517 Expect.isTrue(filtered is List<Element>); | 530 expect(filtered, isElementList); |
518 }); | 531 }); |
519 | 532 |
520 test('every', () { | 533 test('every', () { |
521 var el = makeElementWithChildren(); | 534 var el = makeElementWithChildren(); |
522 Expect.isTrue(el.elements.every((n) => n is Element)); | 535 expect(el.elements.every((n) => n is Element), isTrue); |
523 Expect.isFalse(el.elements.every((n) => n is InputElement)); | 536 expect(el.elements.every((n) => n is InputElement), isFalse); |
524 }); | 537 }); |
525 | 538 |
526 test('some', () { | 539 test('some', () { |
527 var el = makeElementWithChildren(); | 540 var el = makeElementWithChildren(); |
528 Expect.isTrue(el.elements.some((n) => n is InputElement)); | 541 expect(el.elements.some((n) => n is InputElement), isTrue); |
529 Expect.isFalse(el.elements.some((n) => n is SVGElement)); | 542 expect(el.elements.some((n) => n is SVGElement), isFalse); |
530 }); | 543 }); |
531 | 544 |
532 test('isEmpty', () { | 545 test('isEmpty', () { |
533 Expect.isTrue(makeElement().elements.isEmpty); | 546 expect(makeElement().elements.isEmpty, isTrue); |
534 Expect.isFalse(makeElementWithChildren().elements.isEmpty); | 547 expect(makeElementWithChildren().elements.isEmpty, isFalse); |
535 }); | 548 }); |
536 | 549 |
537 test('length', () { | 550 test('length', () { |
538 Expect.equals(0, makeElement().elements.length); | 551 expect(makeElement().elements.length, 0); |
539 Expect.equals(3, makeElementWithChildren().elements.length); | 552 expect(makeElementWithChildren().elements.length, 3); |
540 }); | 553 }); |
541 | 554 |
542 test('[]', () { | 555 test('[]', () { |
543 var el = makeElementWithChildren(); | 556 var el = makeElementWithChildren(); |
544 Expect.isTrue(el.elements[0] is BRElement); | 557 expect(el.elements[0], isBRElement); |
545 Expect.isTrue(el.elements[1] is ImageElement); | 558 expect(el.elements[1], isImageElement); |
546 Expect.isTrue(el.elements[2] is InputElement); | 559 expect(el.elements[2], isInputElement); |
547 }); | 560 }); |
548 | 561 |
549 test('[]=', () { | 562 test('[]=', () { |
550 var el = makeElementWithChildren(); | 563 var el = makeElementWithChildren(); |
551 el.elements[1] = new Element.tag('hr'); | 564 el.elements[1] = new Element.tag('hr'); |
552 Expect.isTrue(el.elements[0] is BRElement); | 565 expect(el.elements[0], isBRElement); |
553 Expect.isTrue(el.elements[1] is HRElement); | 566 expect(el.elements[1], isHRElement); |
554 Expect.isTrue(el.elements[2] is InputElement); | 567 expect(el.elements[2], isInputElement); |
555 }); | 568 }); |
556 | 569 |
557 test('add', () { | 570 test('add', () { |
558 var el = makeElement(); | 571 var el = makeElement(); |
559 el.elements.add(new Element.tag('hr')); | 572 el.elements.add(new Element.tag('hr')); |
560 Expect.isTrue(el.elements.last is HRElement); | 573 expect(el.elements.last, isHRElement); |
561 }); | 574 }); |
562 | 575 |
563 test('addLast', () { | 576 test('addLast', () { |
564 var el = makeElement(); | 577 var el = makeElement(); |
565 el.elements.addLast(new Element.tag('hr')); | 578 el.elements.addLast(new Element.tag('hr')); |
566 Expect.isTrue(el.elements.last is HRElement); | 579 expect(el.elements.last, isHRElement); |
567 }); | 580 }); |
568 | 581 |
569 test('iterator', () { | 582 test('iterator', () { |
570 var els = []; | 583 var els = []; |
571 var el = makeElementWithChildren(); | 584 var el = makeElementWithChildren(); |
572 for (var subel in el.elements) { | 585 for (var subel in el.elements) { |
573 els.add(subel); | 586 els.add(subel); |
574 } | 587 } |
575 Expect.isTrue(els[0] is BRElement); | 588 expect(els[0], isBRElement); |
576 Expect.isTrue(els[1] is ImageElement); | 589 expect(els[1], isImageElement); |
577 Expect.isTrue(els[2] is InputElement); | 590 expect(els[2], isInputElement); |
578 }); | 591 }); |
579 | 592 |
580 test('addAll', () { | 593 test('addAll', () { |
581 var el = makeElementWithChildren(); | 594 var el = makeElementWithChildren(); |
582 el.elements.addAll([ | 595 el.elements.addAll([ |
583 new Element.tag('span'), | 596 new Element.tag('span'), |
584 new Element.tag('a'), | 597 new Element.tag('a'), |
585 new Element.tag('h1') | 598 new Element.tag('h1') |
586 ]); | 599 ]); |
587 Expect.isTrue(el.elements[0] is BRElement); | 600 expect(el.elements[0], isBRElement); |
588 Expect.isTrue(el.elements[1] is ImageElement); | 601 expect(el.elements[1], isImageElement); |
589 Expect.isTrue(el.elements[2] is InputElement); | 602 expect(el.elements[2], isInputElement); |
590 Expect.isTrue(el.elements[3] is SpanElement); | 603 expect(el.elements[3], isSpanElement); |
591 Expect.isTrue(el.elements[4] is AnchorElement); | 604 expect(el.elements[4], isAnchorElement); |
592 Expect.isTrue(el.elements[5] is HeadingElement); | 605 expect(el.elements[5], isHeadingElement); |
593 }); | 606 }); |
594 | 607 |
595 test('clear', () { | 608 test('clear', () { |
596 var el = makeElementWithChildren(); | 609 var el = makeElementWithChildren(); |
597 el.elements.clear(); | 610 el.elements.clear(); |
598 Expect.listEquals([], el.elements); | 611 expect(el.elements, equals([])); |
599 }); | 612 }); |
600 | 613 |
601 test('removeLast', () { | 614 test('removeLast', () { |
602 var el = makeElementWithChildren(); | 615 var el = makeElementWithChildren(); |
603 Expect.isTrue(el.elements.removeLast() is InputElement); | 616 expect(el.elements.removeLast(), isInputElement); |
604 Expect.equals(2, el.elements.length); | 617 expect(el.elements.length, 2); |
605 Expect.isTrue(el.elements.removeLast() is ImageElement); | 618 expect(el.elements.removeLast(), isImageElement); |
606 Expect.equals(1, el.elements.length); | 619 expect(el.elements.length, 1); |
607 }); | 620 }); |
608 | 621 |
609 test('getRange', () { | 622 test('getRange', () { |
610 var el = makeElementWithChildren(); | 623 var el = makeElementWithChildren(); |
611 Expect.isTrue(el.elements.getRange(1, 1) is List<Element>); | 624 expect(el.elements.getRange(1, 1), isElementList); |
612 }); | 625 }); |
613 }); | 626 }); |
614 | 627 |
615 group('queryAll', () { | 628 group('queryAll', () { |
616 List<Element> getQueryAll() { | 629 List<Element> getQueryAll() { |
617 return new Element.html(""" | 630 return new Element.html(""" |
618 <div> | 631 <div> |
619 <hr/> | 632 <hr/> |
620 <a class='q' href='http://dartlang.org'>Dart!</a> | 633 <a class='q' href='http://dartlang.org'>Dart!</a> |
621 <p> | 634 <p> |
622 <span class='q'>Hello</span>, | 635 <span class='q'>Hello</span>, |
623 <em>world</em>! | 636 <em>world</em>! |
624 </p> | 637 </p> |
625 <hr class='q'/> | 638 <hr class='q'/> |
626 </div> | 639 </div> |
627 """).queryAll('.q'); | 640 """).queryAll('.q'); |
628 } | 641 } |
629 | 642 |
630 List<Element> getEmptyQueryAll() => new Element.tag('div').queryAll('img'); | 643 List<Element> getEmptyQueryAll() => new Element.tag('div').queryAll('img'); |
631 | 644 |
632 void testUnsupported(String name, void f()) { | 645 void testUnsupported(String name, void f()) { |
633 test(name, () { | 646 test(name, () { |
634 Expect.throws(f, (e) => e is UnsupportedError); | 647 expect(f, throwsUnsupportedError); |
635 }); | 648 }); |
636 } | 649 } |
637 | 650 |
638 test('last', () { | 651 test('last', () { |
639 Expect.isTrue(getQueryAll().last is HRElement); | 652 expect(getQueryAll().last, isHRElement); |
640 }); | 653 }); |
641 | 654 |
642 test('forEach', () { | 655 test('forEach', () { |
643 var els = []; | 656 var els = []; |
644 getQueryAll().forEach((el) => els.add(el)); | 657 getQueryAll().forEach((el) => els.add(el)); |
645 Expect.isTrue(els[0] is AnchorElement); | 658 expect(els[0], isAnchorElement); |
646 Expect.isTrue(els[1] is SpanElement); | 659 expect(els[1], isSpanElement); |
647 Expect.isTrue(els[2] is HRElement); | 660 expect(els[2], isHRElement); |
648 }); | 661 }); |
649 | 662 |
650 test('map', () { | 663 test('map', () { |
651 var texts = getQueryAll().map((el) => el.text); | 664 var texts = getQueryAll().map((el) => el.text); |
652 Expect.listEquals(['Dart!', 'Hello', ''], texts); | 665 expect(texts, equals(['Dart!', 'Hello', ''])); |
653 }); | 666 }); |
654 | 667 |
655 test('filter', () { | 668 test('filter', () { |
656 var filtered = getQueryAll().filter((n) => n is SpanElement); | 669 var filtered = getQueryAll().filter((n) => n is SpanElement); |
657 Expect.equals(1, filtered.length); | 670 expect(filtered.length, 1); |
658 Expect.isTrue(filtered[0] is SpanElement); | 671 expect(filtered[0], isSpanElement); |
659 Expect.isTrue(filtered is List<Element>); | 672 expect(filtered, isElementList); |
660 }); | 673 }); |
661 | 674 |
662 test('every', () { | 675 test('every', () { |
663 var el = getQueryAll(); | 676 var el = getQueryAll(); |
664 Expect.isTrue(el.every((n) => n is Element)); | 677 expect(el.every((n) => n is Element), isTrue); |
665 Expect.isFalse(el.every((n) => n is SpanElement)); | 678 expect(el.every((n) => n is SpanElement), isFalse); |
666 }); | 679 }); |
667 | 680 |
668 test('some', () { | 681 test('some', () { |
669 var el = getQueryAll(); | 682 var el = getQueryAll(); |
670 Expect.isTrue(el.some((n) => n is SpanElement)); | 683 expect(el.some((n) => n is SpanElement), isTrue); |
671 Expect.isFalse(el.some((n) => n is SVGElement)); | 684 expect(el.some((n) => n is SVGElement), isFalse); |
672 }); | 685 }); |
673 | 686 |
674 test('isEmpty', () { | 687 test('isEmpty', () { |
675 Expect.isTrue(getEmptyQueryAll().isEmpty); | 688 expect(getEmptyQueryAll().isEmpty, isTrue); |
676 Expect.isFalse(getQueryAll().isEmpty); | 689 expect(getQueryAll().isEmpty, isFalse); |
677 }); | 690 }); |
678 | 691 |
679 test('length', () { | 692 test('length', () { |
680 Expect.equals(0, getEmptyQueryAll().length); | 693 expect(getEmptyQueryAll().length, 0); |
681 Expect.equals(3, getQueryAll().length); | 694 expect(getQueryAll().length, 3); |
682 }); | 695 }); |
683 | 696 |
684 test('[]', () { | 697 test('[]', () { |
685 var els = getQueryAll(); | 698 var els = getQueryAll(); |
686 Expect.isTrue(els[0] is AnchorElement); | 699 expect(els[0], isAnchorElement); |
687 Expect.isTrue(els[1] is SpanElement); | 700 expect(els[1], isSpanElement); |
688 Expect.isTrue(els[2] is HRElement); | 701 expect(els[2], isHRElement); |
689 }); | 702 }); |
690 | 703 |
691 test('iterator', () { | 704 test('iterator', () { |
692 var els = []; | 705 var els = []; |
693 for (var subel in getQueryAll()) { | 706 for (var subel in getQueryAll()) { |
694 els.add(subel); | 707 els.add(subel); |
695 } | 708 } |
696 Expect.isTrue(els[0] is AnchorElement); | 709 expect(els[0], isAnchorElement); |
697 Expect.isTrue(els[1] is SpanElement); | 710 expect(els[1], isSpanElement); |
698 Expect.isTrue(els[2] is HRElement); | 711 expect(els[2], isHRElement); |
699 }); | 712 }); |
700 | 713 |
701 test('getRange', () { | 714 test('getRange', () { |
702 Expect.isTrue(getQueryAll().getRange(1, 1) is List<Element>); | 715 expect(getQueryAll().getRange(1, 1) is List<Element>, isTrue); |
703 }); | 716 }); |
704 | 717 |
705 testUnsupported('[]=', () => getQueryAll()[1] = new Element.tag('br')); | 718 testUnsupported('[]=', () => getQueryAll()[1] = new Element.tag('br')); |
706 testUnsupported('add', () => getQueryAll().add(new Element.tag('br'))); | 719 testUnsupported('add', () => getQueryAll().add(new Element.tag('br'))); |
707 testUnsupported('addLast', () => | 720 testUnsupported('addLast', () => |
708 getQueryAll().addLast(new Element.tag('br'))); | 721 getQueryAll().addLast(new Element.tag('br'))); |
709 | 722 |
710 testUnsupported('addAll', () { | 723 testUnsupported('addAll', () { |
711 getQueryAll().addAll([ | 724 getQueryAll().addAll([ |
712 new Element.tag('span'), | 725 new Element.tag('span'), |
(...skipping 13 matching lines...) Expand all Loading... |
726 testUnsupported('clear', () => getQueryAll().clear()); | 739 testUnsupported('clear', () => getQueryAll().clear()); |
727 | 740 |
728 testUnsupported('removeLast', () => getQueryAll().removeLast()); | 741 testUnsupported('removeLast', () => getQueryAll().removeLast()); |
729 }); | 742 }); |
730 | 743 |
731 group('_ElementList', () { | 744 group('_ElementList', () { |
732 List<Element> makeElList() => makeElementWithChildren().elements; | 745 List<Element> makeElList() => makeElementWithChildren().elements; |
733 | 746 |
734 test('filter', () { | 747 test('filter', () { |
735 var filtered = makeElList().filter((n) => n is ImageElement); | 748 var filtered = makeElList().filter((n) => n is ImageElement); |
736 Expect.equals(1, filtered.length); | 749 expect(filtered.length, 1); |
737 Expect.isTrue(filtered[0] is ImageElement); | 750 expect(filtered[0], isImageElement); |
738 Expect.isTrue(filtered is List<Element>); | 751 expect(filtered, isElementList); |
739 }); | 752 }); |
740 | 753 |
741 test('getRange', () { | 754 test('getRange', () { |
742 var range = makeElList().getRange(1, 2); | 755 var range = makeElList().getRange(1, 2); |
743 Expect.isTrue(range is List<Element>); | 756 expect(range, isElementList); |
744 Expect.isTrue(range[0] is ImageElement); | 757 expect(range[0], isImageElement); |
745 Expect.isTrue(range[1] is InputElement); | 758 expect(range[1], isInputElement); |
746 }); | 759 }); |
747 }); | 760 }); |
748 } | 761 } |
OLD | NEW |