<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("This test checks the SVGLength API");

var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
var length = svgElement.createSVGLength();

debug("");
debug("Check initial length values");
shouldBe("length.unitType", "SVGLength.SVG_LENGTHTYPE_NUMBER");
shouldBe("length.value", "0");
shouldBe("length.valueInSpecifiedUnits", "0");
shouldBeEqualToString("length.valueAsString", "0");

debug("");
debug("Set value to be 2px");
length.valueAsString = "2px";
shouldBe("length.unitType", "SVGLength.SVG_LENGTHTYPE_PX");
shouldBe("length.value", "2");
shouldBe("length.valueInSpecifiedUnits", "2");
shouldBeEqualToString("length.valueAsString", "2px");

debug("");
debug("Check invalid arguments for 'convertToSpecifiedUnits'");
shouldThrow("length.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_UNKNOWN)");
shouldThrow("length.convertToSpecifiedUnits(-1)");
shouldThrow("length.convertToSpecifiedUnits(11)");
shouldThrow("length.convertToSpecifiedUnits('aString')");
shouldThrow("length.convertToSpecifiedUnits(length)");
shouldThrow("length.convertToSpecifiedUnits(svgElement)");
shouldThrow("length.convertToSpecifiedUnits()");
shouldBe("length.unitType", "SVGLength.SVG_LENGTHTYPE_PX");
shouldBe("length.value", "2");
shouldBe("length.valueInSpecifiedUnits", "2");
shouldBe("length.unitType", "SVGLength.SVG_LENGTHTYPE_PX");

debug("");
debug("Check invalid arguments for 'newValueSpecifiedUnits'");
shouldThrow("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_UNKNOWN, 4)");
shouldThrow("length.newValueSpecifiedUnits(-1, 4)");
shouldThrow("length.newValueSpecifiedUnits(11, 4)");
// ECMA-262, 9.3, "ToNumber"
shouldBeUndefined("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 'aString')");
shouldBe("length.value", "NaN");
shouldBeUndefined("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 0)");
shouldBeUndefined("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, length)");
shouldBe("length.value", "NaN");
shouldBeUndefined("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 0)");
shouldBeUndefined("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, svgElement)");
shouldBe("length.value", "NaN");
shouldThrow("length.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX)");
// Reset to original value above.
length.valueAsString = "2px";
shouldThrow("length.newValueSpecifiedUnits('aString', 4)");
shouldThrow("length.newValueSpecifiedUnits(length, 4)");
shouldThrow("length.newValueSpecifiedUnits(svgElement, 4)");
shouldThrow("length.newValueSpecifiedUnits('aString', 'aString')");
shouldThrow("length.newValueSpecifiedUnits(length, length)");
shouldThrow("length.newValueSpecifiedUnits(svgElement, svgElement)");
shouldBe("length.unitType", "SVGLength.SVG_LENGTHTYPE_PX");
shouldBe("length.value", "2");
shouldBe("length.valueInSpecifiedUnits", "2");
shouldBe("length.unitType", "SVGLength.SVG_LENGTHTYPE_PX");

successfullyParsed = true;
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
