Test of exception forwarding for NodeIterator and TreeWalker, derived from an early version of Acid3

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS i.nextNode() threw exception Roses.
PASS i.nextNode() is document.documentElement
PASS i.previousNode() threw exception Roses.
PASS w.nextNode() threw exception Roses.
PASS w.nextNode() is document.documentElement.firstChild
PASS w.previousNode() threw exception Roses.
PASS w.firstChild() threw exception Roses.
PASS w.lastChild() threw exception Roses.
PASS w.nextSibling() threw exception Roses.
PASS w.previousSibling() is null
PASS w.nextSibling() is document.body.previousSibling
PASS w.previousSibling() is document.head
PASS iteration is 11
PASS successfullyParsed is true

TEST COMPLETE

