<!doctype html>
<html>
    <head>
        <script src="harness.js"></script>
    </head>
    <body>
        <script>
            // test1: 1-to-1
            {
                var root = document.createElement("div");
                var elem = document.createElement("div");
                var foo = document.createTextNode("foo");
                var bar = document.createTextNode("bar");

                elem.appendChild(bar);
                is(elem.replaceChild(bar, bar), bar, "test1-0, 1-to-1");
                is(elem.childNodes[0], bar, "test1-1, 1-to-1");

                root.appendChild(foo);
                is(root.replaceChild(bar, foo), foo, "test1-2, 1-to-1");
                is(elem.childNodes.length, 0, "test1-3, 1-to-1");
                is(root.childNodes[0], bar, "test1-4, 1-to-1");

                elem.appendChild(foo);
                is(root.replaceChild(elem, bar), bar, "test1-5, 1-to-1");
                is(root.childNodes[0].childNodes[0], foo, "test1-6, 1-to-1");
            }

            // test2: doctype
            {
                var doc_doctype = document.doctype;
                var new_doctype = document.implementation.createDocumentType("html", null, null);

                is_not(doc_doctype, new_doctype, "test2-0, doctype");
                is(document.replaceChild(new_doctype, doc_doctype), doc_doctype, "test2-1, doctype");
                is(document.doctype, new_doctype, "test2-2, doctype");
            }

            // test3: documentElement
            {
                var doc_elem = document.documentElement;
                var new_elem = document.createElement("html");

                is_not(doc_elem, new_elem, "test3-0, documentElement");
                is(document.replaceChild(new_elem, doc_elem), doc_elem, "test3-1, documentElement");
                is(document.documentElement, new_elem, "test3-2, documentElement");
            }
        </script>
    </body>
</html>