OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library SVGTest; | 5 library SVGTest; |
| 6 |
6 import 'dart:html'; | 7 import 'dart:html'; |
7 import 'dart:svg' as svg; | 8 import 'dart:svg' as svg; |
8 import 'package:unittest/html_individual_config.dart'; | 9 import 'package:unittest/html_individual_config.dart'; |
9 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
10 | 11 |
11 main() { | 12 main() { |
12 useHtmlIndividualConfiguration(); | 13 useHtmlIndividualConfiguration(); |
13 | 14 |
14 group('svgPresence', () { | 15 group('svgPresence', () { |
15 var isSvgElement = predicate((x) => x is svg.SvgElement, 'is a SvgElement'); | 16 var isSvgElement = predicate((x) => x is svg.SvgElement, 'is a SvgElement'); |
16 | 17 |
17 test('simpleRect', () { | 18 test('simpleRect', () { |
18 var div = new Element.tag('div'); | 19 var div = new Element.tag('div'); |
19 document.body.append(div); | 20 document.body.append(div); |
20 div.setInnerHtml(r''' | 21 div.setInnerHtml( |
| 22 r''' |
21 <svg id='svg1' width='200' height='100'> | 23 <svg id='svg1' width='200' height='100'> |
22 <rect id='rect1' x='10' y='20' width='130' height='40' rx='5'fill='blue'></rect> | 24 <rect id='rect1' x='10' y='20' width='130' height='40' rx='5'fill='blue'></rect> |
23 </svg> | 25 </svg> |
24 ''', validator: new NodeValidatorBuilder()..allowSvg()); | 26 ''', |
| 27 validator: new NodeValidatorBuilder()..allowSvg()); |
25 | 28 |
26 var e = document.query('#svg1'); | 29 var e = document.query('#svg1'); |
27 expect(e, isNotNull); | 30 expect(e, isNotNull); |
28 | 31 |
29 svg.RectElement r = document.query('#rect1'); | 32 svg.RectElement r = document.query('#rect1'); |
30 expect(r.x.baseVal.value, 10); | 33 expect(r.x.baseVal.value, 10); |
31 expect(r.y.baseVal.value, 20); | 34 expect(r.y.baseVal.value, 20); |
32 expect(r.height.baseVal.value, 40); | 35 expect(r.height.baseVal.value, 40); |
33 expect(r.width.baseVal.value, 130); | 36 expect(r.width.baseVal.value, 130); |
34 expect(r.rx.baseVal.value, 5); | 37 expect(r.rx.baseVal.value, 5); |
35 }); | 38 }); |
36 | 39 |
37 test('trailing newline', () { | 40 test('trailing newline', () { |
38 // Ensures that we handle SVG with trailing newlines. | 41 // Ensures that we handle SVG with trailing newlines. |
39 var logo = new svg.SvgElement.svg(""" | 42 var logo = new svg.SvgElement.svg(""" |
40 <svg xmlns='http://www.w3.org/2000/svg' version='1.1'> | 43 <svg xmlns='http://www.w3.org/2000/svg' version='1.1'> |
41 <path/> | 44 <path/> |
42 </svg> | 45 </svg> |
43 """); | 46 """); |
44 | 47 |
45 expect(logo, isSvgElement); | 48 expect(logo, isSvgElement); |
46 | |
47 }); | 49 }); |
48 }); | 50 }); |
49 | 51 |
50 group('svgInterfaceMatch', () { | 52 group('svgInterfaceMatch', () { |
51 // Test that SVG elements explicitly implement the IDL interfaces (is-checks | 53 // Test that SVG elements explicitly implement the IDL interfaces (is-checks |
52 // only, see SVGTest3 for behavioural tests). | 54 // only, see SVGTest3 for behavioural tests). |
53 insertTestDiv() { | 55 insertTestDiv() { |
54 var element = new Element.tag('div'); | 56 var element = new Element.tag('div'); |
55 element.setInnerHtml(r''' | 57 element.setInnerHtml( |
| 58 r''' |
56 <svg id='svg1' width='200' height='100'> | 59 <svg id='svg1' width='200' height='100'> |
57 <rect id='rect1' x='10' y='20' width='130' height='40' rx='5'fill='blue'></rect> | 60 <rect id='rect1' x='10' y='20' width='130' height='40' rx='5'fill='blue'></rect> |
58 </svg> | 61 </svg> |
59 ''', validator: new NodeValidatorBuilder()..allowSvg()); | 62 ''', |
| 63 validator: new NodeValidatorBuilder()..allowSvg()); |
60 document.body.append(element); | 64 document.body.append(element); |
61 return element; | 65 return element; |
62 } | 66 } |
63 | 67 |
64 | |
65 var isElement = predicate((x) => x is Element, 'is an Element'); | 68 var isElement = predicate((x) => x is Element, 'is an Element'); |
66 var isSvgElement = predicate((x) => x is svg.SvgElement, 'is a SvgElement'); | 69 var isSvgElement = predicate((x) => x is svg.SvgElement, 'is a SvgElement'); |
67 var isSvgSvgElement = | 70 var isSvgSvgElement = |
68 predicate((x) => x is svg.SvgSvgElement, 'is a SvgSvgElement'); | 71 predicate((x) => x is svg.SvgSvgElement, 'is a SvgSvgElement'); |
69 var isNode = predicate((x) => x is Node, 'is a Node'); | 72 var isNode = predicate((x) => x is Node, 'is a Node'); |
70 var isSvgNumber = predicate((x) => x is svg.Number, 'is a svg.Number'); | 73 var isSvgNumber = predicate((x) => x is svg.Number, 'is a svg.Number'); |
71 var isSvgRect = predicate((x) => x is svg.Rect, 'is a svg.Rect'); | 74 var isSvgRect = predicate((x) => x is svg.Rect, 'is a svg.Rect'); |
72 | 75 |
73 test('rect_isChecks', () { | 76 test('rect_isChecks', () { |
74 var div = insertTestDiv(); | 77 var div = insertTestDiv(); |
75 var r = document.query('#rect1'); | 78 var r = document.query('#rect1'); |
76 | 79 |
77 // Direct inheritance chain | 80 // Direct inheritance chain |
78 expect(r, isSvgElement); | 81 expect(r, isSvgElement); |
79 expect(r, isElement); | 82 expect(r, isElement); |
80 expect(r, isNode); | 83 expect(r, isNode); |
81 | 84 |
82 // Interfaces not implemented. | 85 // Interfaces not implemented. |
83 expect(r, isNot(isSvgNumber)); | 86 expect(r, isNot(isSvgNumber)); |
84 expect(r, isNot(isSvgRect)); | 87 expect(r, isNot(isSvgRect)); |
85 expect(r, isNot(isSvgSvgElement)); | 88 expect(r, isNot(isSvgSvgElement)); |
86 | 89 |
87 div.remove(); | 90 div.remove(); |
88 }); | |
89 }); | 91 }); |
| 92 }); |
90 | 93 |
91 insertTestDiv() { | 94 insertTestDiv() { |
92 var element = new Element.tag('div'); | 95 var element = new Element.tag('div'); |
93 element.innerHtml = r''' | 96 element.innerHtml = r''' |
94 <svg id='svg1' width='200' height='100'> | 97 <svg id='svg1' width='200' height='100'> |
95 <rect id='rect1' x='10' y='20' width='130' height='40' rx='5'fill='blue'></rect> | 98 <rect id='rect1' x='10' y='20' width='130' height='40' rx='5'fill='blue'></rect> |
96 </svg> | 99 </svg> |
97 '''; | 100 '''; |
98 document.body.append(element); | 101 document.body.append(element); |
99 return element; | 102 return element; |
100 } | 103 } |
101 | 104 |
102 group('svgBehavioral', () { | 105 group('svgBehavioral', () { |
103 | |
104 // Test that SVG elements have the operations advertised through all the IDL | 106 // Test that SVG elements have the operations advertised through all the IDL |
105 // interfaces. This is a 'duck typing' test, and does not explicitly use | 107 // interfaces. This is a 'duck typing' test, and does not explicitly use |
106 // 'is' checks on the expected interfaces (that is in the test group above). | 108 // 'is' checks on the expected interfaces (that is in the test group above). |
107 | 109 |
108 var isString = predicate((x) => x is String, 'is a String'); | 110 var isString = predicate((x) => x is String, 'is a String'); |
109 var isStringList = predicate((x) => x is List<String>, 'is a List<String>'); | 111 var isStringList = predicate((x) => x is List<String>, 'is a List<String>'); |
110 var isSvgMatrix = predicate((x) => x is svg.Matrix, 'is a svg.Matrix'); | 112 var isSvgMatrix = predicate((x) => x is svg.Matrix, 'is a svg.Matrix'); |
111 var isSvgAnimatedBoolean = | 113 var isSvgAnimatedBoolean = |
112 predicate((x) => x is svg.AnimatedBoolean, 'is an svg.AnimatedBoolean'); | 114 predicate((x) => x is svg.AnimatedBoolean, 'is an svg.AnimatedBoolean'); |
113 var isSvgAnimatedString = | 115 var isSvgAnimatedString = |
114 predicate((x) => x is svg.AnimatedString, 'is an svg.AnimatedString'); | 116 predicate((x) => x is svg.AnimatedString, 'is an svg.AnimatedString'); |
115 var isSvgRect = predicate((x) => x is svg.Rect, 'is a svg.Rect'); | 117 var isSvgRect = predicate((x) => x is svg.Rect, 'is a svg.Rect'); |
116 var isSvgAnimatedTransformList = | 118 var isSvgAnimatedTransformList = predicate( |
117 predicate((x) => x is svg.AnimatedTransformList, | 119 (x) => x is svg.AnimatedTransformList, |
118 'is an svg.AnimatedTransformList'); | 120 'is an svg.AnimatedTransformList'); |
119 var isCssStyleDeclaration = | 121 var isCssStyleDeclaration = |
120 predicate((x) => x is CssStyleDeclaration, 'is a CssStyleDeclaration'); | 122 predicate((x) => x is CssStyleDeclaration, 'is a CssStyleDeclaration'); |
121 | 123 |
122 | |
123 testRect(name, checker) { | 124 testRect(name, checker) { |
124 test(name, () { | 125 test(name, () { |
125 var div = insertTestDiv(); | 126 var div = insertTestDiv(); |
126 var r = document.query('#rect1'); | 127 var r = document.query('#rect1'); |
127 checker(r); | 128 checker(r); |
128 div.remove(); | 129 div.remove(); |
129 }); | 130 }); |
130 } | 131 } |
131 }); | 132 }); |
132 | |
133 } | 133 } |
OLD | NEW |