<!DOCTYPE HTML>
<html>
<!--
Test adapted from http://mxr.mozilla.org/mozilla-central/source/content/base/test/test_bug590771.html

https://bugzilla.mozilla.org/show_bug.cgi?id=590771
-->
<head>
  <title>Test for Bug 590771</title>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=590771">Mozilla Bug 590771</a>
<p id="display"></p>
<pre id="test">
<script type="application/javascript">

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

/** Test for Bug 590771 **/

function test1()
{
  var attr = document.createAttribute("foo");
  attr.value = "bar";
  var ni = document.createNodeIterator(attr, -1, null, false);
  ni.nextNode();
  ni.nextNode();
  console.log("test1: iterator should be on the first child attribute: " + (ni.referenceNode === attr.firstChild));

  attr.removeChild(attr.firstChild);
  console.log("test1: iterator should be on the attribute now: " + (ni.referenceNode === attr));
}

function test2()
{
  var attr = document.createAttribute("foo");
  attr.value = "bar";
  var ni = document.createNodeIterator(attr, -1, null, false);
  ni.nextNode();
  ni.nextNode();
  console.log("test2: iterator should be on the first child attribute: " + (ni.referenceNode === attr.firstChild));

  attr.value = "";
  console.log("test2: iterator should be on the attribute now: " + (ni.referenceNode === attr));
}

function test3()
{
  var attr = document.createAttribute("foo");
  attr.value = "bar";
  var node = document.createElement("div");
  node.setAttributeNode(attr);
  var ni = document.createNodeIterator(attr, -1, null, false);
  ni.nextNode();
  ni.nextNode();
  console.log("test3: iterator should be on the first child attribute: " + (ni.referenceNode === attr.firstChild));

  node.setAttribute("foo", "");
  console.log("test3: iterator should be on the attribute now: " + (ni.referenceNode === attr));
}

test1();
test2();
test3();

</script>
</pre>
</body>
</html>
