<!DOCTYPE html>
<html>
<head>
<script src="../../svg/dynamic-updates/resources/SVGTestCase.js"></script>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("Test scientific numbers on <length> values for SVG presentation attributes.")
if (window.testRunner)
    testRunner.dumpAsText();
createSVGTestCase();

var text = createSVGElement("text");
text.setAttribute("id", "text");
text.setAttribute("x", "100px");
text.setAttribute("y", "100px");
rootSVGElement.appendChild(text);

function test(valueString, expectedValue) {
	// Reset baseline-shift to baseline.
	text.setAttribute("baseline-shift", "baseline");
	shouldBeEqualToString("getComputedStyle(text).baselineShift", "baseline");

	// Run test
	text.setAttribute("baseline-shift", valueString);
	shouldBeEqualToString("getComputedStyle(text).baselineShift", expectedValue);
}

debug("");
debug("Test positive exponent values with 'e'");
test(".5e2", "50px");
test("5e1", "50px");
test("0.5e2", "50px");
test("+.5e2", "50px");
test("+5e1", "50px");
test("+0.5e2", "50px");
test(".5e+2", "50px");
test("5e+1", "50px");
test("0.5e+2", "50px");

debug("");
debug("Test positive exponent values with 'E'");
test(".5E2", "50px");
test("5E1", "50px");
test("0.5E2", "50px");
test("+.5E2", "50px");
test("+5E1", "50px");
test("+0.5E2", "50px");
test(".5E+2", "50px");
test("5E+1", "50px");
test("0.5E+2", "50px");

debug("");
debug("Test negative exponent values with 'e'");
test("5000e-2", "50px");
test("500e-1", "50px");
test("+5000e-2", "50px");
test("+500e-1", "50px");
test("+5000e-2px", "50px");
test("+500e-1px", "50px");

debug("");
debug("Test negative exponent values with 'E'");
test("5000E-2", "50px");
test("500E-1", "50px");
test("+5000E-2", "50px");
test("+500E-1", "50px");
test("+5000.00E-2px", "50px");
test("+500E-1px", "50px");

debug("");
debug("Test negative numbers with exponents");
test("-.5e2px", "-50px");
test("-0.5e2px", "-50px");
test("-500e-1px", "-50px");

debug("");
debug("Test if value and 'em' still works");
test("50em", "50em");

debug("");
debug("Test if value and 'ex' still works");
test("50ex", "50ex");

debug("");
debug("Trailing and leading whitespaces");
test("       5e1", "50px");
test("5e1      ", "50px");

debug("");
debug("Test behavior on overflow");
test("2E+500", "baseline");
test("-2E+500", "baseline");

debug("");
debug("Invalid values");
test("50e0.0", "baseline");
test("50 e0", "baseline");
test("50e 0", "baseline");
test("50.e0", "baseline");

var successfullyParsed = true;

completeTest();</script>
</body>
</html>