| 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/lib/unittest.dart'; | 6 import '../../pkg/unittest/lib/unittest.dart'; |
| 7 import '../../pkg/unittest/lib/html_individual_config.dart'; | 7 import '../../pkg/unittest/lib/html_individual_config.dart'; |
| 8 import 'dart:html'; | 8 import 'dart:html'; |
| 9 import 'dart:svg' as svg; | 9 import 'dart:svg' as svg; |
| 10 | 10 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 }); | 83 }); |
| 84 | 84 |
| 85 test('client position synchronous', () { | 85 test('client position synchronous', () { |
| 86 final container = new Element.tag("div"); | 86 final container = new Element.tag("div"); |
| 87 container.style.position = 'absolute'; | 87 container.style.position = 'absolute'; |
| 88 container.style.top = '8px'; | 88 container.style.top = '8px'; |
| 89 container.style.left = '8px'; | 89 container.style.left = '8px'; |
| 90 final element = new Element.tag("div"); | 90 final element = new Element.tag("div"); |
| 91 element.style.width = '200px'; | 91 element.style.width = '200px'; |
| 92 element.style.height = '200px'; | 92 element.style.height = '200px'; |
| 93 container.elements.add(element); | 93 container.children.add(element); |
| 94 document.body.elements.add(container); | 94 document.body.children.add(container); |
| 95 | 95 |
| 96 expect(element.clientWidth, greaterThan(100)); | 96 expect(element.clientWidth, greaterThan(100)); |
| 97 expect(element.clientHeight, greaterThan(100)); | 97 expect(element.clientHeight, greaterThan(100)); |
| 98 expect(element.offsetWidth, greaterThan(100)); | 98 expect(element.offsetWidth, greaterThan(100)); |
| 99 expect(element.offsetHeight, greaterThan(100)); | 99 expect(element.offsetHeight, greaterThan(100)); |
| 100 expect(element.scrollWidth, greaterThan(100)); | 100 expect(element.scrollWidth, greaterThan(100)); |
| 101 expect(element.scrollHeight, greaterThan(100)); | 101 expect(element.scrollHeight, greaterThan(100)); |
| 102 expect(element.getBoundingClientRect().left, 8); | 102 expect(element.getBoundingClientRect().left, 8); |
| 103 expect(element.getBoundingClientRect().top, 8); | 103 expect(element.getBoundingClientRect().top, 8); |
| 104 container.remove(); | 104 container.remove(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 test('tbody', () => testConstructorHelper('tbody', | 142 test('tbody', () => testConstructorHelper('tbody', |
| 143 '<tbody><tr><td>foo</td></tr></tbody>', 'foo', | 143 '<tbody><tr><td>foo</td></tr></tbody>', 'foo', |
| 144 (element) => element is TableSectionElement)); | 144 (element) => element is TableSectionElement)); |
| 145 test('tfoot', () => testConstructorHelper('tfoot', | 145 test('tfoot', () => testConstructorHelper('tfoot', |
| 146 '<tfoot><tr><td>foo</td></tr></tfoot>', 'foo', | 146 '<tfoot><tr><td>foo</td></tr></tfoot>', 'foo', |
| 147 (element) => element is TableSectionElement)); | 147 (element) => element is TableSectionElement)); |
| 148 test('thead', () => testConstructorHelper('thead', | 148 test('thead', () => testConstructorHelper('thead', |
| 149 '<thead><tr><td>foo</td></tr></thead>', 'foo', | 149 '<thead><tr><td>foo</td></tr></thead>', 'foo', |
| 150 (element) => element is TableSectionElement)); | 150 (element) => element is TableSectionElement)); |
| 151 }); | 151 }); |
| 152 | 152 |
| 153 group('constructors', () { | 153 group('constructors', () { |
| 154 test('error', () { | 154 test('error', () { |
| 155 expect(() => new Element.html('<br/><br/>'), throwsArgumentError); | 155 expect(() => new Element.html('<br/><br/>'), throwsArgumentError); |
| 156 }); | 156 }); |
| 157 | 157 |
| 158 test('.html has no parent', () => | 158 test('.html has no parent', () => |
| 159 expect(new Element.html('<br/>').parent, isNull)); | 159 expect(new Element.html('<br/>').parent, isNull)); |
| 160 | 160 |
| 161 test('a', () => testConstructorHelper('a', '<a>foo</a>', 'foo', | 161 test('a', () => testConstructorHelper('a', '<a>foo</a>', 'foo', |
| 162 (element) => element is AnchorElement)); | 162 (element) => element is AnchorElement)); |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 // TODO(jacobr): video tags cause tests to segfault when using dartium. | 276 // TODO(jacobr): video tags cause tests to segfault when using dartium. |
| 277 // b/5522106. | 277 // b/5522106. |
| 278 // test('video', () => testConstructorHelper('video', | 278 // test('video', () => testConstructorHelper('video', |
| 279 // '<video>foo</video>', 'foo', | 279 // '<video>foo</video>', 'foo', |
| 280 // (element) => element is VideoElement)); | 280 // (element) => element is VideoElement)); |
| 281 // TODO(jacobr): this test is broken until Dartium fixes b/5521083 | 281 // TODO(jacobr): this test is broken until Dartium fixes b/5521083 |
| 282 // test('someunknown', () => testConstructorHelper('someunknown', | 282 // test('someunknown', () => testConstructorHelper('someunknown', |
| 283 // '<someunknown>foo</someunknown>', 'foo', | 283 // '<someunknown>foo</someunknown>', 'foo', |
| 284 // (element) => element is UnknownElement)); | 284 // (element) => element is UnknownElement)); |
| 285 }); | 285 }); |
| 286 | 286 |
| 287 group('eventListening', () { | 287 group('eventListening', () { |
| 288 test('eventListeners', () { | 288 test('eventListeners', () { |
| 289 final element = new Element.tag('div'); | 289 final element = new Element.tag('div'); |
| 290 final on = element.on; | 290 final on = element.on; |
| 291 | 291 |
| 292 testEventHelper(on.abort, 'abort', | 292 testEventHelper(on.abort, 'abort', |
| 293 (listener) => Testing.addEventListener( | 293 (listener) => Testing.addEventListener( |
| 294 element, 'abort', listener, true)); | 294 element, 'abort', listener, true)); |
| 295 testEventHelper(on.beforeCopy, 'beforecopy', | 295 testEventHelper(on.beforeCopy, 'beforecopy', |
| 296 (listener) => Testing.addEventListener( | 296 (listener) => Testing.addEventListener( |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 attributes.remove('style'); | 459 attributes.remove('style'); |
| 460 expect(attributes.length, 3); | 460 expect(attributes.length, 3); |
| 461 dataAttributes['foo3'] = 'baz3'; | 461 dataAttributes['foo3'] = 'baz3'; |
| 462 expect(dataAttributes.length, 2); | 462 expect(dataAttributes.length, 2); |
| 463 expect(attributes.length, 4); | 463 expect(attributes.length, 4); |
| 464 attributes['style'] = 'width: 300px;'; | 464 attributes['style'] = 'width: 300px;'; |
| 465 expect(attributes.length, 5); | 465 expect(attributes.length, 5); |
| 466 }); | 466 }); |
| 467 }); | 467 }); |
| 468 | 468 |
| 469 group('elements', () { | 469 group('children', () { |
| 470 test('is a subset of nodes', () { | 470 test('is a subset of nodes', () { |
| 471 var el = new Element.html("<div>Foo<br/><img/></div>"); | 471 var el = new Element.html("<div>Foo<br/><img/></div>"); |
| 472 expect(el.nodes.length, 3); | 472 expect(el.nodes.length, 3); |
| 473 expect(el.elements.length, 2); | 473 expect(el.children.length, 2); |
| 474 expect(el.nodes[1], el.elements[0]); | 474 expect(el.nodes[1], el.children[0]); |
| 475 expect(el.nodes[2], el.elements[1]); | 475 expect(el.nodes[2], el.children[1]); |
| 476 }); | 476 }); |
| 477 | 477 |
| 478 test('changes when an element is added to nodes', () { | 478 test('changes when an element is added to nodes', () { |
| 479 var el = new Element.html("<div>Foo<br/><img/></div>"); | 479 var el = new Element.html("<div>Foo<br/><img/></div>"); |
| 480 el.nodes.add(new Element.tag('hr')); | 480 el.nodes.add(new Element.tag('hr')); |
| 481 expect(el.elements.length, 3); | 481 expect(el.children.length, 3); |
| 482 expect(el.elements[2], isHRElement); | 482 expect(el.children[2], isHRElement); |
| 483 expect(el.nodes[3], el.elements[2]); | 483 expect(el.nodes[3], el.children[2]); |
| 484 }); | 484 }); |
| 485 | 485 |
| 486 test('changes nodes when an element is added', () { | 486 test('changes nodes when an element is added', () { |
| 487 var el = new Element.html("<div>Foo<br/><img/></div>"); | 487 var el = new Element.html("<div>Foo<br/><img/></div>"); |
| 488 el.elements.add(new Element.tag('hr')); | 488 el.children.add(new Element.tag('hr')); |
| 489 expect(el.nodes.length, 4); | 489 expect(el.nodes.length, 4); |
| 490 expect(el.nodes[3], isHRElement); | 490 expect(el.nodes[3], isHRElement); |
| 491 expect(el.elements[2], el.nodes[3]); | 491 expect(el.children[2], el.nodes[3]); |
| 492 }); | 492 }); |
| 493 | 493 |
| 494 test('last', () { | 494 test('last', () { |
| 495 var el = makeElementWithChildren(); | 495 var el = makeElementWithChildren(); |
| 496 expect(el.elements.last, isInputElement); | 496 expect(el.children.last, isInputElement); |
| 497 }); | 497 }); |
| 498 | 498 |
| 499 test('forEach', () { | 499 test('forEach', () { |
| 500 var els = []; | 500 var els = []; |
| 501 var el = makeElementWithChildren(); | 501 var el = makeElementWithChildren(); |
| 502 el.elements.forEach((n) => els.add(n)); | 502 el.children.forEach((n) => els.add(n)); |
| 503 expect(els[0], isBRElement); | 503 expect(els[0], isBRElement); |
| 504 expect(els[1], isImageElement); | 504 expect(els[1], isImageElement); |
| 505 expect(els[2], isInputElement); | 505 expect(els[2], isInputElement); |
| 506 }); | 506 }); |
| 507 | 507 |
| 508 test('filter', () { | 508 test('filter', () { |
| 509 var filtered = makeElementWithChildren().elements. | 509 var filtered = makeElementWithChildren().children. |
| 510 filter((n) => n is ImageElement); | 510 filter((n) => n is ImageElement); |
| 511 expect(1, filtered.length); | 511 expect(1, filtered.length); |
| 512 expect(filtered[0], isImageElement); | 512 expect(filtered[0], isImageElement); |
| 513 expect(filtered, isElementList); | 513 expect(filtered, isElementList); |
| 514 }); | 514 }); |
| 515 | 515 |
| 516 test('every', () { | 516 test('every', () { |
| 517 var el = makeElementWithChildren(); | 517 var el = makeElementWithChildren(); |
| 518 expect(el.elements.every((n) => n is Element), isTrue); | 518 expect(el.children.every((n) => n is Element), isTrue); |
| 519 expect(el.elements.every((n) => n is InputElement), isFalse); | 519 expect(el.children.every((n) => n is InputElement), isFalse); |
| 520 }); | 520 }); |
| 521 | 521 |
| 522 test('some', () { | 522 test('some', () { |
| 523 var el = makeElementWithChildren(); | 523 var el = makeElementWithChildren(); |
| 524 expect(el.elements.some((n) => n is InputElement), isTrue); | 524 expect(el.children.some((n) => n is InputElement), isTrue); |
| 525 expect(el.elements.some((n) => n is svg.SvgElement), isFalse); | 525 expect(el.children.some((n) => n is svg.SvgElement), isFalse); |
| 526 }); | 526 }); |
| 527 | 527 |
| 528 test('isEmpty', () { | 528 test('isEmpty', () { |
| 529 expect(makeElement().elements.isEmpty, isTrue); | 529 expect(makeElement().children.isEmpty, isTrue); |
| 530 expect(makeElementWithChildren().elements.isEmpty, isFalse); | 530 expect(makeElementWithChildren().children.isEmpty, isFalse); |
| 531 }); | 531 }); |
| 532 | 532 |
| 533 test('length', () { | 533 test('length', () { |
| 534 expect(makeElement().elements.length, 0); | 534 expect(makeElement().children.length, 0); |
| 535 expect(makeElementWithChildren().elements.length, 3); | 535 expect(makeElementWithChildren().children.length, 3); |
| 536 }); | 536 }); |
| 537 | 537 |
| 538 test('[]', () { | 538 test('[]', () { |
| 539 var el = makeElementWithChildren(); | 539 var el = makeElementWithChildren(); |
| 540 expect(el.elements[0], isBRElement); | 540 expect(el.children[0], isBRElement); |
| 541 expect(el.elements[1], isImageElement); | 541 expect(el.children[1], isImageElement); |
| 542 expect(el.elements[2], isInputElement); | 542 expect(el.children[2], isInputElement); |
| 543 }); | 543 }); |
| 544 | 544 |
| 545 test('[]=', () { | 545 test('[]=', () { |
| 546 var el = makeElementWithChildren(); | 546 var el = makeElementWithChildren(); |
| 547 el.elements[1] = new Element.tag('hr'); | 547 el.children[1] = new Element.tag('hr'); |
| 548 expect(el.elements[0], isBRElement); | 548 expect(el.children[0], isBRElement); |
| 549 expect(el.elements[1], isHRElement); | 549 expect(el.children[1], isHRElement); |
| 550 expect(el.elements[2], isInputElement); | 550 expect(el.children[2], isInputElement); |
| 551 }); | 551 }); |
| 552 | 552 |
| 553 test('add', () { | 553 test('add', () { |
| 554 var el = makeElement(); | 554 var el = makeElement(); |
| 555 el.elements.add(new Element.tag('hr')); | 555 el.children.add(new Element.tag('hr')); |
| 556 expect(el.elements.last, isHRElement); | 556 expect(el.children.last, isHRElement); |
| 557 }); | 557 }); |
| 558 | 558 |
| 559 test('addLast', () { | 559 test('addLast', () { |
| 560 var el = makeElement(); | 560 var el = makeElement(); |
| 561 el.elements.addLast(new Element.tag('hr')); | 561 el.children.addLast(new Element.tag('hr')); |
| 562 expect(el.elements.last, isHRElement); | 562 expect(el.children.last, isHRElement); |
| 563 }); | 563 }); |
| 564 | 564 |
| 565 test('iterator', () { | 565 test('iterator', () { |
| 566 var els = []; | 566 var els = []; |
| 567 var el = makeElementWithChildren(); | 567 var el = makeElementWithChildren(); |
| 568 for (var subel in el.elements) { | 568 for (var subel in el.children) { |
| 569 els.add(subel); | 569 els.add(subel); |
| 570 } | 570 } |
| 571 expect(els[0], isBRElement); | 571 expect(els[0], isBRElement); |
| 572 expect(els[1], isImageElement); | 572 expect(els[1], isImageElement); |
| 573 expect(els[2], isInputElement); | 573 expect(els[2], isInputElement); |
| 574 }); | 574 }); |
| 575 | 575 |
| 576 test('addAll', () { | 576 test('addAll', () { |
| 577 var el = makeElementWithChildren(); | 577 var el = makeElementWithChildren(); |
| 578 el.elements.addAll([ | 578 el.children.addAll([ |
| 579 new Element.tag('span'), | 579 new Element.tag('span'), |
| 580 new Element.tag('a'), | 580 new Element.tag('a'), |
| 581 new Element.tag('h1') | 581 new Element.tag('h1') |
| 582 ]); | 582 ]); |
| 583 expect(el.elements[0], isBRElement); | 583 expect(el.children[0], isBRElement); |
| 584 expect(el.elements[1], isImageElement); | 584 expect(el.children[1], isImageElement); |
| 585 expect(el.elements[2], isInputElement); | 585 expect(el.children[2], isInputElement); |
| 586 expect(el.elements[3], isSpanElement); | 586 expect(el.children[3], isSpanElement); |
| 587 expect(el.elements[4], isAnchorElement); | 587 expect(el.children[4], isAnchorElement); |
| 588 expect(el.elements[5], isHeadingElement); | 588 expect(el.children[5], isHeadingElement); |
| 589 }); | 589 }); |
| 590 | 590 |
| 591 test('clear', () { | 591 test('clear', () { |
| 592 var el = makeElementWithChildren(); | 592 var el = makeElementWithChildren(); |
| 593 el.elements.clear(); | 593 el.children.clear(); |
| 594 expect(el.elements, equals([])); | 594 expect(el.children, equals([])); |
| 595 }); | 595 }); |
| 596 | 596 |
| 597 test('removeLast', () { | 597 test('removeLast', () { |
| 598 var el = makeElementWithChildren(); | 598 var el = makeElementWithChildren(); |
| 599 expect(el.elements.removeLast(), isInputElement); | 599 expect(el.children.removeLast(), isInputElement); |
| 600 expect(el.elements.length, 2); | 600 expect(el.children.length, 2); |
| 601 expect(el.elements.removeLast(), isImageElement); | 601 expect(el.children.removeLast(), isImageElement); |
| 602 expect(el.elements.length, 1); | 602 expect(el.children.length, 1); |
| 603 }); | 603 }); |
| 604 | 604 |
| 605 test('getRange', () { | 605 test('getRange', () { |
| 606 var el = makeElementWithChildren(); | 606 var el = makeElementWithChildren(); |
| 607 expect(el.elements.getRange(1, 1), isElementList); | 607 expect(el.children.getRange(1, 1), isElementList); |
| 608 }); | 608 }); |
| 609 }); | 609 }); |
| 610 | 610 |
| 611 group('queryAll', () { | 611 group('queryAll', () { |
| 612 List<Element> getQueryAll() { | 612 List<Element> getQueryAll() { |
| 613 return new Element.html(""" | 613 return new Element.html(""" |
| 614 <div> | 614 <div> |
| 615 <hr/> | 615 <hr/> |
| 616 <a class='q' href='http://dartlang.org'>Dart!</a> | 616 <a class='q' href='http://dartlang.org'>Dart!</a> |
| 617 <p> | 617 <p> |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 718 testUnsupported('removeRange', () => getQueryAll().removeRange(0, 1)); | 718 testUnsupported('removeRange', () => getQueryAll().removeRange(0, 1)); |
| 719 | 719 |
| 720 testUnsupported('insertangeRange', () => getQueryAll().insertRange(0, 1)); | 720 testUnsupported('insertangeRange', () => getQueryAll().insertRange(0, 1)); |
| 721 | 721 |
| 722 testUnsupported('clear', () => getQueryAll().clear()); | 722 testUnsupported('clear', () => getQueryAll().clear()); |
| 723 | 723 |
| 724 testUnsupported('removeLast', () => getQueryAll().removeLast()); | 724 testUnsupported('removeLast', () => getQueryAll().removeLast()); |
| 725 }); | 725 }); |
| 726 | 726 |
| 727 group('_ElementList', () { | 727 group('_ElementList', () { |
| 728 List<Element> makeElList() => makeElementWithChildren().elements; | 728 List<Element> makeElList() => makeElementWithChildren().children; |
| 729 | 729 |
| 730 test('filter', () { | 730 test('filter', () { |
| 731 var filtered = makeElList().filter((n) => n is ImageElement); | 731 var filtered = makeElList().filter((n) => n is ImageElement); |
| 732 expect(filtered.length, 1); | 732 expect(filtered.length, 1); |
| 733 expect(filtered[0], isImageElement); | 733 expect(filtered[0], isImageElement); |
| 734 expect(filtered, isElementList); | 734 expect(filtered, isElementList); |
| 735 }); | 735 }); |
| 736 | 736 |
| 737 test('getRange', () { | 737 test('getRange', () { |
| 738 var range = makeElList().getRange(1, 2); | 738 var range = makeElList().getRange(1, 2); |
| 739 expect(range, isElementList); | 739 expect(range, isElementList); |
| 740 expect(range[0], isImageElement); | 740 expect(range[0], isImageElement); |
| 741 expect(range[1], isInputElement); | 741 expect(range[1], isInputElement); |
| 742 }); | 742 }); |
| 743 }); | 743 }); |
| 744 } | 744 } |
| OLD | NEW |