<html>
<head>
<script>

function debug(str)
{
    document.getElementById('console').appendChild(document.createTextNode(str))
}

function runTest()
{
    if (window.layoutTestController)
        layoutTestController.dumpAsText();

    try {
        // add two docType elements to test handling multiple addition of docTypes, since document has no docType initially
        document.appendChild(document.implementation.createDocumentType("example", "http://www.example.com/", "myDoc.dtd"));
        document.appendChild(document.implementation.createDocumentType("example", "http://www.example.com/", "myDoc.dtd"));
        debug("FAILURE: Did not throw exception and should throw node hierarchy error.");
        return;
    }
    catch (e) {
        if (e.code != 3) {
            debug("FAILURE: Threw an exception with a code other than 3; should throw node hierarchy error.");
            return;
        }
    }

    debug('SUCCESS!')
}

</script>
</head>
<body onload="runTest();">
This tests that a document only supports having one doctype.
If the test is successful, 'SUCCESS' will be displayed below, otherwise 'FAILURE' and a reason will be displayed.
<pre id="console"></pre>
</body>
</html>
