mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 12:24:24 +00:00
73b325c419
Change-Id: Ie7477c232f3f28c7fe597da7d5338ac27a2e33ee Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140201 Reviewed-by: Bob Nystrom <rnystrom@google.com>
260 lines
8.9 KiB
Dart
260 lines
8.9 KiB
Dart
// 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/minitest.dart';
|
|
|
|
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);
|
|
}
|
|
});
|
|
});
|
|
}
|