<!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 use of SVGAnimatedEnumeration within SVGFETurbulenceElement");

var feTurbulenceElement = document.createElementNS("http://www.w3.org/2000/svg", "feTurbulence");
feTurbulenceElement.setAttribute("type", "fractalNoise");
feTurbulenceElement.setAttribute("stitchTiles", "stitch");

// type
debug("");
debug("Check initial 'type' value");
shouldBeEqualToString("feTurbulenceElement.type.toString()", "[object SVGAnimatedEnumeration]");
shouldBeEqualToString("typeof(feTurbulenceElement.type.baseVal)", "number");
shouldBe("feTurbulenceElement.type.baseVal", "SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_FRACTALNOISE");

debug("");
debug("Switch to 'turbulence'");
shouldBe("feTurbulenceElement.type.baseVal = SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_TURBULENCE", "SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_TURBULENCE");
shouldBe("feTurbulenceElement.type.baseVal", "SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_TURBULENCE");
shouldBeEqualToString("feTurbulenceElement.getAttribute('type')", "turbulence");

debug("");
debug("Try setting invalid values");
shouldThrow("feTurbulenceElement.type.baseVal = 3");
shouldBe("feTurbulenceElement.type.baseVal", "SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_TURBULENCE");
shouldBeEqualToString("feTurbulenceElement.getAttribute('type')", "turbulence");

shouldThrow("feTurbulenceElement.type.baseVal = -1");
shouldBe("feTurbulenceElement.type.baseVal", "SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_TURBULENCE");
shouldBeEqualToString("feTurbulenceElement.getAttribute('type')", "turbulence");

shouldThrow("feTurbulenceElement.type.baseVal = 0");
shouldBe("feTurbulenceElement.type.baseVal", "SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_TURBULENCE");
shouldBeEqualToString("feTurbulenceElement.getAttribute('type')", "turbulence");

debug("");
debug("Switch to 'fractalNoise'");
shouldBe("feTurbulenceElement.type.baseVal = SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_FRACTALNOISE", "SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_FRACTALNOISE");
shouldBe("feTurbulenceElement.type.baseVal", "SVGFETurbulenceElement.SVG_TURBULENCE_TYPE_FRACTALNOISE");
shouldBeEqualToString("feTurbulenceElement.getAttribute('type')", "fractalNoise");

// stitchTiles
debug("");
debug("Check initial 'stitchTiles' value");
shouldBeEqualToString("feTurbulenceElement.stitchTiles.toString()", "[object SVGAnimatedEnumeration]");
shouldBeEqualToString("typeof(feTurbulenceElement.stitchTiles.baseVal)", "number");
shouldBe("feTurbulenceElement.stitchTiles.baseVal", "SVGFETurbulenceElement.SVG_STITCHTYPE_STITCH");

debug("");
debug("Switch to 'noStitch'");
shouldBe("feTurbulenceElement.stitchTiles.baseVal = SVGFETurbulenceElement.SVG_STITCHTYPE_NOSTITCH", "SVGFETurbulenceElement.SVG_STITCHTYPE_NOSTITCH");
shouldBe("feTurbulenceElement.stitchTiles.baseVal", "SVGFETurbulenceElement.SVG_STITCHTYPE_NOSTITCH");
shouldBeEqualToString("feTurbulenceElement.getAttribute('stitchTiles')", "noStitch");

debug("");
debug("Try setting invalid values");
shouldThrow("feTurbulenceElement.stitchTiles.baseVal = 3");
shouldBe("feTurbulenceElement.stitchTiles.baseVal", "SVGFETurbulenceElement.SVG_STITCHTYPE_NOSTITCH");
shouldBeEqualToString("feTurbulenceElement.getAttribute('stitchTiles')", "noStitch");

shouldThrow("feTurbulenceElement.stitchTiles.baseVal = -1");
shouldBe("feTurbulenceElement.stitchTiles.baseVal", "SVGFETurbulenceElement.SVG_STITCHTYPE_NOSTITCH");
shouldBeEqualToString("feTurbulenceElement.getAttribute('stitchTiles')", "noStitch");

shouldThrow("feTurbulenceElement.stitchTiles.baseVal = 0");
shouldBe("feTurbulenceElement.stitchTiles.baseVal", "SVGFETurbulenceElement.SVG_STITCHTYPE_NOSTITCH");
shouldBeEqualToString("feTurbulenceElement.getAttribute('stitchTiles')", "noStitch");

debug("");
debug("Switch to 'stitch'");
shouldBe("feTurbulenceElement.stitchTiles.baseVal = SVGFETurbulenceElement.SVG_STITCHTYPE_STITCH", "SVGFETurbulenceElement.SVG_STITCHTYPE_STITCH");
shouldBe("feTurbulenceElement.stitchTiles.baseVal", "SVGFETurbulenceElement.SVG_STITCHTYPE_STITCH");
shouldBeEqualToString("feTurbulenceElement.getAttribute('stitchTiles')", "stitch");

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