104 lines
3.9 KiB
HTML
104 lines
3.9 KiB
HTML
<html>
|
|
<head>
|
|
<style type="text/css">
|
|
.pass { color: green; }
|
|
.fail { color: red; }
|
|
</style>
|
|
<script>
|
|
function printOut(msg)
|
|
{
|
|
var console = document.getElementById("console");
|
|
var span = document.createElement('span');
|
|
span.innerHTML = msg + '<br>';
|
|
console.appendChild(span);
|
|
}
|
|
|
|
function resultStringifier(result)
|
|
{
|
|
if (result === "")
|
|
return "<b>the empty string</b>";
|
|
else if (result === null)
|
|
return "<b>null</b>";
|
|
else if (result === undefined)
|
|
return "<b>undefined</b>";
|
|
return "the string '" + result + "'";
|
|
}
|
|
|
|
function nullTestDocumentAttribute(documentType, doc, attr, expected, expectedExceptionCode)
|
|
{
|
|
var result;
|
|
try {
|
|
doc[attr] = null;
|
|
if (expectedExceptionCode != undefined)
|
|
result = "<span class='fail'>TEST FAILED:</span> Should've thrown " + expectedExceptionCode + " but threw nothing.";
|
|
else if (doc[attr] === expected)
|
|
result = "<span class='pass'>TEST SUCCEEDED:</span> The value was " + resultStringifier(expected) + ".";
|
|
else
|
|
result = "<span class='fail'>TEST FAILED:</span> The value should have been " + resultStringifier(expected) + " but was " + resultStringifier(doc[attr]) + ".";
|
|
|
|
} catch (ex) {
|
|
if (ex.code == expectedExceptionCode)
|
|
result = "<span class='pass'>TEST SUCCEEDED:</span> Got the expected exception (" + ex.code + ").";
|
|
else
|
|
result = "<span class='fail'>TEST FAILED:</span> Should've thrown " + expectedExceptionCode + " but threw " + ex.code + ".";
|
|
}
|
|
|
|
result += " [tested " + documentType + "." + attr + "]";
|
|
printOut(result);
|
|
}
|
|
|
|
function runTests()
|
|
{
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
|
|
// Others to test:
|
|
// Functions
|
|
|
|
var xmlDoc = document.implementation.createDocument(null, null, null);
|
|
var htmlDoc = document.implementation.createHTMLDocument('A Title');
|
|
htmlDoc.body = htmlDoc.createElement('body');
|
|
|
|
var listing = [
|
|
{
|
|
typeName: 'Document',
|
|
docToUse: xmlDoc,
|
|
attributes: [
|
|
{name: 'xmlVersion', expectedExceptionCode: 9}
|
|
]
|
|
},
|
|
{
|
|
typeName: 'HTMLDocument',
|
|
docToUse: htmlDoc,
|
|
attributes: [
|
|
{name: 'title', expectedNull: 'null'},
|
|
{name: 'cookie', expectedNull: ''},
|
|
{name: 'bgColor', expectedNull: ''},
|
|
{name: 'fgColor', expectedNull: ''},
|
|
{name: 'alinkColor', expectedNull: ''},
|
|
{name: 'linkColor', expectedNull: ''},
|
|
{name: 'vlinkColor', expectedNull: ''},
|
|
{name: 'dir', expectedNull: ''},
|
|
{name: 'designMode', expectedNull: 'off'}
|
|
]
|
|
}
|
|
];
|
|
|
|
for (doc in listing) {
|
|
var typeName = listing[doc].typeName;
|
|
var docToUse = listing[doc].docToUse;
|
|
var attrs = listing[doc].attributes;
|
|
for (attr in attrs) {
|
|
nullTestDocumentAttribute(typeName, docToUse, attrs[attr].name, attrs[attr].expectedNull, attrs[attr].expectedExceptionCode);
|
|
}
|
|
printOut('');
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTests()">
|
|
<p>This test setting various attributes of documents to JavaScript null.</p>
|
|
<div id="console"></div>
|
|
</body>
|
|
</html>
|