| <!DOCTYPE HTML> |
| <title>SVGLength interface</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| test(function() { |
| var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"); |
| var length = svgElement.createSVGLength(); |
| |
| // Check initial length values. |
| assert_equals(length.unitType, SVGLength.SVG_LENGTHTYPE_NUMBER); |
| assert_equals(length.value, 0); |
| assert_equals(length.valueInSpecifiedUnits, 0); |
| assert_equals(length.valueAsString, "0"); |
| |
| // Set value to be 2px. |
| length.valueAsString = "2px"; |
| assert_equals(length.unitType, SVGLength.SVG_LENGTHTYPE_PX); |
| assert_equals(length.value, 2); |
| assert_equals(length.valueInSpecifiedUnits, 2); |
| assert_equals(length.valueAsString, "2px"); |
| |
| // Check invalid arguments for 'convertToSpecifiedUnits'. |
| assert_throws_dom("NotSupportedError", function() { length.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_UNKNOWN); }); |
| assert_throws_dom("NotSupportedError", function() { length.convertToSpecifiedUnits(-1); }); |
| assert_throws_dom("NotSupportedError", function() { length.convertToSpecifiedUnits(11); }); |
| assert_throws_dom("NotSupportedError", function() { length.convertToSpecifiedUnits('aString'); }); |
| assert_throws_dom("NotSupportedError", function() { length.convertToSpecifiedUnits(length); }); |
| assert_throws_dom("NotSupportedError", function() { length.convertToSpecifiedUnits(svgElement); }); |
| assert_throws_js(TypeError, function() { length.convertToSpecifiedUnits(); }); |
| assert_equals(length.unitType, SVGLength.SVG_LENGTHTYPE_PX); |
| assert_equals(length.value, 2); |
| assert_equals(length.valueInSpecifiedUnits, 2); |
| assert_equals(length.valueAsString, "2px"); |
| |
| // Check invalid arguments for 'newValueSpecifiedUnits'. |
| assert_throws_dom("NotSupportedError", function() { length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_UNKNOWN, 4); }); |
| assert_throws_dom("NotSupportedError", function() { length.newValueSpecifiedUnits(-1, 4); }); |
| assert_throws_dom("NotSupportedError", function() { length.newValueSpecifiedUnits(11, 4); }); |
| // ECMA-262, 9.3, "ToNumber". |
| length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 0); |
| assert_throws_js(TypeError, function() { length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 'aString'); }); |
| assert_equals(length.value, 0); |
| assert_throws_js(TypeError, function() { length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, length); }); |
| assert_equals(length.value, 0); |
| assert_throws_js(TypeError, function() { length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, svgElement); }); |
| assert_equals(length.value, 0); |
| assert_throws_js(TypeError, function() { length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, NaN); }); |
| assert_equals(length.value, 0); |
| assert_throws_js(TypeError, function() { length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, Infinity); }); |
| assert_equals(length.value, 0); |
| assert_throws_js(TypeError, function() { length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX); }); |
| // Reset to original value above. |
| length.valueAsString = "2px"; |
| assert_throws_dom("NotSupportedError", function() { length.newValueSpecifiedUnits('aString', 4); }); |
| assert_throws_dom("NotSupportedError", function() { length.newValueSpecifiedUnits(length, 4); }); |
| assert_throws_dom("NotSupportedError", function() { length.newValueSpecifiedUnits(svgElement, 4); }); |
| assert_throws_js(TypeError, function() { length.newValueSpecifiedUnits('aString', 'aString'); }); |
| assert_throws_js(TypeError, function() { length.newValueSpecifiedUnits(length, length); }); |
| assert_throws_js(TypeError, function() { length.newValueSpecifiedUnits(svgElement, svgElement); }); |
| assert_equals(length.unitType, SVGLength.SVG_LENGTHTYPE_PX); |
| assert_equals(length.value, 2); |
| assert_equals(length.valueInSpecifiedUnits, 2); |
| assert_equals(length.valueAsString, "2px"); |
| |
| // Check setting invalid 'valueAsString' arguments. |
| assert_throws_dom("SyntaxError", function() { length.valueAsString = '10deg'; }); |
| assert_equals(length.valueAsString, "2px"); |
| assert_equals(length.value, 2); |
| assert_equals(length.valueInSpecifiedUnits, 2); |
| assert_equals(length.unitType, SVGLength.SVG_LENGTHTYPE_PX); |
| |
| length.valueAsString = '1pX'; // should not throw exception. |
| assert_equals(length.valueAsString, "1px"); |
| assert_equals(length.value, 1); |
| assert_equals(length.valueInSpecifiedUnits, 1); |
| assert_equals(length.unitType, SVGLength.SVG_LENGTHTYPE_PX); |
| |
| length.valueAsString = "2px"; // reset to 2px. |
| |
| assert_throws_dom("SyntaxError", function() { length.valueAsString = ',5 em'; }); |
| assert_equals(length.valueAsString, "2px"); |
| assert_equals(length.value, 2); |
| assert_equals(length.valueInSpecifiedUnits, 2); |
| assert_equals(length.unitType, SVGLength.SVG_LENGTHTYPE_PX); |
| |
| assert_throws_dom("SyntaxError", function() { length.valueAsString = null; }); |
| assert_equals(length.valueAsString, "2px"); |
| assert_equals(length.value, 2); |
| assert_equals(length.valueInSpecifiedUnits, 2); |
| assert_equals(length.unitType, SVGLength.SVG_LENGTHTYPE_PX); |
| |
| assert_throws_dom("SyntaxError", function() { length.valueAsString = ''; }); |
| assert_equals(length.valueAsString, "2px"); |
| assert_equals(length.value, 2); |
| assert_equals(length.valueInSpecifiedUnits, 2); |
| assert_equals(length.unitType, SVGLength.SVG_LENGTHTYPE_PX); |
| |
| // Check setting invalid 'value' arguments. |
| assert_throws_js(TypeError, function() { length.value = NaN; }); |
| assert_throws_js(TypeError, function() { length.value = Infinity; }); |
| assert_equals(length.value, 2); |
| assert_equals(length.valueInSpecifiedUnits, 2); |
| assert_equals(length.unitType, SVGLength.SVG_LENGTHTYPE_PX); |
| |
| // Check setting invalid 'valueInSpecifiedUnits' arguments. |
| assert_throws_js(TypeError, function() { length.valueInSpecifiedUnits = NaN; }); |
| assert_throws_js(TypeError, function() { length.valueInSpecifiedUnits = Infinity; }); |
| assert_equals(length.value, 2); |
| assert_equals(length.valueInSpecifiedUnits, 2); |
| assert_equals(length.unitType, SVGLength.SVG_LENGTHTYPE_PX); |
| }); |
| </script> |