<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>