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

Side by Side Diff: tests/html/element_test.dart

Issue 18060010: Added offset document measurement to Element. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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:async'; 8 import 'dart:async';
9 import 'dart:html'; 9 import 'dart:html';
10 import 'dart:svg' as svg; 10 import 'dart:svg' as svg;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 test('computedStyle', () { 52 test('computedStyle', () {
53 final element = document.body; 53 final element = document.body;
54 var style = element.getComputedStyle(); 54 var style = element.getComputedStyle();
55 expect(style.getPropertyValue('left'), 'auto'); 55 expect(style.getPropertyValue('left'), 'auto');
56 }); 56 });
57 57
58 test('client position synchronous', () { 58 test('client position synchronous', () {
59 final container = new Element.tag("div"); 59 final container = new Element.tag("div");
60 container.style.position = 'absolute'; 60 container.style.position = 'absolute';
61 container.style.top = '8px'; 61 container.style.top = '8px';
62 container.style.left = '8px'; 62 container.style.left = '9px';
63 final element = new Element.tag("div"); 63 final element = new Element.tag("div");
64 element.style.width = '200px'; 64 element.style.width = '200px';
65 element.style.height = '200px'; 65 element.style.height = '200px';
66 container.children.add(element); 66 container.children.add(element);
67 document.body.children.add(container); 67 document.body.children.add(container);
68 68
69 expect(element.client.width, greaterThan(100)); 69 expect(element.client.width, greaterThan(100));
70 expect(element.client.height, greaterThan(100)); 70 expect(element.client.height, greaterThan(100));
71 expect(element.offset.width, greaterThan(100)); 71 expect(element.offset.width, greaterThan(100));
72 expect(element.offset.height, greaterThan(100)); 72 expect(element.offset.height, greaterThan(100));
73 expect(element.scrollWidth, greaterThan(100)); 73 expect(element.scrollWidth, greaterThan(100));
74 expect(element.scrollHeight, greaterThan(100)); 74 expect(element.scrollHeight, greaterThan(100));
75 expect(element.getBoundingClientRect().left, 8); 75 expect(element.getBoundingClientRect().left, 9);
76 expect(element.getBoundingClientRect().top, 8); 76 expect(element.getBoundingClientRect().top, 8);
77
78 expect(element.documentOffset.x, 9);
79 expect(element.documentOffset.y, 8);
77 container.remove(); 80 container.remove();
78 }); 81 });
79 }); 82 });
80 83
81 group('constructors', () { 84 group('constructors', () {
82 test('error', () { 85 test('error', () {
83 expect(() => new Element.html('<br/><br/>'), throwsArgumentError); 86 expect(() => new Element.html('<br/><br/>'), throwsArgumentError);
84 }); 87 });
85 88
86 test('.html has no parent', () => 89 test('.html has no parent', () =>
(...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 expect(filtered, isElementIterable); 721 expect(filtered, isElementIterable);
719 }); 722 });
720 723
721 test('sublist', () { 724 test('sublist', () {
722 var range = makeElList().sublist(1, 3); 725 var range = makeElList().sublist(1, 3);
723 expect(range, isElementList); 726 expect(range, isElementList);
724 expect(range[0], isImageElement); 727 expect(range[0], isImageElement);
725 expect(range[1], isInputElement); 728 expect(range[1], isInputElement);
726 }); 729 });
727 }); 730 });
731 void initPage() {
732 var level1 = new UListElement()
733 ..classes.add('level-1')
734 ..children.add(new LIElement()..innerHtml = 'I');
735 var itemii = new LIElement()
736 ..classes.add('item-ii')
737 ..style.position = 'relative'
738 ..style.top = '4px'
739 ..innerHtml = 'II';
740 level1.children.add(itemii);
741 var level2 = new UListElement();
742 itemii.children.add(level2);
743 var itema = new LIElement()
744 ..classes.add('item-a')
745 ..innerHtml = 'A';
746 var item1 = new LIElement()
747 ..classes.add('item-1')
748 ..innerHtml = '1';
749 var item2 = new LIElement()
750 ..classes.add('item-2')
751 ..innerHtml = '2';
752 var level3 = new UListElement()
753 ..children.addAll([item1, item2]);
754 var itemb = new LIElement()
755 ..classes.add('item-b')
756 ..style.position = 'relative'
757 ..style.top = '20px'
758 ..style.left = '150px'
759 ..innerHtml = 'B'
760 ..children.add(level3);
761 level2.children.addAll([itema, itemb, new LIElement()..innerHtml = 'C']);
762 document.body.append(level1);
763
764 var bar = new DivElement()..classes.add('bar');
765 var style = bar.style;
766 style..position = 'absolute'
767 ..top = '8px'
768 ..left = '90px';
769 var baz = new DivElement()..classes.add('baz');
770 style = baz.style;
771 style..position = 'absolute'
772 ..top = '600px'
773 ..left = '7000px';
774 bar.children.add(baz);
775
776 var quux = new DivElement()..classes.add('quux');
777 var qux = new DivElement()
778 ..classes.add('qux')
779 ..children.add(quux);
780
781 document.body.append(bar);
782 document.body.append(qux);
783 }
784
785 group('offset', () {
786 setUp(initPage);
787
788 test('offsetTo', () {
789 var itema = query('.item-a');
790 var itemb = query('.item-b');
791 var item1 = query('.item-1');
792 var itemii = query('.item-ii');
793 var level1 = query('.level-1');
794 var baz = query('.baz');
795 var bar = query('.bar');
796 var qux = query('.qux');
797 var quux = query('.quux');
798
799 var point = itema.offsetTo(itemii);
800 expect(point.x, 40);
801 expect(point.y, inInclusiveRange(17, 20));
802
803 expect(baz.offsetTo(bar).x, 7000);
804 expect(baz.offsetTo(bar).y, inInclusiveRange(599, 604));
805
806 qux.style.position = 'fixed';
807 expect(quux.offsetTo(qux).x, 0);
808 expect(quux.offsetTo(qux).y, 0);
809
810 point = item1.offsetTo(itemb);
811 expect(point.x, 40);
812 expect(point.y, inInclusiveRange(17, 20));
813 point = itemb.offsetTo(itemii);
814 expect(point.x, 190);
815 expect(point.y, inInclusiveRange(54, 60));
816 point = item1.offsetTo(itemii);
817 expect(point.x, 230);
818 expect(point.y, inInclusiveRange(74, 80));
819 });
820
821 test('documentOffset', () {
822 var bar = query('.bar');
823 var baz = query('.baz');
824 var qux = query('.qux');
825 var quux = query('.quux');
826 var itema = query('.item-a');
827 var itemb = query('.item-b');
828 var item1 = query('.item-1');
829 var itemii = query('.item-ii');
830
831 expect(itema.documentOffset.x, 88);
832 expect(itema.documentOffset.y, inInclusiveRange(119, 124));
833
834 expect(itemii.documentOffset.x, 48);
835 expect(itemii.documentOffset.y, inInclusiveRange(101, 105));
836
837 expect(itemb.documentOffset.x, 238);
838 expect(itemb.documentOffset.y, inInclusiveRange(157, 165));
839
840 expect(item1.documentOffset.x, 278);
841 expect(item1.documentOffset.y, inInclusiveRange(175, 182));
842
843 expect(bar.documentOffset.x, 90);
844 expect(bar.documentOffset.y, 8);
845
846 expect(baz.documentOffset.x, 7090);
847 expect(baz.documentOffset.y, 608);
848
849 expect(qux.documentOffset.x, 8);
850 expect(qux.documentOffset.y, inInclusiveRange(222, 232));
851
852 expect(quux.documentOffset.x, 8);
853 expect(quux.documentOffset.y, inInclusiveRange(222, 232));
854 });
855 });
856
728 } 857 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698