| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file | |
| import 'dart:html'; | |
| import 'package:expect/legacy/minitest.dart'; // ignore: deprecated_member_use_from_same_package | |
| main() { | |
| var isElement = predicate((x) => x is Element, 'is an Element'); | |
| var isCanvasElement = predicate( | |
| (x) => x is CanvasElement, | |
| 'is a CanvasElement', | |
| ); | |
| var isDivElement = predicate((x) => x is DivElement, 'is a isDivElement'); | |
| var div = new DivElement(); | |
| div.id = 'test'; | |
| document.body!.nodes.add(div); | |
| void initDiv() { | |
| var style = div.style; | |
| style | |
| ..padding = '4px' | |
| ..border = '0px solid #fff' | |
| ..margin = '6px' | |
| ..height = '10px' | |
| ..width = '11px' | |
| ..boxSizing = 'content-box' | |
| ..overflow = 'visible'; | |
| } | |
| div.nodes.addAll([ | |
| new DivElement(), | |
| new CanvasElement(), | |
| new DivElement(), | |
| new Text('Hello'), | |
| new DivElement(), | |
| new Text('World'), | |
| new CanvasElement(), | |
| ]); | |
| group('dimensions', () { | |
| setUp(initDiv); | |
| test('contentEdge.height', () { | |
| var all1 = querySelectorAll('#test'); | |
| expect(all1.contentEdge.height, 10); | |
| expect(all1[0].getComputedStyle().getPropertyValue('height'), '10px'); | |
| all1.contentEdge.height = new Dimension.px(600); | |
| all1.contentEdge.height = 600; | |
| expect(all1.contentEdge.height, 600); | |
| expect(all1[0].getComputedStyle().getPropertyValue('height'), '600px'); | |
| all1[0].style.visibility = 'hidden'; | |
| expect(all1.contentEdge.height, 600); | |
| all1[0].style.visibility = 'visible'; | |
| // If user passes in a negative number, set height to 0. | |
| all1.contentEdge.height = new Dimension.px(-1); | |
| expect(all1.contentEdge.height, 0); | |
| // Adding padding or border shouldn't affect the height for | |
| // non-box-sizing. | |
| div.style.padding = '20pc'; | |
| expect(all1.contentEdge.height, 0); | |
| div.style.border = '2px solid #fff'; | |
| expect(all1.contentEdge.height, 0); | |
| }); | |
| test('contentEdge.height with border-box', () { | |
| var all1 = document.querySelectorAll('#test'); | |
| div.style.boxSizing = 'border-box'; | |
| expect(all1.contentEdge.height, 2); | |
| div.style.padding = '20pc'; | |
| expect(all1.contentEdge.height, 0); | |
| div.style.border = '2px solid #fff'; | |
| expect(all1.contentEdge.height, 0); | |
| }); | |
| test('contentEdge.width', () { | |
| var all1 = document.querySelectorAll('#test'); | |
| expect(all1.contentEdge.width, 11); | |
| expect(all1[0].getComputedStyle().getPropertyValue('width'), '11px'); | |
| all1.contentEdge.width = new Dimension.px(600); | |
| expect(all1.contentEdge.width, 600); | |
| expect(all1[0].getComputedStyle().getPropertyValue('width'), '600px'); | |
| all1[0].style.visibility = 'hidden'; | |
| expect(all1.contentEdge.width, 600); | |
| all1[0].style.visibility = 'visible'; | |
| // If user passes in a negative number, set width to 0. | |
| all1.contentEdge.width = new Dimension.px(-1); | |
| expect(all1.contentEdge.width, 0); | |
| // Adding padding or border shouldn't affect the width. | |
| div.style.padding = '20pc'; | |
| expect(all1.contentEdge.width, 0); | |
| div.style.border = '2px solid #fff'; | |
| expect(all1.contentEdge.width, 0); | |
| }); | |
| test('contentEdge.width with border-box', () { | |
| var all1 = document.querySelectorAll('#test'); | |
| div.style.boxSizing = 'border-box'; | |
| expect(all1.contentEdge.width, 3); | |
| div.style.padding = '20pc'; | |
| expect(all1.contentEdge.width, 0); | |
| div.style.border = '2px solid #fff'; | |
| expect(all1.contentEdge.width, 0); | |
| }); | |
| test('paddingEdge.height', () { | |
| var all1 = document.querySelectorAll('#test'); | |
| expect(all1.paddingEdge.height, 18); | |
| all1[0].style.visibility = 'hidden'; | |
| expect(all1.paddingEdge.height, 18); | |
| all1[0].style.visibility = 'visible'; | |
| // Adding border shouldn't affect the paddingEdge.height. | |
| div.style.border = '2px solid #fff'; | |
| expect(all1.paddingEdge.height, 18); | |
| // Adding padding should affect the paddingEdge.height. | |
| div.style.padding = '20pc'; | |
| expect(all1.paddingEdge.height, 650); | |
| }); | |
| test('paddingEdge.height with border-box', () { | |
| var all1 = document.querySelectorAll('#test'); | |
| div.style.boxSizing = 'border-box'; | |
| expect(all1.paddingEdge.height, 10); | |
| div.style.padding = '20pc'; | |
| expect(all1.paddingEdge.height, 640); | |
| div.style.border = '2px solid #fff'; | |
| expect(all1.paddingEdge.height, 640); | |
| }); | |
| test('paddingEdge.width', () { | |
| var all1 = document.querySelectorAll('#test'); | |
| expect(all1.paddingEdge.width, 19); | |
| all1[0].style.visibility = 'hidden'; | |
| expect(all1.paddingEdge.width, 19); | |
| all1[0].style.visibility = 'visible'; | |
| // Adding border shouldn't affect the width. | |
| div.style.border = '2px solid #fff'; | |
| expect(all1.paddingEdge.width, 19); | |
| // Adding padding should affect the paddingEdge.width. | |
| div.style.padding = '20pc'; | |
| expect(all1.paddingEdge.width, 651); | |
| }); | |
| test('paddingEdge.width with border-box', () { | |
| var all1 = document.querySelectorAll('#test'); | |
| div.style.boxSizing = 'border-box'; | |
| expect(all1.paddingEdge.width, 11); | |
| div.style.padding = '20pc'; | |
| expect(all1.paddingEdge.width, 640); | |
| div.style.border = '2px solid #fff'; | |
| expect(all1.paddingEdge.width, 640); | |
| }); | |
| test('borderEdge.height and marginEdge.height', () { | |
| var all1 = document.querySelectorAll('#test'); | |
| expect(div.borderEdge.height, 18); | |
| expect(div.marginEdge.height, 30); | |
| expect(all1.borderEdge.height, 18); | |
| expect(all1.marginEdge.height, 30); | |
| all1[0].style.visibility = 'hidden'; | |
| expect(all1.borderEdge.height, 18); | |
| all1[0].style.visibility = 'visible'; | |
| // Adding border should affect the borderEdge.height. | |
| div.style.border = '2px solid #fff'; | |
| expect(all1.borderEdge.height, 22); | |
| // Adding padding should affect the borderEdge.height. | |
| div.style.padding = '20pc'; | |
| expect(all1.borderEdge.height, 654); | |
| expect(all1.marginEdge.height, 666); | |
| }); | |
| test('borderEdge.height and marginEdge.height with border-box', () { | |
| var all1 = document.querySelectorAll('#test'); | |
| div.style.boxSizing = 'border-box'; | |
| expect(all1.borderEdge.height, 10); | |
| expect(all1.marginEdge.height, 22); | |
| div.style.padding = '20pc'; | |
| expect(all1.borderEdge.height, 640); | |
| expect(all1.marginEdge.height, 652); | |
| div.style.border = '2px solid #fff'; | |
| expect(all1.borderEdge.height, 644); | |
| expect(all1.marginEdge.height, 656); | |
| }); | |
| test('borderEdge.width and marginEdge.width', () { | |
| var all1 = document.querySelectorAll('#test'); | |
| expect(all1.borderEdge.width, 19); | |
| expect(all1.marginEdge.width, 31); | |
| // Adding border should affect the width. | |
| div.style.border = '2px solid #fff'; | |
| expect(all1.borderEdge.width, 23); | |
| // Adding padding should affect the borderEdge.width. | |
| div.style.padding = '20pc'; | |
| expect(all1.borderEdge.width, 655); | |
| expect(all1.marginEdge.width, 667); | |
| }); | |
| test('borderEdge.width and marginEdge.width with border-box', () { | |
| var all1 = document.querySelectorAll('#test'); | |
| div.style.boxSizing = 'border-box'; | |
| expect(all1.borderEdge.width, 11); | |
| expect(all1.marginEdge.width, 23); | |
| div.style.padding = '20pc'; | |
| expect(all1.borderEdge.width, 640); | |
| expect(all1.marginEdge.width, 652); | |
| div.style.border = '2px solid #fff'; | |
| expect(all1.borderEdge.width, 644); | |
| expect(all1.marginEdge.width, 656); | |
| }); | |
| test('left and top', () { | |
| div.style.border = '1px solid #fff'; | |
| div.style.margin = '6px 7px'; | |
| div.style.padding = '4px 5px'; | |
| var all1 = document.querySelectorAll('#test'); | |
| expect(all1.borderEdge.left, all1[0].getBoundingClientRect().left); | |
| expect(all1.borderEdge.top, all1[0].getBoundingClientRect().top); | |
| expect( | |
| all1.contentEdge.left, | |
| all1[0].getBoundingClientRect().left + 1 + 5, | |
| ); | |
| expect(all1.contentEdge.top, all1[0].getBoundingClientRect().top + 1 + 4); | |
| expect(all1.marginEdge.left, all1[0].getBoundingClientRect().left - 7); | |
| expect(all1.marginEdge.top, all1[0].getBoundingClientRect().top - 6); | |
| expect(all1.paddingEdge.left, all1[0].getBoundingClientRect().left + 1); | |
| expect(all1.paddingEdge.top, all1[0].getBoundingClientRect().top + 1); | |
| }); | |
| test('setHeight ElementList', () { | |
| div.style.border = '1px solid #fff'; | |
| div.style.margin = '6px 7px'; | |
| div.style.padding = '4px 5px'; | |
| var all1 = document.querySelectorAll('div'); | |
| all1.contentEdge.height = new Dimension.px(200); | |
| all1.contentEdge.height = 200; | |
| for (Element elem in all1) { | |
| expect(elem.contentEdge.height, 200); | |
| } | |
| all1.contentEdge.height = new Dimension.px(10); | |
| for (Element elem in all1) { | |
| expect(elem.contentEdge.height, 10); | |
| } | |
| }); | |
| }); | |
| } |