summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/the-xhtml-syntax/parsing-xhtml-documents/support/xhtml-mathml-dtd-entity.htm
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/the-xhtml-syntax/parsing-xhtml-documents/support/xhtml-mathml-dtd-entity.htm')
-rw-r--r--testing/web-platform/tests/html/the-xhtml-syntax/parsing-xhtml-documents/support/xhtml-mathml-dtd-entity.htm49
1 files changed, 49 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/the-xhtml-syntax/parsing-xhtml-documents/support/xhtml-mathml-dtd-entity.htm b/testing/web-platform/tests/html/the-xhtml-syntax/parsing-xhtml-documents/support/xhtml-mathml-dtd-entity.htm
new file mode 100644
index 0000000000..af3fe90284
--- /dev/null
+++ b/testing/web-platform/tests/html/the-xhtml-syntax/parsing-xhtml-documents/support/xhtml-mathml-dtd-entity.htm
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<script>
+ var parser = new DOMParser();
+ var parse = parser.parseFromString.bind(parser);
+
+ function generateTestFunction(entitystring, expectedString, publicId, systemId, mimeType, friendlyMime) {
+ return function () {
+ var doctypeString = '<!DOCTYPE html';
+ if (publicId != null)
+ doctypeString += ' PUBLIC "' + publicId + '" "' + systemId + '">';
+ else if (systemId != null)
+ doctypeString += ' SYSTEM "' + systemId + '">';
+ else // both are null
+ doctypeString += '>';
+ var doc = parse(doctypeString + "<html><head></head><body id='test'>"+entitystring+"</body></html>", mimeType);
+ var root = doc.getElementById('test');
+ parent.assert_not_equals(root, null, friendlyMime + " parsing the entity reference caused a parse error;");
+ parent.assert_true(!!root.firstChild);
+ // Next line because some browsers include the partial parsed result in the parser error returned document.
+ parent.assert_equals(root.firstChild.nodeType, 3/*Text*/, friendlyMime + " parsing the entity reference caused a parse error;");
+ var text = root.firstChild.data;
+ for (var i = 0, len = expectedString.length; i < len; i++) {
+ parent.assert_equals(text.charCodeAt(i),expectedString.charCodeAt(i));
+ }
+ }
+ }
+
+ function setupTests(jsonEntities, publicId, systemId, mimeType, friendlyMime) {
+ for (entityName in jsonEntities) {
+ if ((mimeType == "text/html") || /;$/.test(entityName)) {
+ parent.test(generateTestFunction(entityName, jsonEntities[entityName].characters, publicId, systemId, mimeType, friendlyMime), friendlyMime + " parsing " + entityName);
+ }
+ }
+ }
+
+ parent.setup(function() {}, {explicit_done: true});
+
+ function run(row) {
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", "entities.json");
+ xhr.onload = function () {
+ var entitiesJSON = JSON.parse(xhr.response);
+ setupTests(entitiesJSON, row[1], row[2], row[0], row[3]);
+ parent.done();
+ }
+ xhr.send();
+ }
+</script>