<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>CSS Transitions Test: Parsing invalid transition-property</title>
        <meta name="assert" content="Test checks that unrecognized or non-animatable properties must be kept in the list to preserve the matching of indices.">
        <link rel="help" title="2.1. The 'transition-property' Property" href="http://www.w3.org/TR/css3-transitions/#transition-property-property">
        <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');

            // syntax: none | [ all | <IDENT> ] [ ‘,’ [ all | <IDENT> ] ]*
            var values = {
                'none, all' : 'none, all',
                'all, none' : 'all, none',
                'foobar' : 'foobar',
                'all, foobar' : 'all, foobar',
                'foobar, all' : 'foobar, all',
                'inherit' : 'padding',
                'initial' : 'all'
            };

            for (var key in values) {
                test(function() {
                    setStyle({
                        '#container': {'transition-property': 'padding'},
                        '#transition': {'transition-property': key}
                    });
                    var result = computedStyle(transition, 'transition-property');
                    assert_equals(result, values[key]);
                }, "parse '" + key + "'");
            }
        </script>
    </body>
</html>
