| Index: test/codegen/lib/html/cssstyledeclaration_test.dart
|
| diff --git a/test/codegen/lib/html/cssstyledeclaration_test.dart b/test/codegen/lib/html/cssstyledeclaration_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b146085a835939d848b3f2017af25b50bce50a1b
|
| --- /dev/null
|
| +++ b/test/codegen/lib/html/cssstyledeclaration_test.dart
|
| @@ -0,0 +1,160 @@
|
| +// 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 CssStyleDeclarationTest;
|
| +import 'package:unittest/unittest.dart';
|
| +import 'package:unittest/html_config.dart';
|
| +import 'dart:html';
|
| +import 'dart:async';
|
| +import 'utils.dart';
|
| +
|
| +main() {
|
| + useHtmlConfiguration();
|
| +
|
| + createTestStyle() {
|
| + return new CssStyleDeclaration.css("""
|
| + color: blue;
|
| + width: 2px !important;
|
| + """);
|
| + };
|
| +
|
| + test('default constructor is empty', () {
|
| + var style = new CssStyleDeclaration();
|
| + expect(style.cssText, isEmpty);
|
| + expect(style.getPropertyPriority('color'), isEmpty);
|
| + expect(style.item(0), isEmpty);
|
| + expect(style, hasLength(0));
|
| + // These assertions throw a UnimplementedError in dartium:
|
| + // expect(style.parentRule, isNull);
|
| + // expect(style.getPropertyCssValue('color'), isNull);
|
| + // expect(style.getPropertyShorthand('color'), isNull);
|
| + });
|
| +
|
| + test('length is wrapped', () {
|
| + expect(createTestStyle(), hasLength(2));
|
| + });
|
| +
|
| + test('getPropertyPriority is wrapped', () {
|
| + var style = createTestStyle();
|
| + expect(style.getPropertyPriority("color"), isEmpty);
|
| + expect(style.getPropertyPriority("width"), equals("important"));
|
| + });
|
| +
|
| + test('removeProperty is wrapped', () {
|
| + var style = createTestStyle();
|
| + style.removeProperty("width");
|
| + expect(style.cssText.trim(),
|
| + equals("color: blue;"));
|
| + });
|
| +
|
| + test('CSS property empty getters and setters', () {
|
| + var style = createTestStyle();
|
| + expect(style.border, equals(""));
|
| +
|
| + style.border = "1px solid blue";
|
| + style.border = "";
|
| + expect(style.border, equals(""));
|
| +
|
| + style.border = "1px solid blue";
|
| + style.border = null;
|
| + expect(style.border, equals(""));
|
| + });
|
| +
|
| + test('CSS property getters and setters', () {
|
| + var style = createTestStyle();
|
| + expect(style.color, equals("blue"));
|
| + expect(style.width, equals("2px"));
|
| +
|
| + style.color = "red";
|
| + style.transform = "translate(10px, 20px)";
|
| +
|
| + expect(style.color, equals("red"));
|
| + expect(style.transform, equals("translate(10px, 20px)"));
|
| + });
|
| +
|
| + test('Browser prefixes', () {
|
| + var element = new DivElement();
|
| + element.style.transform = 'translateX(10px)';
|
| + document.body.children.add(element);
|
| +
|
| + var style = element.getComputedStyle();
|
| + // Some browsers will normalize this, so it'll be a matrix rather than
|
| + // the original string. Just check that it's something other than null.
|
| + expect(style.transform.length, greaterThan(3));
|
| + });
|
| +
|
| + // IE9 requires an extra poke for some properties to get applied.
|
| + test('IE9 Invalidation', () {
|
| + var element = new DivElement();
|
| + document.body.children.add(element);
|
| +
|
| + // Need to wait one tick after the element has been added to the page.
|
| + new Timer(const Duration(milliseconds: 10), expectAsync(() {
|
| + element.style.textDecoration = 'underline';
|
| + var style = element.getComputedStyle();
|
| + expect(style.textDecoration, contains('underline'));
|
| + }));
|
| + });
|
| +
|
| + test('Invalid values', () {
|
| + var element = new DivElement();
|
| + // Should not throw an error.
|
| + element.style.background = 'some_bad_value';
|
| + });
|
| +
|
| + test('css multi get', () {
|
| + var listElement = new Element.html('<ul class="foo">'
|
| + '<li class="bar" style="background-color: red; border-left: 10px;">'
|
| + '<li class="baz" style="background-color: black;>'
|
| + '<li class="baz classy" style="background-color: blue; ">'
|
| + '</ul>', treeSanitizer: new NullTreeSanitizer());
|
| + document.documentElement.children.add(listElement);
|
| +
|
| + var elements = document.queryAll('li');
|
| + expect(elements.style.backgroundColor, equals('red'));
|
| + expect(elements.style.borderLeftWidth, equals('10px'));
|
| + elements = document.queryAll('.baz');
|
| + expect(elements.style.backgroundColor, equals('black'));
|
| + expect(elements.style.borderLeftWidth, equals(''));
|
| + elements = document.queryAll('.bar');
|
| + expect(elements.style.backgroundColor, equals('red'));
|
| + });
|
| +
|
| + test('css multi set', () {
|
| + var listElement = new Element.html('<ul class="foo">'
|
| + '<li class="bar" style="background-color: red; border-left: 10px;">'
|
| + '<li class="baz" style="background-color: black;>'
|
| + '<li class="baz" id="wat" style="background-color: blue; ">'
|
| + '</ul>', treeSanitizer: new NullTreeSanitizer());
|
| + document.documentElement.children.add(listElement);
|
| +
|
| + var elements = document.queryAll('li');
|
| + elements.style.backgroundColor = 'green';
|
| + expect(elements.style.backgroundColor, equals('green'));
|
| + expect(elements.style.borderLeftWidth, equals('10px'));
|
| +
|
| + elements = document.queryAll('.baz');
|
| + expect(elements.style.backgroundColor, equals('green'));
|
| + elements.style.backgroundColor = 'yellow';
|
| + expect(elements.style.backgroundColor, equals('yellow'));
|
| + expect(elements.style.borderLeftWidth, equals(''));
|
| +
|
| + elements = document.queryAll('.bar');
|
| + expect(elements.style.backgroundColor, equals('green'));
|
| + elements = document.queryAll('#wat');
|
| + expect(elements.style.backgroundColor, equals('yellow'));
|
| +
|
| + elements.style.borderLeftWidth = '18px';
|
| + expect(elements.style.borderLeftWidth, equals('18px'));
|
| + elements = document.queryAll('li');
|
| + expect(elements.style.borderLeftWidth, equals('10px'));
|
| + });
|
| +
|
| + test('supports property', () {
|
| + expect(document.body.style.supportsProperty('bogus-property'), false);
|
| + expect(document.body.style.supportsProperty('background'), true);
|
| + expect(document.body.style.supportsProperty('borderBottomWidth'), true);
|
| + expect(document.body.style.supportsProperty('animation'), true);
|
| + });
|
| +}
|
|
|