<html>
<head>
<title>Unfilled Properties Test</title>
<style type="text/css" media="screen">
#box {
    height: 50px;
    width: 200px;
    background-color: blue;
    transition-duration: 1s,2s;
    transition-property: opacity, left, opacity, top, width, opacity, height, opacity;
    transition-delay: 3s,4s,5s;
    transition-timing-function: linear;
    animation-name: a, b, c, d, e;
    animation-duration: 10s, 20s;
    animation-delay: 1s;
    animation-fill-mode: forwards, backwards;
}
@keyframes a { }
@keyframes b { }
@keyframes c { }
@keyframes d { }
@keyframes e { }
</style>
  <script src="../resources/testharness.js"></script>
  <script src="../resources/testharnessreport.js"></script>
  <script type="text/javascript" charset="utf-8">
    var test = async_test("Unfilled Properties Test");

    const kExpectedResults = [
      { 'property': 'transitionDuration', 'value': '1s, 2s' },
      { 'property': 'transitionProperty', 'value': 'opacity, left, opacity, top, width, opacity, height, opacity' },
      { 'property': 'transitionDelay',    'value': '3s, 4s, 5s' },
      { 'property': 'transitionTimingFunction', 'value': 'linear' },
      { 'property': 'animationName',      'value': 'a, b, c, d, e' },
      { 'property': 'animationDuration',  'value': '10s, 20s' },
      { 'property': 'animationDelay',     'value': '1s' },
      { 'property': 'animationFillMode',  'value': 'forwards, backwards' },
    ];

    function start()
    {
        var box = document.getElementById('box');
        var resultsString = "";
        var boxStyle = window.getComputedStyle(box);

        kExpectedResults.forEach(function(curItem) {
          var computedValue = boxStyle[curItem.property];
          var expectedValue = curItem.value;
          assert_equals(computedValue, expectedValue, "Testing " + curItem.property + " expected " + curItem.value);
        });
    }

    window.addEventListener('load', test.step_func_done(start), false);
  </script>
</head>
<body>
<div id="box">
</div>
</body>
</html>
