OLD | NEW |
---|---|
(Empty) | |
1 <!DOCTYPE HTML> | |
2 <title>SVGTransformList, basics</title> | |
3 <script src="../../resources/testharness.js"></script> | |
4 <script src="../../resources/testharnessreport.js"></script> | |
5 <script src="resources/SVGTransformList-helper.js"></script> | |
6 <svg width="200" height="200"> | |
7 <circle cx="40" cy="40" r="40" fill="green" transform="scale(2, 2) translate (10 10)"/> | |
8 </svg> | |
9 <script> | |
10 test(function() { | |
fs
2016/09/22 11:43:20
I think it'd be better to have several (sub)test h
Shanmuga Pandi
2016/09/23 11:37:02
Added TODO.
| |
11 // This is a test of the simple SVGTransformList API parts. | |
12 | |
13 var svg = document.querySelector("svg"); | |
14 var circle1 = document.querySelector("circle"); | |
15 var transformList = circle1.transform.baseVal; | |
16 | |
17 // Spec: The object referenced by animVal will always be distinct from the one referenced by baseVal, even when the attribute is not animated. | |
18 assert_not_equals(circle1.transform.baseVal, circle1.transform.animVal); | |
19 | |
20 assert_equals(circle1.transform.baseVal.numberOfItems, 2); | |
21 assert_equals(circle1.transform.animVal.numberOfItems, 2); | |
22 assert_equals(transformList.getItem(0).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
23 assert_equals(transformList.getItem(1).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
24 | |
25 // Test uncommon arguments for initialize(). | |
26 assert_throws(new TypeError(), function() { transformList.initialize(30); }); | |
27 assert_throws(new TypeError(), function() { transformList.initialize('aString' ); }); | |
28 assert_throws(new TypeError(), function() { transformList.initialize(circle1); }); | |
29 assert_throws(new TypeError(), function() { transformList.initialize(null); }) ; | |
30 | |
31 // Test uncommon arguments for getItem(). | |
32 assert_throws("IndexSizeError", function() { transformList.getItem(30); }); | |
33 assert_equals(transformList.getItem('aString').toString(), "type=SVG_TRANSFORM _SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
34 assert_equals(transformList.getItem(circle1).toString(), "type=SVG_TRANSFORM_S CALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
35 assert_equals(transformList.getItem(null).toString(), "type=SVG_TRANSFORM_SCAL E matrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
36 | |
37 // Test uncommon arguments for insertItemBefore(). | |
38 assert_throws(new TypeError(), function() { transformList.insertItemBefore(30) ; }); | |
39 assert_throws(new TypeError(), function() { transformList.insertItemBefore('aS tring'); }); | |
40 assert_throws(new TypeError(), function() { transformList.insertItemBefore(cir cle1); }); | |
41 assert_throws(new TypeError(), function() { transformList.insertItemBefore(nul l); }); | |
42 | |
43 assert_equals(transformList.insertItemBefore(transformList.getItem(1), 'aStrin g').toString(), "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0] "); | |
44 assert_equals(transformList.numberOfItems, 3); | |
45 assert_equals(transformList.getItem(0).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
46 assert_equals(transformList.getItem(1).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
47 assert_equals(transformList.getItem(2).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
48 assert_equals(circle1.getAttribute('transform'), "translate(10 10) scale(2 2) translate(10 10)"); | |
49 | |
50 assert_equals(transformList.insertItemBefore(transformList.getItem(1), circle1 ).toString(), "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
51 assert_equals(transformList.numberOfItems, 4); | |
52 assert_equals(transformList.getItem(0).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
53 assert_equals(transformList.getItem(1).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
54 assert_equals(transformList.getItem(2).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
55 assert_equals(transformList.getItem(3).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
56 assert_equals(circle1.getAttribute('transform'), "scale(2 2) translate(10 10) scale(2 2) translate(10 10)"); | |
57 | |
58 assert_equals(transformList.insertItemBefore(transformList.getItem(1), null).t oString(), "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
59 assert_equals(transformList.numberOfItems, 5); | |
60 assert_equals(transformList.getItem(0).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
61 assert_equals(transformList.getItem(1).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
62 assert_equals(transformList.getItem(2).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
63 assert_equals(transformList.getItem(3).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
64 assert_equals(transformList.getItem(4).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
65 assert_equals(circle1.getAttribute('transform'), "translate(10 10) scale(2 2) translate(10 10) scale(2 2) translate(10 10)"); | |
66 | |
67 assert_equals(transformList.insertItemBefore(transformList.getItem(1), 0).toSt ring(), "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
68 assert_equals(transformList.numberOfItems, 6); | |
69 assert_equals(transformList.getItem(0).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
70 assert_equals(transformList.getItem(1).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
71 assert_equals(transformList.getItem(2).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
72 assert_equals(transformList.getItem(3).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
73 assert_equals(transformList.getItem(4).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
74 assert_equals(transformList.getItem(5).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
75 assert_equals(circle1.getAttribute('transform'), "scale(2 2) translate(10 10) scale(2 2) translate(10 10) scale(2 2) translate(10 10)"); | |
76 | |
77 assert_throws(new TypeError(), function() { transformList.insertItemBefore(30, 0); }); | |
78 assert_throws(new TypeError(), function() { transformList.insertItemBefore('aS tring', 0); }); | |
79 assert_throws(new TypeError(), function() { transformList.insertItemBefore(cir cle1, 0); }); | |
80 assert_throws(new TypeError(), function() { transformList.insertItemBefore(nul l, 0); }); | |
81 | |
82 // Set transform='rotate(90) scale(2 2) translate(10 10) skewX(45)' for circle 1. | |
83 circle1.setAttribute('transform', 'rotate(90) scale(2 2) translate(10 10) skew X(45)'); | |
84 assert_equals(transformList.numberOfItems, 4); | |
85 assert_equals(transformList.getItem(0).toString(), "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]"); | |
86 assert_equals(transformList.getItem(1).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
87 assert_equals(transformList.getItem(2).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
88 assert_equals(transformList.getItem(3).toString(), "type=SVG_TRANSFORM_SKEWX m atrix=[1.0 0.0 1.0 1.0 0.0 0.0]"); | |
89 assert_equals(circle1.getAttribute('transform'), "rotate(90) scale(2 2) transl ate(10 10) skewX(45)"); | |
90 | |
91 // Test uncommon arguments for replaceItem(). | |
92 assert_throws(new TypeError(), function() { transformList.replaceItem(30); }); | |
93 assert_throws(new TypeError(), function() { transformList.replaceItem('aString '); }); | |
94 assert_throws(new TypeError(), function() { transformList.replaceItem(circle1) ; }); | |
95 assert_throws(new TypeError(), function() { transformList.replaceItem(null); } ); | |
96 assert_throws(new TypeError(), function() { transformList.replaceItem(30, 0); }); | |
97 assert_throws(new TypeError(), function() { transformList.replaceItem('aString ', 0); }); | |
98 assert_throws(new TypeError(), function() { transformList.replaceItem(circle1, 0); }); | |
99 assert_throws(new TypeError(), function() { transformList.replaceItem(null, 0) ; }); | |
100 | |
101 // Test uncommon values for indexed setter. | |
102 assert_throws(new TypeError(), function() { transformList[0] = 30; }); | |
103 assert_throws(new TypeError(), function() { transformList[0] = 'aString'; }); | |
104 assert_throws(new TypeError(), function() { transformList[0] = circle1; }); | |
105 assert_throws(new TypeError(), function() { transformList[0] = null; }); | |
106 | |
107 assert_equals(transformList.replaceItem(transformList.getItem(0), 0).toString( ), "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]"); | |
fs
2016/09/22 11:43:20
Here we are replacing the element with itself - fr
Shanmuga Pandi
2016/09/23 11:37:02
Done.
| |
108 assert_equals(transformList.numberOfItems, 4); | |
109 assert_equals(transformList.getItem(0).toString(), "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]"); | |
110 assert_equals(transformList.getItem(1).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
111 assert_equals(transformList.getItem(2).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
112 assert_equals(transformList.getItem(3).toString(), "type=SVG_TRANSFORM_SKEWX m atrix=[1.0 0.0 1.0 1.0 0.0 0.0]"); | |
113 assert_equals(circle1.getAttribute('transform'), "rotate(90) scale(2 2) transl ate(10 10) skewX(45)"); | |
114 | |
115 assert_equals(transformList.replaceItem(transformList.getItem(0), 'aString').t oString(), "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]"); | |
116 assert_equals(transformList.numberOfItems, 4); | |
117 assert_equals(transformList.getItem(0).toString(), "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]"); | |
118 assert_equals(transformList.getItem(1).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
119 assert_equals(transformList.getItem(2).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
120 assert_equals(transformList.getItem(3).toString(), "type=SVG_TRANSFORM_SKEWX m atrix=[1.0 0.0 1.0 1.0 0.0 0.0]"); | |
121 assert_equals(circle1.getAttribute('transform'), "rotate(90) scale(2 2) transl ate(10 10) skewX(45)"); | |
122 | |
123 assert_equals(transformList.replaceItem(transformList.getItem(0), circle1).toS tring(), "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]"); | |
124 assert_equals(transformList.numberOfItems, 4); | |
125 assert_equals(transformList.getItem(0).toString(), "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]"); | |
126 assert_equals(transformList.getItem(1).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
127 assert_equals(transformList.getItem(2).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
128 assert_equals(transformList.getItem(3).toString(), "type=SVG_TRANSFORM_SKEWX m atrix=[1.0 0.0 1.0 1.0 0.0 0.0]"); | |
129 assert_equals(circle1.getAttribute('transform'), "rotate(90) scale(2 2) transl ate(10 10) skewX(45)"); | |
130 | |
131 assert_equals(transformList.replaceItem(transformList.getItem(0), null).toStri ng(), "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]"); | |
132 assert_equals(transformList.numberOfItems, 4); | |
133 assert_equals(circle1.getAttribute('transform'), "rotate(90) scale(2 2) transl ate(10 10) skewX(45)"); | |
134 | |
135 // Set transform='rotate(90) scale(2 2) translate(10 10) skewX(45)' for circle 1. | |
136 circle1.setAttribute('transform', 'rotate(90) scale(2 2) translate(10 10) skew X(45)'); | |
137 | |
138 // Test uncommon arguments for removeItem(). | |
139 assert_throws("IndexSizeError", function() { transformList.removeItem(30); }); | |
140 | |
141 assert_equals(transformList.removeItem(0).toString(), "type=SVG_TRANSFORM_ROTA TE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]"); | |
142 assert_equals(transformList.numberOfItems, 3); | |
143 assert_equals(transformList.getItem(0).toString(), "type=SVG_TRANSFORM_SCALE m atrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
144 assert_equals(transformList.getItem(1).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
145 assert_equals(transformList.getItem(2).toString(), "type=SVG_TRANSFORM_SKEWX m atrix=[1.0 0.0 1.0 1.0 0.0 0.0]"); | |
146 assert_equals(circle1.getAttribute('transform'), "scale(2 2) translate(10 10) skewX(45)"); | |
147 | |
148 assert_equals(transformList.removeItem('aString').toString(), "type=SVG_TRANSF ORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]"); | |
149 assert_equals(transformList.numberOfItems, 2); | |
150 assert_equals(transformList.getItem(0).toString(), "type=SVG_TRANSFORM_TRANSLA TE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
151 assert_equals(transformList.getItem(1).toString(), "type=SVG_TRANSFORM_SKEWX m atrix=[1.0 0.0 1.0 1.0 0.0 0.0]"); | |
152 assert_equals(circle1.getAttribute('transform'), "translate(10 10) skewX(45)") ; | |
153 | |
154 assert_equals(transformList.removeItem(circle1).toString(), "type=SVG_TRANSFOR M_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]"); | |
155 assert_equals(transformList.numberOfItems, 1); | |
156 assert_equals(transformList.getItem(0).toString(), "type=SVG_TRANSFORM_SKEWX m atrix=[1.0 0.0 1.0 1.0 0.0 0.0]"); | |
157 assert_equals(circle1.getAttribute('transform'), "skewX(45)"); | |
158 | |
159 // Test uncommon arguments for appendItem(). | |
160 assert_throws(new TypeError(), function() { transformList.appendItem(30); }); | |
161 assert_throws(new TypeError(), function() { transformList.appendItem('aString' ); }); | |
162 assert_throws(new TypeError(), function() { transformList.appendItem(circle1); }); | |
163 assert_throws(new TypeError(), function() { transformList.appendItem(null); }) ; | |
164 | |
165 // Testing animVal clear throws. | |
166 assert_throws("NoModificationAllowedError", function() { circle1.transform.ani mVal.clear(); }); | |
167 transformList.clear(); | |
168 | |
169 // Creating new SVGTransform, with 45 deg rotation about x=50, y=100 and appen d it to the transform list. | |
170 var transform; | |
171 assert_equals((transform = svg.createSVGTransform()).toString(), "type=SVG_TRA NSFORM_MATRIX matrix=[1.0 0.0 0.0 1.0 0.0 0.0]"); | |
fs
2016/09/22 11:43:20
Assign the transform outside the assert.
Shanmuga Pandi
2016/09/23 11:37:02
Done.
| |
172 transform.setRotate(45, 50, 100); | |
173 | |
174 assert_equals(transformList.appendItem(transform).toString(), "type=SVG_TRANSF ORM_ROTATE matrix=[0.7 0.7 -0.7 0.7 85.4 -6.1]"); | |
175 assert_equals(transformList.numberOfItems, 1); | |
176 assert_equals(transformList.getItem(0).toString(), "type=SVG_TRANSFORM_ROTATE matrix=[0.7 0.7 -0.7 0.7 85.4 -6.1]"); | |
177 assert_equals(circle1.getAttribute('transform'), "rotate(45 50 100)"); | |
178 }); | |
179 </script> | |
OLD | NEW |