<!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 SVGPreserveAspectRatio API - utilizing the preserveAspectRatio property of SVGSVGElement");

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

debug("");
debug("Check initial align/meetOrSlice values");
shouldBe("preserveAspectRatio.align", "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMID");
shouldBe("preserveAspectRatio.meetOrSlice", "SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET");

debug("");
debug("Check assigning align/meetOrSlice values");
shouldBe("preserveAspectRatio.align = SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMIN", "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMIN");
shouldBe("preserveAspectRatio.meetOrSlice = SVGPreserveAspectRatio.SVG_MEETORSLICE_SLICE", "SVGPreserveAspectRatio.SVG_MEETORSLICE_SLICE");

debug("");
debug("Check assigning invalid align values");
// The following four assignments fail because the various arguments
// translate via ECMA-262 rules to 0, which is the same as
// SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_UNKNOWN and which is
// not allowed.
shouldThrow("preserveAspectRatio.align = preserveAspectRatio");
shouldThrow("preserveAspectRatio.align = null");
shouldThrow("preserveAspectRatio.align = 'aString'");
shouldThrow("preserveAspectRatio.align = svgElement");
shouldThrow("preserveAspectRatio.align = SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_UNKNOWN");
shouldThrow("preserveAspectRatio.align = -1");
shouldThrow("preserveAspectRatio.align = 11"); // SVG_PRESERVEASPECTRATIO_XMAXYMAX + 1 (last value + 1)

debug("");
debug("Check assigning invalid meetOrSlice values");
// The following four assignments fail because the various arguments
// translate via ECMA-262 rules to 0, which is the same as
// SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_UNKNOWN and which is
// not allowed.
shouldThrow("preserveAspectRatio.meetOrSlice = preserveAspectRatio");
shouldThrow("preserveAspectRatio.meetOrSlice = null");
shouldThrow("preserveAspectRatio.meetOrSlice = 'aString'");
shouldThrow("preserveAspectRatio.meetOrSlice = svgElement");
shouldThrow("preserveAspectRatio.meetOrSlice = SVGPreserveAspectRatio.SVG_MEETORSLICE_UNKNOWN");
shouldThrow("preserveAspectRatio.meetOrSlice = -1");
shouldThrow("preserveAspectRatio.meetOrSlice = 3"); // SVG_MEETORSLICE_SLICE + 1 (last value + 1)

debug("");
debug("Check that the preserveAspectRatio remained correct");
shouldBe("preserveAspectRatio.align = SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMIN", "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMIN");
shouldBe("preserveAspectRatio.meetOrSlice = SVGPreserveAspectRatio.SVG_MEETORSLICE_SLICE", "SVGPreserveAspectRatio.SVG_MEETORSLICE_SLICE");

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