Files
sdk/tests/lib/html/element_dimensions_test.dart
T
Lasse R.H. Nielsen b464fc9037 Reland "Tweak expect.dart library."
This reverts commit cd2c566bcf.

Reason for revert: Updating to not remove field used by Flutter engine.

Original change's description:
> Revert "Tweak `expect.dart` library."
>
> This reverts commit ff5f391c0a.
>
> Reason for revert: The expect library is used by Flutter engine, and some of its tests use assertStatementsEnabled. There should be a migration path that doesn't require an atomic change, like adding the replacement api before removing the old one.
>
> Original change's description:
> > Tweak `expect.dart` library.
> >
> > Make API more consistent for a few methods.
> > Reduce the number of language features used in tests:
> > * Never iterating an iterable, always converting it
> >   using `.toList()` first and iterating using indices
> >   (fx `setEquals`).
> >   Also require a `List` in places where an `Iterable`
> >   wasn't necessary.
> > * Avoid doing complicated computations that are also
> >   used for the error message. Do simple check first,
> >   then recompute to get better error messages
> >   (fx `allDistinct`).
> >
> > Renamed some rarely used members for consistency
> > (`stringContainsInOrder`->`containsInOrder`,
> > where other string-contains functions just start
> > with `contains`, and `containsOneOf` -> `containsAny`
> > to match `Iterable.any` phrasing, and also it accepts
> > if containing at least one, not precisely one.)
> >
> > Removed a function that wasn't used anywhere.
> >
> > Moved `assertStatementsEnabled` to `variations.dart` as `asserts`.
> > Removed `typeAssertionsEnabled` and `checkedModeEnabled`. The former used in one place, where it was replaced with `checkedImplicitDowncasts` from `variations.dart`, the latter wasn't used anywhere.
> >
> > Deprecates `package:expect/minitest.dart`. It was never intended
> > to be used for new tests, only as a help to convert existing tests
> > written against `package:unit_test`.
> > All existing imports marked as `// ignore: deprecated_member_use`.
> >
> > Change-Id: I07e21d4c0f3ccf11b82ee34af2668fdbb22264d2
> > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352360
> > Reviewed-by: Slava Egorov <vegorov@google.com>
> > Reviewed-by: Ömer Ağacan <omersa@google.com>
> > Reviewed-by: Nate Bosch <nbosch@google.com>
> > Reviewed-by: Stephen Adams <sra@google.com>
> > Commit-Queue: Lasse Nielsen <lrn@google.com>
>
> Change-Id: I360b4347470a0bb2b63c3108e2b83ee2a771bf3f
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/362020
> Reviewed-by: Nate Bosch <nbosch@google.com>
> Reviewed-by: Ömer Ağacan <omersa@google.com>
> Reviewed-by: Stephen Adams <sra@google.com>
> Reviewed-by: Leaf Petersen <leafp@google.com>
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Commit-Queue: William Hesse <whesse@google.com>

CoreLibraryReviewExempt: Reland
Change-Id: I53db40edc0733842a008839c3913d51c885e39ab
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/362502
Reviewed-by: Alexander Thomas <athom@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
Reviewed-by: Ömer Ağacan <omersa@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
Reviewed-by: William Hesse <whesse@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
2024-04-26 15:28:26 +00:00

261 lines
9.0 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'; // 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);
}
});
});
}