<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <link rel="stylesheet" href="resources/basic.css" type="text/css">
  <link rel="stylesheet" href="resources/small.css" type="text/css">
  <link rel="stylesheet" href="resources/normal.css" type="text/css">
  <script src="../../resources/js-test-pre.js"></script> 
</head>
<body>
  <h1 id="firstH1" >Alternate stylesheets</h1>
  
  <p id="textLine" >This document has 3 stylesheets, with no alternate stylesheets. It should:</p>
  
  <ul>
    <li>Have a green border at the top of the page</li>
    <li>An underlined <code>H1</code></li>
    <li>12px text</li>
  </ul>

  <script>
    description("Alternate stylesheet (link) title test 1");

    if (window.testRunner)
      testRunner.dumpAsText();

    window.onload = function () {
      element = document.getElementById("firstH1");
      shouldBe("getComputedStyle(element).getPropertyValue('text-decoration')", "'underline'");

      element = document.getElementById("textLine");
      shouldBe("getComputedStyle(element).getPropertyValue('font-size')", "'12px'");

      shouldBe("getComputedStyle(document.body).getPropertyValue('border-top-color')", "'rgb(0, 128, 0)'");

      wasPostTestScriptParsed = true;
      finishJSTest();
    }
  </script>

</body>
</html>
