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