| Index: samples/tests/samples/src/lib/layout/LayoutTest.dart
|
| ===================================================================
|
| --- samples/tests/samples/src/lib/layout/LayoutTest.dart (revision 0)
|
| +++ samples/tests/samples/src/lib/layout/LayoutTest.dart (revision 0)
|
| @@ -0,0 +1,188 @@
|
| +// Copyright (c) 2011, 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.
|
| +
|
| +#library('layout_tests');
|
| +
|
| +#import('dart:html');
|
| +#import('../../../../../ui_lib/base/base.dart');
|
| +#import('../../../../../ui_lib/layout/layout.dart');
|
| +#import('../../../../../ui_lib/view/view.dart');
|
| +#import('../../../../../ui_lib/util/utilslib.dart');
|
| +#import('../../../../../../client/testing/unittest/unittest.dart');
|
| +
|
| +#source('GridLayoutDemo.dart');
|
| +#source('GridExamples.dart');
|
| +#source('CSS.dart');
|
| +
|
| +// TODO(jmesserly): these tests would be easier to work with if they were WebKit
|
| +// layout tests. The way DumpRenderTree works is exactly what we want for
|
| +// testing layout: run the example and then print the element tree with metrics.
|
| +// The UnitTestSuite wrapper gets in our way here, because you can't "see" the
|
| +// test layout visually when you're debugging.
|
| +// See these links for more info:
|
| +// http://www.webkit.org/quality/testwriting.html
|
| +// http://www.w3.org/Style/CSS/Test/guidelines.html
|
| +
|
| +// TODO(jmesserly): need parser unit tests, especially error conditions
|
| +
|
| +/**
|
| + * Tests the grid layout. Currently based on examples from the spec at:
|
| + * [http://dev.w3.org/csswg/css3-grid-align/]
|
| + */
|
| +main() {
|
| + addGridStyles('400px', '400px');
|
| +
|
| + asyncTest('Spec Example 1', 1, () {
|
| + verifyExample('1 Adaptive Layouts', {
|
| + 'title': [0, 0, 144, 24],
|
| + 'score': [0, 376, 144, 24],
|
| + 'stats': [0, 24, 144, 24],
|
| + 'board': [144, 0, 256, 376],
|
| + 'controls': [185, 376, 174, 24],
|
| + });
|
| + });
|
| +
|
| + asyncTest('Spec Example 2a', 1, () {
|
| + verifyExample('2a Source Independence: Portrait', {
|
| + 'title': [0, 0, 144, 24],
|
| + 'score': [0, 24, 144, 24],
|
| + 'stats': [144, 0, 256, 48],
|
| + 'board': [0, 48, 400, 328],
|
| + 'controls': [0, 376, 400, 24],
|
| + });
|
| + });
|
| +
|
| + asyncTest('Spec Example 2b', 1, () {
|
| + verifyExample('2b Source Independence: Landscape', {
|
| + 'title': [0, 0, 144, 24],
|
| + 'score': [0, 376, 144, 24],
|
| + 'stats': [0, 24, 144, 352],
|
| + 'board': [144, 0, 256, 376],
|
| + 'controls': [144, 376, 256, 24],
|
| + });
|
| + });
|
| +
|
| + asyncTest('Spec Example 3', 1, () {
|
| + verifyExample('3 Grid Layering of Elements', {
|
| + 'lower-label': [0, 0, 204, 24],
|
| + 'track': [204, 0, 144, 24],
|
| + 'upper-label': [348, 0, 204, 24],
|
| + 'lower-fill': [204, 0, 72, 24],
|
| + 'upper-fill': [276, 0, 72, 24],
|
| + 'thumb': [204, 0, 144, 24],
|
| + });
|
| + });
|
| +
|
| + asyncTest('Spec Example 5', 1, () {
|
| + verifyExample('5 Grid Lines', {
|
| + 'item1': [125, 0, 275, 400],
|
| + });
|
| + });
|
| +
|
| + asyncTest('Spec Example 6', 1, () {
|
| + verifyExample('6 Grid Lines', {
|
| + 'item1': [125, 0, 275, 400],
|
| + });
|
| + });
|
| +
|
| + asyncTest('Spec Example 7', 1, () {
|
| + verifyExample('7 Grid Cells', {
|
| + 'item2': [0, 50, 125, 24],
|
| + 'item3': [-19, 326, 144, 24],
|
| + });
|
| + });
|
| +
|
| + asyncTest('Spec Example 11a', 1, () {
|
| + verifyExample('11a Starting and Ending Grid Lines', {
|
| + 'item': [0, 0, 400, 400],
|
| + });
|
| + });
|
| +
|
| + asyncTest('Spec Example 11b', 1, () {
|
| + verifyExample('11b Starting and Ending Grid Lines', {
|
| + 'item': [0, 0, 400, 400],
|
| + });
|
| + });
|
| +
|
| + asyncTest('Spec Example 12', 1, () {
|
| + verifyExample('12 Repeating Columns and Rows', {
|
| + 'col2': [10, 0, 88, 400],
|
| + 'col4': [108, 0, 87, 400],
|
| + 'col6': [205, 0, 88, 400],
|
| + 'col8': [303, 0, 87, 400],
|
| + });
|
| + });
|
| +
|
| + asyncTest('Spec Example 17', 1, () {
|
| + verifyExample('17 Anonymous Grid Cells', {
|
| + 'header': [0, 0, 400, 24],
|
| + 'main': [0, 24, 400, 352],
|
| + 'footer': [0, 376, 400, 24],
|
| + });
|
| + });
|
| +
|
| + asyncTest('Spec Example 20', 1, () {
|
| + verifyExample('20 Implicit Columns and Rows', {
|
| + 'A': [0, 0, 104, 24],
|
| + 'B': [104, 0, 104, 44],
|
| + 'C': [0, 20, 104, 24],
|
| + });
|
| + });
|
| +
|
| + asyncTest('Spec Example 22', 1, () {
|
| + verifyExample('22 Grid Item Alignment', {
|
| + 'A': [0, 0, 104, 24],
|
| + 'B': [296, 376, 104, 24],
|
| + });
|
| + });
|
| +
|
| + asyncTest('Spec Example 23', 1, () {
|
| + verifyExample('23 Drawing Order of Grid Items', {
|
| + 'A': [0, 376, 400, 24],
|
| + 'B': [0, 0, 200, 200],
|
| + 'C': [200, 0, 200, 24],
|
| + 'D': [296, 200, 104, 24],
|
| + 'E': [148, 188, 104, 24],
|
| + });
|
| + });
|
| +}
|
| +
|
| +// Note: to debug failures, best bet is to use GridLayoutDemo to run an
|
| +// individual asyncTest and see the resulting layout.
|
| +
|
| +usingGrid(String example, void test_(View grid)) {
|
| + final grid = createGrid(GridExamples.styles[example]);
|
| + grid.addToDocument(document.body);
|
| + window.setTimeout(() {
|
| + test_(grid);
|
| + window.setTimeout(() {
|
| + grid.removeFromDocument();
|
| + callbackDone();
|
| + }, 0);
|
| + }, 0);
|
| +}
|
| +
|
| +verifyGrid(String example, [Map expected = null]) {
|
| + printMetrics(example);
|
| + if (expected == null) {
|
| + return;
|
| + }
|
| +
|
| + for (String name in expected.getKeys()) {
|
| + final values = expected[name];
|
| + final node = document.body.query('#$name');
|
| + Expect.isNotNull(node);
|
| + node.rect.then((rect) {
|
| + final offset = rect.offset;
|
| + Expect.equals(values[0], offset.left);
|
| + Expect.equals(values[1], offset.top);
|
| + Expect.equals(values[2], offset.width);
|
| + Expect.equals(values[3], offset.height);
|
| + });
|
| + }
|
| +}
|
| +
|
| +verifyExample(String example, [Map expected = null]) {
|
| + usingGrid(example, (grid) => verifyGrid(example, expected));
|
| +}
|
|
|