4cc31f8f4f
There are no behavioral changes here, I just ran `dart format` on the `tests/lib/html/` directory. Change-Id: I221b2a370adc393e49621db1d37aa6eeb09b3015 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/425329 Reviewed-by: Srujan Gaddam <srujzs@google.com> Auto-Submit: Bob Nystrom <rnystrom@google.com> Commit-Queue: Bob Nystrom <rnystrom@google.com>
144 lines
4.6 KiB
Dart
144 lines
4.6 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/legacy/minitest.dart'; // ignore: deprecated_member_use_from_same_package
|
|
|
|
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.querySelector('#svg1');
|
|
expect(e, isNotNull);
|
|
|
|
svg.RectElement r = document.querySelector('#rect1') as svg.RectElement;
|
|
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.querySelector('#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.querySelector('#rect1');
|
|
checker(r);
|
|
div.remove();
|
|
});
|
|
}
|
|
});
|
|
}
|