<!DOCTYPE html>
<html>
    <body>
        <script src="../../resources/js-test-pre.js"></script>
        <div id="testDiv"></div>
        <script>
            description("Tests that using angle, time and frequency units in calc() is working as intended.");

            var testDiv = document.getElementById("testDiv");

            // Angle units.
            evalAndLog("testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300deg/2))'");
            shouldBeEqualToString("testDiv.style['-webkit-filter']", "hue-rotate(calc(150deg))");
            shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter')", "hue-rotate(150deg)");

            evalAndLog("testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300rad/2))'");
            shouldBeEqualToString("testDiv.style['-webkit-filter']", "hue-rotate(calc(150rad))");
            shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter')", "hue-rotate(8594.366926962348deg)");

            evalAndLog("testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300grad/2))'");
            shouldBeEqualToString("testDiv.style['-webkit-filter']", "hue-rotate(calc(150grad))");
            shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter')", "hue-rotate(135deg)");

            evalAndLog("testDiv.style['-webkit-filter'] = 'hue-rotate(calc(3turn/2))'");
            shouldBeEqualToString("testDiv.style['-webkit-filter']", "hue-rotate(calc(1.5turn))");
            shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter')", "hue-rotate(540deg)");

            evalAndLog("testDiv.style['-webkit-filter'] = 'hue-rotate(calc(1turn + 10deg))'");
            shouldBeEqualToString("testDiv.style['-webkit-filter']", "hue-rotate(calc(370deg))");
            shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter')", "hue-rotate(370deg)");

            evalAndLog("testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300deg + 30deg))'");
            shouldBeEqualToString("testDiv.style['-webkit-filter']", "hue-rotate(calc(330deg))");
            shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter')", "hue-rotate(330deg)");

            evalAndLog("testDiv.style['-webkit-filter'] = 'hue-rotate(calc(2turn + 1turn))'");
            shouldBeEqualToString("testDiv.style['-webkit-filter']", "hue-rotate(calc(3turn))");
            shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter')", "hue-rotate(1080deg)");

            // Time units.
            evalAndLog("testDiv.style['transition-delay'] = 'calc(300ms/2)'");
            shouldBeEqualToString("testDiv.style['transition-delay']", "calc(150ms)");
            shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('transition-delay')", "0.15s");

            evalAndLog("testDiv.style['transition-delay'] = 'calc(300s/2)'");
            shouldBeEqualToString("testDiv.style['transition-delay']", "calc(150s)");
            shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('transition-delay')", "150s");

            evalAndLog("testDiv.style['transition-delay'] = 'calc(10s + 100ms)'");
            shouldBeEqualToString("testDiv.style['transition-delay']", "calc(10100ms)");
            shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('transition-delay')", "10.1s");

            evalAndLog("testDiv.style['transition-delay'] = 'calc(100ms + 10s)'");
            shouldBeEqualToString("testDiv.style['transition-delay']", "calc(10100ms)");
            shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('transition-delay')", "10.1s");

            evalAndLog("testDiv.style['transition-delay'] = 'calc(4s + 1s)'");
            shouldBeEqualToString("testDiv.style['transition-delay']", "calc(5s)");
            shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('transition-delay')", "5s");

            evalAndLog("testDiv.style['transition-delay'] = 'calc(4ms + 1ms)'");
            shouldBeEqualToString("testDiv.style['transition-delay']", "calc(5ms)");
            shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('transition-delay')", "0.005s");

            // Frequency units.
            // NOTE: Since there is no CSS property that uses frequency at the moment we only test the parsing.
            evalAndLog("testDiv.style['width'] = 'calc(300Hz/2)'");
            shouldBeEqualToString("testDiv.style['width']", "");

            evalAndLog("testDiv.style['width'] = 'calc(300kHz/2)'");
            shouldBeEqualToString("testDiv.style['width']", "");

            evalAndLog("testDiv.style['width'] = 'calc(10Hz + 20Hz)'");
            shouldBeEqualToString("testDiv.style['width']", "");

            evalAndLog("testDiv.style['width'] = 'calc(10kHz + 20kHz)'");
            shouldBeEqualToString("testDiv.style['width']", "");

            evalAndLog("testDiv.style['width'] = 'calc(10kHz + 200Hz)'");
            shouldBeEqualToString("testDiv.style['width']", "");

            evalAndLog("testDiv.style['width'] = 'calc(200Hz + 10kHz)'");
            shouldBeEqualToString("testDiv.style['width']", "");
        </script>
        <script src="../../resources/js-test-post.js"></script>
    </body>
</html>
