<html xmlns="http://www.w3.org/1999/xhtml">
<body>
  <table id="results" width='100%'>
    <tr>
      <th>case sensitive?</th>
      <th>tag</th>
      <th>namespace</th>
      <th>id</th>
      <th>attribute</th>
      <th>namespace</th>
      <th>first value</th>
      <th>second value</th>
    </tr>
  </table>
  
  <!-- First a few elements created by the parser -->
  <div id="parserTests" style='display: none'>
    <p id="test1" case='first' CASE='second'></p>
    <foobar id="test2" case='first' CASE='second'></foobar>
    <svg xmlns="http://www.w3.org/2000/svg" id="test3" case='first' CASE='second'></svg>
  </div>
  
  <div id="javascriptTests" style='display: none'>
  </div>
  
  <script src="resources/attr-case-sensitivity.js"></script>
  
  <script type="text/javascript">
  
    if (window.testRunner)
      testRunner.dumpAsText();
    
    resultLog("Parser Tests:")
    checkAttribute(getTestElement(1), 'case');
    checkAttribute(getTestElement(2), 'case');
    checkAttribute(getTestElement(3), 'case');
    
    resultLog("Javascript Tests:")
    var element = createElementForCheck(4, 'p');
    createAndCheckAttributes(element, 'testattr');
    createAndCheckAttributes(element, 'namespacetest', 'http://www.example.com/');
    createAndCheckAttributes(element, 'href', 'http://www.w3.org/1999/xlink');
    
    element = createElementForCheck(5, 'foobar');
    createAndCheckAttributes(element, 'testattr');
    createAndCheckAttributes(element, 'namespacetest', 'http://www.example.com/');
    createAndCheckAttributes(element, 'href', 'http://www.w3.org/1999/xlink');
    
    element = createElementForCheck(6, 'barbar', 'http://www.example.com/');
    createAndCheckAttributes(element, 'testattr');
    createAndCheckAttributes(element, 'namespacetest', 'http://www.example.com/');
    createAndCheckAttributes(element, 'href', 'http://www.w3.org/1999/xlink');
    
    element = createElementForCheck(7, 'svg', 'http://www.w3.org/2000/svg');
    createAndCheckAttributes(element, 'testattr');
    createAndCheckAttributes(element, 'namespacetest', 'http://www.example.com/');
    createAndCheckAttributes(element, 'href', 'http://www.w3.org/1999/xlink');
    
  </script>
</body>
</html>