| 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 |