<!DOCTYPE HTML><!-- webkit-test-runner [ experimental:WebAnimationsCSSIntegrationEnabled=false ] -->
<script src="../../resources/js-test-pre.js"></script>
<p id="description"></p>
<div id="console"></div>
<script>
description("Test the parsing of the spring() function on the transition-timing-function property.");

if (window.internals)
    internals.settings.setSpringTimingFunctionEnabled(true);

// These have to be global for the test helpers to see them.
var stylesheet, cssRule, declaration, propertyValue, subRule;
var styleElement = document.createElement("style");
document.head.appendChild(styleElement);
stylesheet = styleElement.sheet;
var div = document.createElement(div);
div.id = "target";
document.body.appendChild(div);

function testSpring(description, spring, expectedValue)
{
    debug("");
    debug(description + " : " + spring);

    stylesheet.insertRule("#target { transition-timing-function: " + spring + "; }", 0);
    cssRule = stylesheet.cssRules.item(0);

    shouldBe("cssRule.type", "1");

    declaration = cssRule.style;
    if (!expectedValue) {
        shouldBe("declaration.length", "0");
        shouldBeEqualToString("declaration.getPropertyValue('transition-timing-function')", "");
        return;
    }

    shouldBe("declaration.length", "1");
    shouldBe("declaration.getPropertyValue('transition-timing-function')", "'" + expectedValue + "'");

    propertyValue = declaration.getPropertyCSSValue("transition-timing-function");
    shouldBe("propertyValue.cssText", "'" + expectedValue + "'");

    stylesheet.deleteRule(0);
}

debug("")
debug("Valid spring tests");
debug("")

testSpring("Basic", "spring(1 100 10 0)", "spring(1 100 10 0)");
testSpring("Negative Velocity", "spring(1 100 10 -10)", "spring(1 100 10 -10)");
testSpring("Positive Velocity", "spring(1 100 10 10)", "spring(1 100 10 10)");
testSpring("Zero Damping", "spring(1 100 0 10)", "spring(1 100 0 10)");
testSpring("Minimum Values", "spring(1 1 0 -999999)", "spring(1 1 0 -999999)");
testSpring("Floating Point Values", "spring(1.5 2.3 3.7 -1.8)", "spring(1.5 2.3 3.7 -1.8)");

debug("")
debug("Invalid spring tests");
debug("")

testSpring("No parameters", "spring()", null);
testSpring("Not enough parameters", "spring(1 100 10)", null);
testSpring("Too many parameters", "spring(1 100 10 0 0)", null);
testSpring("Non-numeric parameters", "spring(a b c d)", null);
testSpring("Illegal Mass (< 0)", "spring(-1 100 10 0)", null);
testSpring("Illegal Mass (== 0)", "spring(0 100 10 0)", null);
testSpring("Illegal Stiffness (< 0)", "spring(1 -1 10 0)", null);
testSpring("Illegal Stiffness (== 0)", "spring(1 0 10 0)", null);
testSpring("Illegal Damping (< 0)", "spring(1 100 -1 0)", null);

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