60a966605d
This finishes going through the dev_compiler HTML tests and switches out unittest for minitest wherever possible. In the process, it gets another 10 tests strong mode clean, and gets several more passing, and more not skipped. With this CL, we're running another 50 more HTML tests (though some are expected to fail, mostly because of #27578). R=jacobr@google.com, vsm@google.com Review URL: https://codereview.chromium.org/2419863002 .
134 lines
4.4 KiB
Dart
134 lines
4.4 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 'dart:svg' as svg;
|
|
|
|
import 'package:expect/minitest.dart';
|
|
|
|
main() {
|
|
group('svgPresence', () {
|
|
var isSvgElement = predicate((x) => x is svg.SvgElement, 'is a SvgElement');
|
|
|
|
test('simpleRect', () {
|
|
var div = new Element.tag('div');
|
|
document.body.append(div);
|
|
div.setInnerHtml(r'''
|
|
<svg id='svg1' width='200' height='100'>
|
|
<rect id='rect1' x='10' y='20' width='130' height='40' rx='5'fill='blue'></rect>
|
|
</svg>
|
|
''', validator: new NodeValidatorBuilder()..allowSvg());
|
|
|
|
var e = document.query('#svg1');
|
|
expect(e, isNotNull);
|
|
|
|
svg.RectElement r = document.query('#rect1');
|
|
expect(r.x.baseVal.value, 10);
|
|
expect(r.y.baseVal.value, 20);
|
|
expect(r.height.baseVal.value, 40);
|
|
expect(r.width.baseVal.value, 130);
|
|
expect(r.rx.baseVal.value, 5);
|
|
});
|
|
|
|
test('trailing newline', () {
|
|
// Ensures that we handle SVG with trailing newlines.
|
|
var logo = new svg.SvgElement.svg("""
|
|
<svg xmlns='http://www.w3.org/2000/svg' version='1.1'>
|
|
<path/>
|
|
</svg>
|
|
""");
|
|
|
|
expect(logo, isSvgElement);
|
|
});
|
|
});
|
|
|
|
group('svgInterfaceMatch', () {
|
|
// Test that SVG elements explicitly implement the IDL interfaces (is-checks
|
|
// only, see SVGTest3 for behavioural tests).
|
|
insertTestDiv() {
|
|
var element = new Element.tag('div');
|
|
element.setInnerHtml(r'''
|
|
<svg id='svg1' width='200' height='100'>
|
|
<rect id='rect1' x='10' y='20' width='130' height='40' rx='5'fill='blue'></rect>
|
|
</svg>
|
|
''', validator: new NodeValidatorBuilder()..allowSvg());
|
|
document.body.append(element);
|
|
return element;
|
|
}
|
|
|
|
|
|
var isElement = predicate((x) => x is Element, 'is an Element');
|
|
var isSvgElement = predicate((x) => x is svg.SvgElement, 'is a SvgElement');
|
|
var isSvgSvgElement =
|
|
predicate((x) => x is svg.SvgSvgElement, 'is a SvgSvgElement');
|
|
var isNotSvgSvgElement =
|
|
predicate((x) => x is! svg.SvgSvgElement, 'is not a SvgSvgElement');
|
|
var isNode = predicate((x) => x is Node, 'is a Node');
|
|
var isSvgNumber = predicate((x) => x is svg.Number, 'is a svg.Number');
|
|
var isNotSvgNumber = predicate((x) => x is! svg.Number, 'is not a svg.Number');
|
|
var isSvgRect = predicate((x) => x is svg.Rect, 'is a svg.Rect');
|
|
var isNotSvgRect = predicate((x) => x is! svg.Rect, 'is not a svg.Rect');
|
|
|
|
test('rect_isChecks', () {
|
|
var div = insertTestDiv();
|
|
var r = document.query('#rect1');
|
|
|
|
// Direct inheritance chain
|
|
expect(r, isSvgElement);
|
|
expect(r, isElement);
|
|
expect(r, isNode);
|
|
|
|
// Interfaces not implemented.
|
|
expect(r, isNotSvgNumber);
|
|
expect(r, isNotSvgRect);
|
|
expect(r, isNotSvgSvgElement);
|
|
|
|
div.remove();
|
|
});
|
|
});
|
|
|
|
insertTestDiv() {
|
|
var element = new Element.tag('div');
|
|
element.innerHtml = r'''
|
|
<svg id='svg1' width='200' height='100'>
|
|
<rect id='rect1' x='10' y='20' width='130' height='40' rx='5'fill='blue'></rect>
|
|
</svg>
|
|
''';
|
|
document.body.append(element);
|
|
return element;
|
|
}
|
|
|
|
group('svgBehavioral', () {
|
|
|
|
// Test that SVG elements have the operations advertised through all the IDL
|
|
// interfaces. This is a 'duck typing' test, and does not explicitly use
|
|
// 'is' checks on the expected interfaces (that is in the test group above).
|
|
|
|
var isString = predicate((x) => x is String, 'is a String');
|
|
var isStringList = predicate((x) => x is List<String>, 'is a List<String>');
|
|
var isSvgMatrix = predicate((x) => x is svg.Matrix, 'is a svg.Matrix');
|
|
var isSvgAnimatedBoolean =
|
|
predicate((x) => x is svg.AnimatedBoolean, 'is an svg.AnimatedBoolean');
|
|
var isSvgAnimatedString =
|
|
predicate((x) => x is svg.AnimatedString, 'is an svg.AnimatedString');
|
|
var isSvgRect = predicate((x) => x is svg.Rect, 'is a svg.Rect');
|
|
var isSvgAnimatedTransformList =
|
|
predicate((x) => x is svg.AnimatedTransformList,
|
|
'is an svg.AnimatedTransformList');
|
|
var isCssStyleDeclaration =
|
|
predicate((x) => x is CssStyleDeclaration, 'is a CssStyleDeclaration');
|
|
|
|
|
|
testRect(name, checker) {
|
|
test(name, () {
|
|
var div = insertTestDiv();
|
|
var r = document.query('#rect1');
|
|
checker(r);
|
|
div.remove();
|
|
});
|
|
}
|
|
});
|
|
|
|
}
|