<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>CSS Transitions Test: Parsing transition-delay</title>
        <meta name="assert" content="Test checks that transition-delay values are parsed properly">
        <link rel="help" title="2.4. The 'transition-delay' Property" href="http://www.w3.org/TR/css3-transitions/#transition-delay-property">
        <link rel="help" title="CSS Values and Units Module Level 3 - 6.2. Times: the ‘<time>’ type and ‘s’, ‘ms’ units" href="http://www.w3.org/TR/css3-values/#time">
        <link rel="author" title="Rodney Rehm" href="http://rodneyrehm.de/en/">
        <meta name="flags" content="dom">

        <script src="/resources/testharness.js" type="text/javascript"></script>
        <script src="/resources/testharnessreport.js" type="text/javascript"></script>

        <script src="./support/vendorPrefix.js" type="text/javascript"></script>
        <script src="./support/helper.js" type="text/javascript"></script>
    </head>
    <body>
        <!-- required by testharnessreport.js -->
        <div id="log"></div>
        <!-- elements used for testing -->
        <div id="container">
            <div id="transition"></div>
        </div>

        <script>
            var transition = document.getElementById('transition');
            // <time> [, <time>]*
            var values = {
                // seconds
                '10.2s': '10.2s',
                '1s': '1s',
                '0.1s': '0.1s',
                '0.01s': '0.01s',
                '0.001s': '0.001s',
                '0.009s': '0.009s',
                '0s': '0s',
                '0s': '0s',
                '.0s': '0s',
                '0.0s': '0s',
                '.3s': '0.3s',
                '-5s' : '-5s',
                // milliseconds
                '10200ms': '10.2s',
                '1000ms': '1s',
                '100ms': '0.1s',
                '10ms': '0.01s',
                '9ms': '0.009s',
                '1ms': '0.001s',
                '0ms': '0s',
                '-500ms' : '-0.5s',
                // combination
                '1s, 0.1s, 10ms': '1s, 0.1s, 0.01s',
                // invalid
                'foobar': '0s'
            };

            // these tests are supposed to fail and
            // possibly make the engine issue a parser warning
            var invalidTests = {
                'foobar': true
            };

            for (var key in values) {
                if (Object.prototype.hasOwnProperty.call(values, key)) {
                    test(function() {
                        setStyle('#transition', {
                            'transition-delay': key
                        });
                        var result = computedStyle(transition, 'transition-delay');
                        assert_equals(result, values[key], "Expected computed value");
                    }, "parse '" + key + "'",
                    {
                        // mark tests that fail as such
                        flags: invalidTests[key] ? "invalid" : ""
                    });
                }
            }
        </script>
    </body>
</html>
