<!DOCTYPE html>

<style type="text/css">
  div { border: 2px solid red; }
  div[attr1="LOWER"] { border-top-color: yellow }
  div[attr1="lower"] { border-top-color: green }
  div[attr2="upper"] { border-right-color: yellow }
  div[attr2="UPPER"] { border-right-color: green }
  div[attr3="lower" i] { border-bottom-color: green }
  div[attr4="UPPER" i] { border-left-color: green }

  div[attr-list~="BaR" i] { border: 2px solid green; }
  div[attr-hyphen|="FoO" i] { border: 2px solid green; }
  div[attr-begin^="FoO" i] { border: 2px solid green; }
  div[attr-end$="BaR" i] { border: 2px solid green; }
  div[attr-contain*="OoB" i] { border: 2px solid green; }
</style>

<div id="element-exact" attr1="lower" attr2="UPPER" attr3="LOWER" attr4="upper"></div>
<div id="element-list" attr-list="foo bar"></div>
<div id="element-hyphen" attr-hyphen="foo-bar"></div>
<div id="element-begin" attr-begin="foobar"></div>
<div id="element-end" attr-end="foobar"></div>
<div id="element-contains" attr-end="foobar"></div>

<p>
  PASS if all elements borders are all green, not red.
</p>

<script src="../../resources/js-test.js"></script>
<script>
  if (window.testRunner)
    testRunner.dumpAsText();

  function checkBorders(elementId) {
    debug("Testing " + elementId.split('-')[1] + " attribute selector.");
    element = document.getElementById(elementId);
    shouldBe("window.getComputedStyle(element).borderTopColor", "'rgb(0, 128, 0)'");
    shouldBe("window.getComputedStyle(element).borderRightColor", "'rgb(0, 128, 0)'");
    shouldBe("window.getComputedStyle(element).borderBottomColor", "'rgb(0, 128, 0)'");
    shouldBe("window.getComputedStyle(element).borderLeftColor", "'rgb(0, 128, 0)'");
  }

  checkBorders("element-exact");
  checkBorders("element-list");
  checkBorders("element-hyphen");
  checkBorders("element-begin");
  checkBorders("element-end");
  checkBorders("element-contains");
</script>
