<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html lang="en">
 <head>
  <title>currentColor basic test</title>
  <style type="text/css">
   .test {
      display: inline-block;
      height: 5em;
      width: 10em;
      text-align: center;
      vertical-align: middle;
   }
  </style>
  <script src="../../resources/js-test.js"></script>
  <script>
    if (window.testRunner)
      testRunner.dumpAsText();
  </script>
 </head>
 <body>
    <div id="border1" class="test" style="border: 5px solid green;">1</div>
    <div id="border2" class="test" style="border-left: 5px solid red; border-top: 5px solid green; border-right: 5px solid blue; border-bottom: 5px solid purple;">2</div>
    <div id="border3" class="test" style="border-left: 5px dashed green; border-top: 5px solid green; border-right: 5px dotted green; border-bottom: 5px groove green;">3</div>
    <div id="border4" class="test" style="border-left: 4px solid green; border-top: 5px solid green; border-right: 5px solid green; border-bottom: 5px solid green;">4</div>
    <div id="border5" class="test" style="border-left: 2px dashed green; border-top: 3px solid green; border-right: 4px dotted green; border-bottom: 5px groove green;">5</div>
    <div id="border6" class="test" style="border-left: 5px dashed red; border-top: 5px solid green; border-right: 5px dotted blue; border-bottom: 5px groove purple;">6</div>
    <div id="border7" class="test" style="border-left: 2px solid red; border-top: 3px solid green; border-right: 4px solid blue; border-bottom: 5px solid purple;">7</div>
    <div id="border8" class="test" style="border-left: 2px dashed red; border-top: 3px solid green; border-right: 5px dotted blue; border-bottom: 5px groove purple;">8</div>
    <div id="border9" class="test" style="border-left: 5px solid red; border-top: 5px solid green; border-right: 5px solid blue;">9</div>
  <p id="description"></p>
  <div id="console"></div>
  <script>
    description("<a href=\"https://bugs.webkit.org/show_bug.cgi?id=15823\">Bug 15823: getPropertyValue for border returns null, should compute the shorthand value</a>");

    var div1 = document.getElementById("border1");
    shouldBeEqualToString('div1.style.getPropertyValue("border")', "5px solid green");

    var div2 = document.getElementById("border2");
    shouldBeEqualToString('div2.style.getPropertyValue("border")', "");

    var div3 = document.getElementById("border3");
    shouldBeEqualToString('div3.style.getPropertyValue("border")', "");

    var div4 = document.getElementById("border4");
    shouldBeEqualToString('div4.style.getPropertyValue("border")', "");

    var div5 = document.getElementById("border5");
    shouldBeEqualToString('div5.style.getPropertyValue("border")', "");

    var div6 = document.getElementById("border6");
    shouldBeEqualToString('div6.style.getPropertyValue("border")', "");

    var div7 = document.getElementById("border7");
    shouldBeEqualToString('div7.style.getPropertyValue("border")', "");

    var div8 = document.getElementById("border8");
    shouldBeEqualToString('div8.style.getPropertyValue("border")', "");

    var div9 = document.getElementById("border9");
    shouldBeEqualToString('div9.style.getPropertyValue("border")', "");
  </script>
 </body>
</html>
