<html>
<head>
<script src="resources/TestDoctype.js"></script>
<script>
if (window.testRunner)
testRunner.dumpAsText();
test = function(mode, doctype)
{
var doc = document.getElementsByTagName('iframe')[0].contentDocument
doc.open();
doc.write(doctype + "\n<html><body></body></html>")
doc.close();
testDoctype(doc, mode, doctype);
}
onload = function()
{
// Test No Doctype
test('Quirks', '');
// Test Doctypes that force Standards mode
test('Standards', '<!DOCTYPE HTML>');
test('Standards', '<!DOCTYPE HTML SYSTEM "http://www.w3.org/TR/REC-html40/strict.dtd">');
test('Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">');
test('Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">');
test('Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">');
test('Standards', '<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HyperText Markup Language//EN">');
test('Standards', '<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN">');
test('Standards', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML i18n//EN">');
test('Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">');
// Test Doctypes that force Almost-Standards mode
test('Almost Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">');
test('Almost Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN">');
test('Almost Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">');
test('Almost Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">');
// Test Doctypes that force Quirks mode
test('Quirks', '<!DOCTYPE HTML NOT UNDERSTOOD>');
test('Quirks', '<!DOCTYPE HTML [ <!ELEMENT TEST - - (P) > ]>');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">');
test('Quirks', '<!DOCTYPE html SYSTEM "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//SoftQuad Software//DTD HoTMetaL PRO 6.0::19990601::extensions to HTML 4.0//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//SoftQuad//DTD HoTMetaL PRO 4.0::19971010::extensions to HTML 4.0//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN//3.0">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 3.0//EN//">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 3.0//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3 1995-03-24//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN//">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 3//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 3//EN//3.0">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//AdvaSoft Ltd//DTD HTML 3.0 asWedit + extensions//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict//EN//3.0">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML Strict 3.0//EN//">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 3//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 3//EN//3.0">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "HTML">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN//2.0">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 2//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 2//EN//2.0">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Level 2//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 1//EN">');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 1//EN//2.0".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Level 1//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 0//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 0//EN//2.0".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict//EN//2.0".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 2//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 2//EN//2.0".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 1//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 1//EN//2.0".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 1//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 0//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 0//EN//2.0".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//WebTechs//DTD Mozilla HTML//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//WebTechs//DTD Mozilla HTML 2.0//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Netscape Comm. Corp.//DTD HTML//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Netscape Comm. Corp.//DTD HTML//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Netscape Comm. Corp.//DTD Strict HTML//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 2.0 HTML//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 2.0 HTML Strict//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 2.0 Tables//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 HTML//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 HTML Strict//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 Tables//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Sun Microsystems Corp.//DTD HotJava HTML//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Sun Microsystems Corp.//DTD HotJava Strict HTML//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.1E//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//O\'Reilly and Associates//DTD HTML Extended 1.0//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//O\'Reilly and Associates//DTD HTML Extended Relaxed 1.0//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//O\'Reilly and Associates//DTD HTML 2.0//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//SQ//DTD HTML 2.0 HoTMetaL + extensions//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Spyglass//DTD HTML 2.0 Extended//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "+//Silmaril//DTD HTML Pro v0r11 19970101//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Experimental 19960712//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Experimental 970421//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2S Draft//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN".');
test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Metrius//DTD Metrius Presentational//EN".');
// Test malformed Doctypes
test('Quirks', '<!DOCTYPE>');
test('Standards', '<!DOCTYPEhtml>');
test('Quirks', '<!DOCTYPEfoo>');
test('Standards', '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML Transitional 4.01//EN">');
test('Quirks', '<!DOCTYPE html PUBLIC');
test('Quirks', '<!DOCTYPE html PUBLIC \'');
test('Quirks', '<!DOCTYPE html PUBLIC \'x');
test('Standards', '<!DOCTYPE html SYSTEM "-//W3C//DTD HTML Transitional 4.01//EN">');
test('Standards', '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML Transitional 4.01//EN" "-//W3C//DTD HTML Transitional 4.01//EN">');
test('Quirks', '<!DOCTYPE html PUBLIC \">x');
test('Quirks', '<!DOCTYPE html PUBLIC \'>x');
test('Quirks', '<!DOCTYPE html PUBLIC "foo" \">x');
test('Quirks', '<!DOCTYPE html PUBLIC \'foo\' \'>x');
test('Quirks', '<!DOCTYPE html ');
// Test Doctypes not at the beginning of the Document
test('Quirks', '<html><body></body></html><!DOCTYPE html>');
test('Quirks', '<html><body><!DOCTYPE html></body></html>');
test('Standards', '<!-- comment --><!DOCTYPE html>');
}
</script>
</head>
<body>
<pre id='console'></pre>
<iframe src="resources/subframe.html"></iframe>
</body>
</html>