<!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 computed style 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, springStyle;
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 testComputedSpring(description, spring, expectedValue)
{
    debug("");
    debug(description + " : " + spring);

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

    springStyle = window.getComputedStyle(div).getPropertyCSSValue("transition-timing-function");
    shouldBe("springStyle.cssText", "'" + expectedValue + "'");
    
    stylesheet.deleteRule(0);
}

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

testComputedSpring("Basic", "spring(1 100 10 0)", "spring(1 100 10 0)");
testComputedSpring("Negative Velocity", "spring(1 100 10 -10)", "spring(1 100 10 -10)");
testComputedSpring("Positive Velocity", "spring(1 100 10 10)", "spring(1 100 10 10)");
testComputedSpring("Zero Damping", "spring(1 100 0 10)", "spring(1 100 0 10)");
testComputedSpring("Minimum Values", "spring(1 1 0 -999999)", "spring(1 1 0 -999999)");
testComputedSpring("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("")

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

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