| <!DOCTYPE HTML> |
| <title>SVGTransform interface</title> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script> |
| test(function() { |
| // This test checks the SVGTransform API. |
| |
| var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"); |
| var transform = svgElement.createSVGTransform(); |
| |
| // Check initial transform values. |
| assert_equals(transform.type, SVGTransform.SVG_TRANSFORM_MATRIX); |
| assert_equals(transform.angle, 0); |
| assert_equals(transform.matrix.a, 1); |
| assert_equals(transform.matrix.b, 0); |
| assert_equals(transform.matrix.c, 0); |
| assert_equals(transform.matrix.d, 1); |
| assert_equals(transform.matrix.e, 0); |
| assert_equals(transform.matrix.f, 0); |
| |
| // Change to skewX transformation. |
| transform.setSkewX(45); |
| assert_equals(transform.type, SVGTransform.SVG_TRANSFORM_SKEWX); |
| assert_equals(transform.angle, 45); |
| assert_equals(transform.matrix.a, 1); |
| assert_equals(transform.matrix.b, 0); |
| assert_equals(transform.matrix.c.toFixed(1), "1.0"); |
| assert_equals(transform.matrix.d, 1); |
| assert_equals(transform.matrix.e, 0); |
| assert_equals(transform.matrix.f, 0); |
| |
| // Changing matrix.e to 100, should reset transformation type to MATRIX, and angle should be 0. |
| transform.matrix.e = 100; |
| assert_equals(transform.matrix.e, 100); |
| assert_equals(transform.type, SVGTransform.SVG_TRANSFORM_MATRIX); |
| assert_equals(transform.angle, 0); |
| assert_equals(transform.matrix.a, 1); |
| assert_equals(transform.matrix.b, 0); |
| assert_equals(transform.matrix.c.toFixed(1), "1.0"); |
| assert_equals(transform.matrix.d, 1); |
| assert_equals(transform.matrix.e, 100); |
| assert_equals(transform.matrix.f, 0); |
| |
| // Now revert to initial matrix. |
| transform.matrix.c = 0; |
| transform.matrix.e = 0; |
| assert_equals(transform.matrix.c, 0); |
| assert_equals(transform.matrix.e, 0); |
| assert_equals(transform.type, SVGTransform.SVG_TRANSFORM_MATRIX); |
| assert_equals(transform.angle, 0); |
| assert_equals(transform.matrix.a, 1); |
| assert_equals(transform.matrix.b, 0); |
| assert_equals(transform.matrix.c, 0); |
| assert_equals(transform.matrix.d, 1); |
| assert_equals(transform.matrix.e, 0); |
| assert_equals(transform.matrix.f, 0); |
| |
| // Check passing invalid arguments to 'setMatrix'. |
| assert_throws(new TypeError(), function() { transform.setMatrix(); }); |
| assert_throws(new TypeError(), function() { transform.setMatrix(transform); }); |
| assert_throws(new TypeError(), function() { transform.setMatrix(svgElement); }); |
| assert_throws(new TypeError(), function() { transform.setMatrix('aString'); }); |
| assert_throws(new TypeError(), function() { transform.setMatrix(1); }); |
| assert_throws(new TypeError(), function() { transform.setMatrix(false); }); |
| |
| // Check passing invalid arguments to 'setTranslate'. |
| assert_throws(new TypeError(), function() { transform.setTranslate(); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate(transform); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate(svgElement); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate('aString'); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate(1, transform); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate(1, svgElement); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate(1, 'aString'); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate(transform, 1); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate(svgElement, 1); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate('aString', 1); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate(transform, transform); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate(svgElement, svgElement); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate('aString', 'aString'); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate(NaN, 1); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate(Infinity, 1); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate(1, NaN); }); |
| assert_throws(new TypeError(), function() { transform.setTranslate(1, Infinity); }); |
| |
| // Check passing invalid arguments to 'setScale'. |
| assert_throws(new TypeError(), function() { transform.setScale(); }); |
| assert_throws(new TypeError(), function() { transform.setScale(transform); }); |
| assert_throws(new TypeError(), function() { transform.setScale(svgElement); }); |
| assert_throws(new TypeError(), function() { transform.setScale('aString'); }); |
| assert_throws(new TypeError(), function() { transform.setScale(1, transform); }); |
| assert_throws(new TypeError(), function() { transform.setScale(1, svgElement); }); |
| assert_throws(new TypeError(), function() { transform.setScale(1, 'aString'); }); |
| assert_throws(new TypeError(), function() { transform.setScale(transform, 1); }); |
| assert_throws(new TypeError(), function() { transform.setScale(svgElement, 1); }); |
| assert_throws(new TypeError(), function() { transform.setScale('aString', 1); }); |
| assert_throws(new TypeError(), function() { transform.setScale(transform, transform); }); |
| assert_throws(new TypeError(), function() { transform.setScale(svgElement, svgElement); }); |
| assert_throws(new TypeError(), function() { transform.setScale('aString', 'aString'); }); |
| assert_throws(new TypeError(), function() { transform.setScale(NaN, 1); }); |
| assert_throws(new TypeError(), function() { transform.setScale(Infinity, 1); }); |
| assert_throws(new TypeError(), function() { transform.setScale(1, NaN); }); |
| assert_throws(new TypeError(), function() { transform.setScale(1, Infinity); }); |
| |
| // Check passing invalid arguments to 'setRotate'. |
| assert_throws(new TypeError(), function() { transform.setRotate(); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(transform); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(svgElement); }); |
| assert_throws(new TypeError(), function() { transform.setRotate('aString'); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(1, transform); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(1, svgElement); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(1, 'aString'); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(1, 1, transform); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(1, 1, svgElement); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(1, 1, 'aString'); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(NaN, 1, 1); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(Infinity, 1, 1); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(1, NaN, 1); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(1, Infinity, 1); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(1, 1, NaN); }); |
| assert_throws(new TypeError(), function() { transform.setRotate(1, 1, Infinity); }); |
| |
| // Check passing invalid arguments to 'setSkewX'. |
| assert_throws(new TypeError(), function() { transform.setSkewX(); }); |
| assert_throws(new TypeError(), function() { transform.setSkewX(transform); }); |
| assert_throws(new TypeError(), function() { transform.setSkewX(svgElement); }); |
| assert_throws(new TypeError(), function() { transform.setSkewX('aString'); }); |
| assert_throws(new TypeError(), function() { transform.setSkewX(NaN); }); |
| assert_throws(new TypeError(), function() { transform.setSkewX(Infinity); }); |
| |
| // Check passing invalid arguments to 'setSkewY'. |
| assert_throws(new TypeError(), function() { transform.setSkewY(); }); |
| assert_throws(new TypeError(), function() { transform.setSkewY(transform); }); |
| assert_throws(new TypeError(), function() { transform.setSkewY(svgElement); }); |
| assert_throws(new TypeError(), function() { transform.setSkewY('aString'); }); |
| assert_throws(new TypeError(), function() { transform.setSkewY(NaN); }); |
| assert_throws(new TypeError(), function() { transform.setSkewY(Infinity); }); |
| }); |
| </script> |