var level3 = require("../../lib/jsdom/level3").dom.level3; var getImplementation = function() { var doc = new level3.core.Document(); return doc.implementation; }; function DOMErrorMonitor() { this.allErrors = new Array(); } DOMErrorMonitor.prototype.handleError = function(err) { errorMonitor.allErrors[errorMonitor.allErrors.length] = new DOMErrorImpl(err); } DOMErrorMonitor.prototype.assertLowerSeverity = function(test, id, severity) { var i; for (i = 0; i < this.allErrors.length; i++) { if (this.allErrors[i].severity >= severity) { test.strictEqual(severity - 1, this.allErrors[i].severity, id); } } } // XXX: this is horrible! function getResourceURI() { return ""; } function load() { return new level3.core.Document(); } exports.tests = { /** * Changes certifiedText on LSInput. * @author Curt Arnold * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-DOMImplementationLS-createLSInput * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSInput-certifiedText */ CertifiedText1 : function (test) { var domImpl = getImplementation(); var input = domImpl.createLSInput(); var certifiedText = input.certifiedText; test.ok(certifiedText === false, "initiallyFalse"); input.certifiedText = true; certifiedText = input.certifiedText; test.ok(certifiedText, "setTrue"); input.certifiedText = false; certifiedText = input.certifiedText; test.ok(certifiedText === false, "setFalse"); test.done(); }, /** * Writes a document to a character stream and rereads the document. * @author Curt Arnold * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-DOMImplementationLS-createLSInput * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSInput-characterStream * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSOutput-characterStream */ CharacterStream1 : function (test) { var success, testDoc, domImpl, output, serializer, writer, checkWriter, reader, checkReader, status, input, parser, checkDoc, docElem, docElemName, NULL_SCHEMA_TYPE = null, testDocRef = null; if (typeof(this.testDoc) != 'undefined') { testDocRef = this.testDoc; } testDoc = load(testDocRef, "testDoc", "test0"); domImpl = getImplementation(); output = domImpl.createLSOutput(); checkWriter = output.characterStream; test.ok(checkWriter === null, "writerInitiallyNull"); output.characterStream = writer; checkWriter = output.characterStream; test.ok(checkWriter !== null, "writerNotNull"); serializer = domImpl.createLSSerializer(); status = serializer.write(testDoc,output); test.ok(status, "writeStatus"); reader = writer; input = domImpl.createLSInput(); checkReader = input.characterStream; test.ok(checkReader === null, "readerInitiallyNull"); input.characterStream = reader; checkReader = input.characterStream; test.ok(checkReader !== null, "readerNotNull"); parser = domImpl.createLSParser(1,NULL_SCHEMA_TYPE); checkDoc = parser.parse(input); test.ok(checkDoc !== null, "checkNotNull"); docElem = checkDoc.documentElement; docElemName = docElem.nodeName; test.strictEqual("elt0", docElemName, "checkDocElemName"); test.done(); }, /** * Parses a document twice, once using a filter to reject all elt1 elements. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-filter * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParserFilter-startElement * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParserFilter-whatToShow */ DOMBuilderFilterTest0 : function (test) { // TODO: finish the implementation of this filter function LSParserFilterN10027() {} var success, myfilter = new LSParserFilterN10027(), list, count, resourceURI, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null, ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); resourceURI = getResourceURI(TEST1); document = builder.parseURI(resourceURI); list = document.getElementsByTagName("elt1"); count = list.length; test.strictEqual(1, count, "filter_count_1"); builder.filter = myfilter; document = builder.parseURI(resourceURI); test.ok(document !== null, "secondParseDocumentNotNull"); list = document.getElementsByTagName("elt1"); count = list.length; test.strictEqual(0, count, "filter_count_2"); test.done(); }, /** * DOM Builder Filter test, test whether incorrect node types are never passed to the filter. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-Interfaces-LSParserFilter * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-filter * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParserFilter-acceptNode */ DOMBuilderFilterTest1 : function (test) { function LSParserFilterN1002B() {} var success, resourceURI, myfilter = new LSParserFilterN1002B(), implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null, ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); builder.filter = myfilter; resourceURI = getResourceURI(TEST7); document = builder.parseURI(resourceURI); test.ok(document !== null, "documentNotNull"); test.done(); }, /** * Checks that attributes are visible when elements are passed to LSParserFilter.startElement. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-Interfaces-LSParserFilter * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParserFilter-startElement */ DOMBuilderFilterTest2 : function (test) { function LSParserFilterN10028() {} var success, resourceURI; myfilter = new LSParserFilterN10028(); var implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); builder.filter = myfilter; resourceURI = getResourceURI(TEST3); document = builder.parseURI(resourceURI); test.done(); }, /** * Parses a document, writes it to string, parses the string and checks that the number of elt1 elements is as expected. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parse * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parseURI * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializer-writeToString * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSInput-stringData */ DOMBuilderTest0 : function (test) { var success, elementList, stringDoc, resourceURI, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); resourceURI = getResourceURI(TEST0); document = builder.parseURI(resourceURI); elementList = document.getElementsByTagName("elt1"); test.ok(2 === elementList.length, "count_elt1_1"); stringDoc = writer.writeToString(document); inputSource.stringData = stringDoc; document = builder.parse(inputSource); elementList = document.getElementsByTagName("elt1"); test.ok(2 === elementList.length, "count_elt1_2"); test.done(); }, /** * Uses LSParser.parseWithContext to replace a node in an existing document. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parseWithContext */ DOMBuilderTest1 : function (test) { var success, elementList, stringDoc, firstElt2, returnNode, resourceURI, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); resourceURI = getResourceURI(TEST0); document = builder.parseURI(resourceURI); elementList = document.getElementsByTagName("elt2"); test.ok(1 === elementList.length, "elt2Count_1"); firstElt2 = elementList.item(0); resourceURI = getResourceURI(TEST2); inputSource.systemId = resourceURI; try { returnNode = builder.parseWithContext(inputSource,firstElt2,ACTION_REPLACE); } catch (ex) { if (typeof(ex.code) != 'undefined') { switch(ex.code) { case /* NOT_SUPPORTED_ERR */ 9 : return ; default: throw ex; } } else { throw ex; } } elementList = document.getElementsByTagName("elt2"); test.ok(1 === elementList.length, "elt2Count_2"); elementList = document.getElementsByTagName("elt3"); test.ok(1 === elementList.length, "elt3Count"); test.done(); }, /** * Uses LSParser.parseWithContext to append a document as a child of an existing node. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parseWithContext */ DOMBuilderTest2 : function (test) { var success, elementList, stringDoc, firstElt0, returnNode, resourceURI, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); resourceURI = getResourceURI(TEST0); document = builder.parseURI(resourceURI); elementList = document.getElementsByTagName("elt0"); test.ok(1 === elementList.length, "count_elt0"); firstElt0 = elementList.item(0); resourceURI = getResourceURI(TEST2); inputSource.systemId = resourceURI; try { returnNode = builder.parseWithContext(inputSource,firstElt0,ACTION_APPEND_AS_CHILDREN); } catch (ex) { if (typeof(ex.code) != 'undefined') { switch(ex.code) { case /* NOT_SUPPORTED_ERR */ 9 : return ; default: throw ex; } } else { throw ex; } } elementList = document.getElementsByTagName("elt2"); test.ok(2 === elementList.length, "count_elt2"); elementList = document.getElementsByTagName("elt3"); test.ok(1 === elementList.length, "count_elt3"); test.done(); }, /** * Uses LSParser.parseWithContext to insert a document after a node. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parseWithContext */ DOMBuilderTest3 : function (test) { var success, elementList, stringDoc, firstElt1, secondElt1, thirdElt, nodeName, returnNode, resourceURI, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); resourceURI = getResourceURI(TEST0); document = builder.parseURI(resourceURI); elementList = document.getElementsByTagName("elt1"); test.ok(2 === elementList.length, "count_elt1"); firstElt1 = elementList.item(0); secondElt1 = firstElt1.nextSibling; nodeName = secondElt1.nodeName; test.strictEqual("elt1", nodeName, "nextSibling_before_add"); resourceURI = getResourceURI(TEST2); inputSource.systemId = resourceURI; try { returnNode = builder.parseWithContext(inputSource,firstElt1,ACTION_INSERT_AFTER); } catch (ex) { if (typeof(ex.code) != 'undefined') { switch(ex.code) { case /* NOT_SUPPORTED_ERR */ 9 : return ; default: throw ex; } } else { throw ex; } } secondElt1 = firstElt1.nextSibling; nodeName = secondElt1.nodeName; test.strictEqual("elt2", nodeName, "nextSibling_after_add"); thirdElt = secondElt1.nextSibling; nodeName = thirdElt.nodeName; test.strictEqual("elt1", nodeName, "nextSiblings_sibling_after_add"); test.done(); }, /** * Uses LSParser.parseWithContext to insert a document before a node. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parseWithContext */ DOMBuilderTest4 : function (test) { var success, elementList, stringDoc, firstElt1, secondElt1, thirdElt, nodeName, returnNode, resourceURI, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); resourceURI = getResourceURI(TEST0); document = builder.parseURI(resourceURI); elementList = document.getElementsByTagName("elt1"); test.ok(2 === elementList.length, "count_elt1"); secondElt1 = elementList.item(1); firstElt1 = secondElt1.previousSibling; nodeName = firstElt1.nodeName; test.strictEqual("elt1", nodeName, "previousSibling_before_insert_before"); resourceURI = getResourceURI(TEST2); inputSource.systemId = resourceURI; try { returnNode = builder.parseWithContext(inputSource,secondElt1,ACTION_INSERT_BEFORE); } catch (ex) { if (typeof(ex.code) != 'undefined') { switch(ex.code) { case /* NOT_SUPPORTED_ERR */ 9 : return ; default: throw ex; } } else { throw ex; } } firstElt1 = secondElt1.previousSibling; nodeName = firstElt1.nodeName; test.strictEqual("elt2", nodeName, "previousSibling_after_insert_before"); test.done(); }, /** * supported-media-types-only is set to true if supported and an XML file with an unsupported media type from an HTTP server on the local machine is retrieved. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parseURI * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#parameter-supported-media-types-only */ DOMBuilderTest5 : function (test) { var success, elementList, stringDoc, configuration, ERROR_HANDLER = "error-handler", SUPPORTED_MEDIATYPES_ONLY = "supported-media-types-only", mediaTypesSupported, resourceURI; function DOMErrorHandlerN10042() {}; var errorHandler = new DOMErrorHandlerN10042(); var implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); configuration = builder.domConfig; resourceURI = getResourceURI(TESTPDF); document = builder.parseURI(resourceURI); test.ok(document !== null, "testpdf_parsed"); mediaTypesSupported = configuration.canSetParameter(SUPPORTED_MEDIATYPES_ONLY,true); if( mediaTypesSupported ) { configuration.setParameter(SUPPORTED_MEDIATYPES_ONLY, true); configuration.setParameter(ERROR_HANDLER, errorHandler.handleError); { success = false; try { document = builder.parseURI(resourceURI); } catch(ex) { success = (typeof(ex.code) != 'undefined' && ex.code == 81); } test.ok(success, "throw_PARSE_ERR"); } } test.done(); }, /** * Parses from an uninitialized LSInput. * @author Curt Arnold * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parse */ DOMBuilderTest6 : function (test) { var success, domImpl, parser, NULL_SCHEMA_TYPE = null; var input, document; domImpl = getImplementation(); parser = domImpl.createLSParser(1,NULL_SCHEMA_TYPE); input = domImpl.createLSInput(); { success = false; try { document = parser.parse(input); } catch(ex) { success = (typeof(ex.code) != 'undefined' && ex.code == 81); } test.ok(success, "throw_PARSE_ERR"); } test.done(); }, /** * Parses an unresolvable System ID. * @author Curt Arnold * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parse */ DOMBuilderTest8 : function (test) { var success, domImpl, parser, NULL_SCHEMA_TYPE = null; var input, document, resourceURI; domImpl = getImplementation(); parser = domImpl.createLSParser(1,NULL_SCHEMA_TYPE); input = domImpl.createLSInput(); resourceURI = getResourceURI("test0"); resourceURI = resourceURI + "_missing"; input.systemId = resourceURI; { success = false; try { document = parser.parse(input); } catch(ex) { success = (typeof(ex.code) != 'undefined' && ex.code == 81); } test.ok(success, "throw_PARSE_ERR"); } test.done(); }, /** * Checks parameters on call to resolve resource are as expected and redirects to parse a different resource. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSResourceResolver-resolveResource * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#parameter-resource-resolver */ DOMEntityResolverTest0 : function (test) { var success, resourceURI, elt2List, elt2Count; function LSResourceResolverN10030() {} myentityresolver = new LSResourceResolverN10030(); var configuration, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); configuration = builder.domConfig; configuration.setParameter("resource-resolver", myentityresolver); resourceURI = getResourceURI(TEST4); document = builder.parseURI(resourceURI); elt2List = document.getElementsByTagName("elt2"); elt2Count = elt2List.length; test.strictEqual(1, elt2Count, "elt2Count"); test.done(); }, /** * Tests a custom entity resolver. The entity resolver creates an input source that supplies 2 elt1 elements. The original entity reference referes to 1 elt1 * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSResourceResolver-resolveResource * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#parameter-resource-resolver */ DOMEntityResolverTest1 : function (test) { var success; function LSResourceResolverN10028() {}; myentityresolver = new LSResourceResolverN10028(); var elementList, configuration, resourceURI, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); configuration = builder.domConfig; resourceURI = getResourceURI(TEST4); document = builder.parseURI(resourceURI); elementList = document.getElementsByTagName("elt1"); test.ok(2 === elementList.length, "count_elt1_before_applying_entity_resolver"); configuration.setParameter("resource-resolver", myentityresolver); document = builder.parseURI(resourceURI); elementList = document.getElementsByTagName("elt1"); test.ok(3 === elementList.length, "count_elt1_after_applying_entity_resolver"); test.done(); }, /** * Resource resolvers do not participate in resolving the top-level document entity. This test attempts to redirect any resource and then checks that the requested document was not affected. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSResourceResolver-resolveResource * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#parameter-resource-resolver */ DOMEntityResolverTest2 : function (test) { function LSResourceResolverN10030(){} LSResourceResolverN10030.prototype={}; var success, resourceURI, docElem, docElemName; myentityresolver = new LSResourceResolverN10030(); var configuration, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); configuration = builder.domConfig; configuration.setParameter("resource-resolver", myentityresolver); resourceURI = getResourceURI(TEST0); document = builder.parseURI(resourceURI); test.ok(document !== null, "documentNotNull"); docElem = document.documentElement; docElemName = docElem.nodeName; test.strictEqual("elt0", docElemName, "docElemName"); test.done(); }, /** * Uses DOMImplementationLS.createLSParser to create a synchronous parser with an unspecified schema type. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-DOMImplementationLS-createLSParser * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-async * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-busy * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-filter */ DOMImplementationLSTest0 : function (test) { var success, isAsync, isBusy, filter, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); test.ok(builder !== null, "builderNotNull"); isAsync = builder.async; test.ok(isAsync === false, "notAsync"); isBusy = builder.busy; test.ok(isBusy === false, "notBusy"); filter = builder.filter; test.ok(filter === null, "nullFilter"); test.done(); }, /** * Calls DOMImplementationLS.createLSParser(MODE_ASYNCHRONOUS, null) and checks the return value is not null. Only applicable if DOMImplementation.hasFeature("LS-ASync", null) is true. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-DOMImplementationLS-createLSParser * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-async * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-busy * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-filter */ DOMImplementationLSTest1 : function (test) { var success, isAsync, isBusy, filter, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_ASYNCHRONOUS,NULL_SCHEMATYPE); test.ok(builder !== null, "builderNotNull"); isAsync = builder.async; test.ok(isAsync, "notAsync"); isBusy = builder.busy; test.ok(isBusy === false, "notBusy"); filter = builder.filter; test.ok(filter === null, "nullFilter"); test.done(); }, /** * Calls DOMImplementationLS.createLSParser(MODE_SYNCHRONOUS, "http://www.w3.org/TR/REC-xml") and checks the return value is not null. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-DOMImplementationLS-createLSParser */ DOMImplementationLSTest2 : function (test) { var success, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,DTD_SCHEMATYPE); test.ok(builder !== null, "builderNotNull"); test.done(); }, /** * Calls DOMImplementationLS.createLSParser(MODE_SYNCHRONOUS, "http://www.w3.org/2001/XMLSchema"). Should either throw a NOT_SUPPORTED_ERR or return a non-null builder. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-DOMImplementationLS-createLSParser */ DOMImplementationLSTest3 : function (test) { var success, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; try { builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,SCHEMA_SCHEMATYPE); test.ok(builder !== null, "builderNotNull"); } catch (ex) { test.ok(ex.code === /* NOT_SUPPORTED_ERR */ 9); } test.done(); }, /** * Calls DOMImplementationLS.createLSParser(MODE_SYNCHRONOUS, "http://nobody...err") expecting that a NOT_SUPPORTED_ERR would be raised. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-DOMImplementationLS-createLSParser */ DOMImplementationLSTest4 : function (test) { var success, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; { success = false; try { builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,"http://nobody_should_support_this_schematype_this_should_throw_a_not_supported_err"); } catch(ex) { success = (typeof(ex.code) != 'undefined' && ex.code == 9); } test.ok(success, "NOT_SUPPORTED_ERR"); } test.done(); }, /** * Calls DOMImplementationLS.createLSParser(MODE_SYNCHRONOUS, "http://nobody...err") expecting that a NOT_SUPPORTED_ERR would be raised. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-DOMImplementationLS-createLSParser */ DOMImplementationLSTest5 : function (test) { var success, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; { success = false; try { builder = lsImplementation.createLSParser(17,NULL_SCHEMATYPE); } catch(ex) { success = (typeof(ex.code) != 'undefined' && ex.code == 9); } test.ok(success, "NOT_SUPPORTED_ERR"); } test.done(); }, /** * Parses a document from a byte stream. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSInput-byteStream * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parse */ DOMInputSourceTest0 : function (test) { var success, myByteStream = "3C656C74302F3E", elementList, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); inputSource.byteStream = myByteStream; document = builder.parse(inputSource); elementList = document.getElementsByTagName("elt0"); test.ok(1 === elementList.length, "count_elt0"); test.done(); }, /** * Parses a document from a character stream. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSInput-characterStream * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parse */ DOMInputSourceTest1 : function (test) { var success, myReader = "<elt0/>", elementList, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); inputSource.characterStream = myReader; document = builder.parse(inputSource); elementList = document.getElementsByTagName("elt0"); test.ok(1 === elementList.length, "count_elt0"); test.done(); }, /** * test the builder by using a string inputsource * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSInput-stringData * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parse */ DOMInputSourceTest2 : function (test) { var success, elementList, myString = "<elt0>elt0</elt0>", implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); inputSource.stringData = myString; document = builder.parse(inputSource); elementList = document.getElementsByTagName("elt0"); test.ok(1 === elementList.length, "count_elt0"); test.done(); }, /** * Specify encodings for LSInput with string data. The setting should have no effect and the inputEncoding of the resulting document should be UTF-16. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSInput-encoding * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parse */ DOMInputSourceTest3 : function (test) { var success, myString = "<elt0>elt0</elt0>", encodingString, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); inputSource.stringData = myString; inputSource.encoding = "UTF-8"; document = builder.parse(inputSource); encodingString = document.inputEncoding; test.strictEqual("UTF-16".toLowerCase(), encodingString.toLowerCase(), "encodingstringcheck0"); test.done(); }, /** * tests whether DOMInput whether abort can be called even if loading is finished already * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-abort */ DOMInputSourceTest4 : function (test) { var success, elementList, myString = "<elt0>elt0</elt0>", implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); inputSource.stringData = myString; document = builder.parse(inputSource); builder.abort(); test.done(); }, /** * Parses a document containing an external entity and checks that resource resolver is passed the baseURI value specified on LSInput. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSInput-systemId * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSInput-publicId * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSInput-baseURI * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSResourceResolver-resolveResource */ DOMInputSourceTest5 : function (test) { function LSResourceResolverN1002A() {} /** * * Allow the application to resolve external resources. * TheLSParserwill call this method before opening any external resource, * including the external DTD subset, external entities referenced within the DTD, * and external entities referenced within the document element (however, the * top-level document entity is not passed to this method). The application may then * request that theLSParserresolve the external resource itself, that it use an * alternative URI, or that it use an entirely different input source. * * Application writers can use this method to redirect external system identifiers to * secure and/or local URI, to look up public identifiers in a catalogue, or to read * an entity from a database or other input source (including, for example, a dialog box). * * @param type * The type of the resource being resolved. For XMLresources (i.e. entities), applications must * use the value"http://www.w3.org/TR/REC-xml". For XML Schema, applications must use the * value"http://www.w3.org/2001/XMLSchema". Other types of resources are outside the scope of * this specification and therefore should recommend an absolute URI in order to use this method. * @param namespaceURI * The namespace of the resource being resolved, e.g. the target namespace of the XML Schemawhen * resolving XML Schema resources. * @param publicId * The public identifier of the external entity being referenced, ornullif no public identifier * was supplied or if the resource is not an entity. * @param systemId * The system identifier, a URI reference, of the external resource being referenced, ornullif no * system identifier was supplied. * @param baseURI * The absolute base URI of the resource being parsed, ornullif there is no base URI. */ LSResourceResolverN1002A.prototype.resolveResource = function(type, namespaceURI, publicId, systemId, baseURI) { // // bring class variables into function scope // var domImplLS; var input; test.strictEqual("http://www.example.com/new_base",baseURI); test.strictEqual("-//X-Hive//native xml storage//EN",publicId); // TODO: implement this in a helper somewhere //assertURIEquals(test,null,null,null,null,"test5",null,null,true,systemId); domImplLS = getImplementation(); input = domImplLS.createLSInput(); input.stringData = ""; return input; } var success; myentityresolver = new LSResourceResolverN1002A(); var configuration, resourceURI, nodeList, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); configuration = builder.domConfig; configuration.setParameter("resource-resolver", myentityresolver); configuration.setParameter("entities", false); // TODO: WTF IS THIS? //resourceURI = getResourceURI(TEST4); inputSource.systemId = resourceURI; inputSource.publicId = "-//X-Hive//native xml storage//DE"; inputSource.baseURI = "http://www.example.com/new_base"; document = builder.parse(inputSource); test.ok(document !== null, "documentNotNull"); nodeList = document.getElementsByTagName("elt2"); test.ok(0 === nodeList.length, "noElt2"); nodeList = document.getElementsByTagName("elt1"); test.ok(1 === nodeList.length, "hasElt1"); test.done(); }, /** * Specify encodings for LSInput with a character stream. The setting should have no effect and the inputEncoding of the resulting document should be UTF-16. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSInput-encoding * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parse */ DOMInputSourceTest6 : function (test) { var success, encodingString, myReader = "<elt0>elt0</elt0>", implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); inputSource.encoding = "UTF-8"; inputSource.characterStream = myReader; document = builder.parse(inputSource); test.ok(document !== null, "documentNotNull"); encodingString = document.inputEncoding; test.strictEqual("UTF-16".toLowerCase(), encodingString.toLowerCase(), "encodingstringcheck0"); test.done(); }, /** * DOMSerializerFilter test, a simple test eliminating a subtree * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-Interfaces-LSSerializerFilter * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializer-LSSerializerFilter * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializerFilter-acceptNode */ DOMWriterFilterTest0 : function (test) { function LSSerializerFilterN10027(){}; var success; myfilter = new LSSerializerFilterN10027(); var configuration, stringDoc = "<elt1>first elt1<elt2>elt2</elt2></elt1>", writeResult, length, elementList, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); inputSource.stringData = stringDoc; document = builder.parse(inputSource); writer.filter = myfilter; writeResult = writer.writeToString(document); inputSource.stringData = writeResult; document = builder.parse(inputSource); elementList = document.getElementsByTagName("elt2"); test.ok(0 === elementList.length, "count_elt2"); elementList = document.getElementsByTagName("elt1"); test.ok(1 === elementList.length, "count_elt1"); test.done(); }, /** * Uses a serializer filter to eliminate attributes, parses the output and checks if the attribute is not there. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-Interfaces-LSSerializerFilter * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializer-LSSerializerFilter * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializerFilter-acceptNode * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializerFilter-whatToShow */ DOMWriterFilterTest1 : function (test) { function LSSerializerFilterN1002A(){} var success; myfilter = new LSSerializerFilterN1002A(); var configuration, stringDoc = "<elt1 attr1='attr1'>first elt1</elt1>", writeResult, length, elementList, elt1, attrNode, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); inputSource.stringData = stringDoc; document = builder.parse(inputSource); writer.filter = myfilter; writeResult = writer.writeToString(document); inputSource.stringData = writeResult; document = builder.parse(inputSource); elementList = document.getElementsByTagName("elt1"); test.ok(1 === elementList.length, "count_elt2"); elt1 = elementList.item(0); attrNode = elt1.getAttributeNode("attr1"); test.ok(attrNode === null, "attrib1"); test.done(); }, /** * Uses a filter to strip text during serialization parsers to check expections. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializer-LSSerializerFilter * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializerFilter-acceptNode * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializerFilter-whatToShow * @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=643 */ DOMWriterFilterTest2 : function (test) { var success; function LSSerialiserFilterN1002A() {} myfilter = new LSSerializerFilterN1002A(); var stringDoc = "<elt1 attr1='attr1'>first elt1</elt1>", writeResult, length, elementList, elt1, childs, attrNode, attr1, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); inputSource.stringData = stringDoc; document = builder.parse(inputSource); writer.filter = myfilter; writeResult = writer.writeToString(document); inputSource.stringData = writeResult; document = builder.parse(inputSource); elementList = document.getElementsByTagName("elt1"); elt1 = elementList.item(0); attrNode = elt1.getAttributeNode("attr1"); test.ok(attrNode !== null, "attrExists"); attr1 = attrNode.nodeValue; test.strictEqual("attr1", attr1, "attrUnchanged"); childs = elt1.hasChildNodes(); test.ok(childs === false, "nodeHasChilds_elt1"); test.done(); }, /** * Eliminates comments on serialization, parses results and checks for comments. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializer-LSSerializerFilter * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializerFilter-acceptNode * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializerFilter-whatToShow */ DOMWriterFilterTest3 : function (test) { var success; function LSSerializerFilterN10027() {} myfilter = new LSSerializerFilterN10027(); var configuration, stringDoc = "<elt1><elt2>elt2</elt2></elt1>", writeResult, length, elementList, children, elt1, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); inputSource.stringData = stringDoc; document = builder.parse(inputSource); writer.filter = myfilter; writeResult = writer.writeToString(document); inputSource.stringData = writeResult; document = builder.parse(inputSource); elementList = document.getElementsByTagName("elt1"); test.ok(1 === elementList.length, "count_elt1"); elt1 = elementList.item(0); children = elt1.childNodes; test.ok(1 === children.length, "count_children"); test.done(); }, /** * Calls LSSerializer.writeToString and checks result. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializer-writeToString */ DOMWriterTest0 : function (test) { var success, stringDoc, writeResult, elementList, resourceURI, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); resourceURI = getResourceURI(TEST0); document = builder.parseURI(resourceURI); writeResult = writer.writeToString(document); inputSource.stringData = writeResult; document = builder.parse(inputSource); elementList = document.getElementsByTagName("elt2"); test.ok(1 === elementList.length, "elt2Count_1"); test.done(); }, /** * Writes an element node to a byte stream. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSOutput-byteStream * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializer-write */ DOMWriterTest1 : function (test) { var success, stringDoc, writeResult, elementList, firstElt3, output, outputStream, inputStream = null; var resourceURI, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); resourceURI = getResourceURI(TEST2); document = builder.parseURI(resourceURI); elementList = document.getElementsByTagName("elt3"); firstElt3 = elementList.item(0); output = lsImplementation.createLSOutput(); output.byteStream = outputStream; writeResult = writer.write(firstElt3,output); inputStream = outputStream; inputSource.byteStream = inputStream; document = builder.parse(inputSource); elementList = document.getElementsByTagName("elt2"); test.ok(0 === elementList.length, "elt2Count_1"); test.done(); }, /** * Serializes a document without a XML declaration for both for 'xml-declaration' configuration values. * @author Jeroen van Rotterdam * @author X-Hive Corporation * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-Core-20031107/core#DOMConfiguration-canSetParameter * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializer-config */ DOMWriterTest2 : function (test) { var success, configuration, XML_DECLARATION = "xml-declaration", stringDoc = "<hello>me again</hello>", writeResult, xmlDecl, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); inputSource.stringData = stringDoc; document = builder.parse(inputSource); configuration = writer.domConfig; configuration.setParameter(XML_DECLARATION, false); writeResult = writer.writeToString(document); test.strictEqual(stringDoc, writeResult, "without_xml_declaration"); configuration.setParameter(XML_DECLARATION, true); writeResult = writer.writeToString(document); // TODO: umm.. what? are these tests complete? // fail("Unrecognized method or attribute substring"); test.strictEqual("<hello>me again</hello>", writeResult, xmlDecl, implementation, lsImplementation, inputSource, document, writer, builder, MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2, DTD_SCHEMATYPE = "http://www.w3.org/TR/REC-xml", SCHEMA_SCHEMATYPE = "http://www.w3.org/2001/XMLSchema", NULL_SCHEMATYPE = null; var ACTION_REPLACE_CHILDREN = 2, ACTION_APPEND_AS_CHILDREN = 1, ACTION_INSERT_AFTER = 4, ACTION_INSERT_BEFORE = 3, ACTION_REPLACE = 5, TEST0 = "test0", TEST1 = "test1", TEST2 = "test2", TEST3 = "test3", TEST4 = "test4", TEST5 = "test5", TEST6 = "test6", TEST7 = "test7", TESTPDF = "testpdf"; implementation = getImplementation(); lsImplementation = implementation; builder = lsImplementation.createLSParser(MODE_SYNCHRONOUS,NULL_SCHEMATYPE); writer = lsImplementation.createLSSerializer(); inputSource = lsImplementation.createLSInput(); inputSource.stringData = stringDoc; document = builder.parse(inputSource); configuration = writer.domConfig; configuration.setParameter(XML_DECLARATION, false); writeResult = writer.writeToString(document); test.strictEqual("<hello>me again</hello>", writeResult, "without_xml_declaration"); configuration.setParameter(XML_DECLARATION, true); writeResult = writer.writeToString(document); // TODO: umm.. what? are these tests complete? // fail("Unrecognized method or attribute substring"); test.strictEqual("= 0, "containsCDATA"); test.done(); }, /** * CDATASections should be eliminated when cdata-sections is false. * @author Curt Arnold * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializer-writeToString * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-Core-20031107/core#parameter-cdata-sections */ cdatasections04 : function (test) { var success, doc, domConfig, domImplLS, lsSerializer, docType = null; var docElem, newNode, output, retNode; domImplLS = getImplementation(); lsSerializer = domImplLS.createLSSerializer(); doc = domImplLS.createDocument("http://www.example.org","test",docType); docElem = doc.documentElement; newNode = doc.createCDATASection("foo"); retNode = docElem.appendChild(newNode); domConfig = lsSerializer.domConfig; domConfig.setParameter("cdata-sections", false); output = lsSerializer.writeToString(doc); test.ok(output.indexOf(">foo</") >= 0, "containsCDATA"); test.done(); }, /** * Parsing a non-Unicode normalized document should not raise an exception if check-character-normalization is false. * @author Curt Arnold * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parseURI * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-Core-20031107/core#parameter-check-character-normalization */ checkcharacternormalization01 : function (test) { var success, doc, domConfig, domImplLS, lsParser, resourceURI, nullSchemaLanguage = null; domImplLS = getImplementation(); lsParser = domImplLS.createLSParser(1,nullSchemaLanguage); domConfig = lsParser.domConfig; domConfig.setParameter("check-character-normalization", false); resourceURI = getResourceURI("characternormalization1"); doc = lsParser.parseURI(resourceURI); test.ok(doc !== null, "docNotNull"); test.done(); }, /** * Parsing a non-Unicode normalized document should raise PARSE_ERR if check-character-normalization is false. * @author Curt Arnold * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parseURI * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-Core-20031107/core#parameter-check-character-normalization */ checkcharacternormalization02 : function (test) { var success, doc, domConfig, domImplLS, lsParser, resourceURI, canSet, nullSchemaLanguage = null; errorMonitor = new DOMErrorMonitor(); var errors = new Array(); var error, severity, type, errorCount = 0; domImplLS = getImplementation(); lsParser = domImplLS.createLSParser(1,nullSchemaLanguage); domConfig = lsParser.domConfig; canSet = domConfig.canSetParameter("check-character-normalization",true); if( canSet ) { domConfig.setParameter("check-character-normalization", true); domConfig.setParameter("error-handler", errorMonitor.handleError); resourceURI = getResourceURI("characternormalization1"); { success = false; try { doc = lsParser.parseURI(resourceURI); } catch(ex) { success = (typeof(ex.code) != 'undefined' && ex.code == 81); } test.ok(success, "throw_PARSE_ERR"); } errors = errorMonitor.allErrors; for(var indexN1008E = 0;indexN1008E < errors.length; indexN1008E++) { error = errors[indexN1008E]; severity = error.severity; type = error.type; if( (severity > 1) ) { test.strictEqual(2, severity, "isError"); test.strictEqual("check-character-normalization-failure", type, "isCheck_Failure"); errorCount += 1; } } test.strictEqual(1, errorCount, "oneError"); } test.done(); }, /** * Characters should not be checked for normalization on serialization if check-character-normalization = false. * @author Curt Arnold * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializer-writeToString * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-Core-20031107/core#parameter-check-character-normalization */ checkcharacternormalization03 : function (test) { var success, doc, domConfig, domImplLS, lsSerializer, docType = null; var docElem, newNode, output, retNode; domImplLS = getImplementation(); lsSerializer = domImplLS.createLSSerializer(); doc = domImplLS.createDocument("http://www.example.org","suçon",docType); docElem = doc.documentElement; domConfig = lsSerializer.domConfig; domConfig.setParameter("check-character-normalization", false); domConfig.setParameter("normalize-characters", false); output = lsSerializer.writeToString(doc); test.done(); }, /** * Characters should be checked for normalization on serialization if check-character-normalization = true. * @author Curt Arnold * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializer-writeToString * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-Core-20031107/core#parameter-check-character-normalization */ checkcharacternormalization04 : function (test) { var success, doc, domConfig, domImplLS, lsSerializer, docType = null; var docElem, newNode, output, retNode; errorMonitor = new DOMErrorMonitor(); var errors = new Array(); var error, severity, type, canSet, errorCount = 0; domImplLS = getImplementation(); lsSerializer = domImplLS.createLSSerializer(); doc = domImplLS.createDocument("http://www.example.org","suçon",docType); docElem = doc.documentElement; domConfig = lsSerializer.domConfig; canSet = domConfig.canSetParameter("check-character-normalization",true); if( canSet ) { domConfig.setParameter("check-character-normalization", true); domConfig.setParameter("normalize-characters", false); domConfig.setParameter("error-handler", errorMonitor.handleError); { success = false; try { output = lsSerializer.writeToString(doc); } catch(ex) { success = (typeof(ex.code) != 'undefined' && ex.code == 82); } test.ok(success, "throw_SERIALIZE_ERR"); } errors = errorMonitor.allErrors; for(var indexN100A3 = 0;indexN100A3 < errors.length; indexN100A3++) { error = errors[indexN100A3]; severity = error.severity; type = error.type; if(("check-character-normalization-failure" == type)) { test.strictEqual(2, severity, "severityError"); errorCount += 1; } } assertTrue("hasErrors", (errorCount > 0)); } test.done(); }, /** * Load a document with comments = false and see that comments are not present in the parsed document. * @author Curt Arnold * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parseURI * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-Core-20031107/core#parameter-comments */ comments01 : function (test) { var success, doc, docElem, node, nodeType, domConfig, domImplLS, lsParser, nullSchemaType = null; var resourceURI; domImplLS = getImplementation(); lsParser = domImplLS.createLSParser(1,nullSchemaType); domConfig = lsParser.domConfig; domConfig.setParameter("comments", false); resourceURI = getResourceURI("hc_staff"); doc = lsParser.parseURI(resourceURI); docElem = doc.documentElement; node = docElem.previousSibling; nodeType = node.nodeType; test.strictEqual(10, nodeType, "nodeIsDocType"); test.done(); }, /** * Load a document with comments = true and see that comments are present in the parsed document. * @author Curt Arnold * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSParser-parseURI * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-Core-20031107/core#parameter-comments */ comments02 : function (test) { var success, doc, docElem, node, nodeType, domConfig, domImplLS, lsParser, nullSchemaType = null; var resourceURI; domImplLS = getImplementation(); lsParser = domImplLS.createLSParser(1,nullSchemaType); domConfig = lsParser.domConfig; domConfig.setParameter("comments", true); resourceURI = getResourceURI("hc_staff"); doc = lsParser.parseURI(resourceURI); docElem = doc.documentElement; node = docElem.previousSibling; nodeType = node.nodeType; test.strictEqual(8, nodeType, "nodeIsDocType"); test.done(); }, /** * Comments should be preserved when comments is true. * @author Curt Arnold * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializer-writeToString * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-Core-20031107/core#parameter-comments */ comments03 : function (test) { var success, doc, domConfig, domImplLS, lsSerializer, docType = null; var docElem, newNode, output, retNode; domImplLS = getImplementation(); lsSerializer = domImplLS.createLSSerializer(); doc = domImplLS.createDocument("http://www.example.org","test",docType); docElem = doc.documentElement; newNode = doc.createComment("foo"); retNode = docElem.appendChild(newNode); domConfig = lsSerializer.domConfig; domConfig.setParameter("comments", true); output = lsSerializer.writeToString(doc); test.ok(output.indexOf("><!--foo--></") >= 0, "hasComment"); test.done(); }, /** * Comments should be discarded when comments is false. * @author Curt Arnold * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-LS-20031107/load-save#LS-LSSerializer-writeToString * @see http://www.w3.org/TR/2003/CR-DOM-Level-3-Core-20031107/core#parameter-comments */ comments04 : function (test) { var success, doc, domConfig, domImplLS, lsSerializer, docType = null; var docElem, newNode, output, retNode; domImplLS = getImplementation(); lsSerializer = domImplLS.createLSSerializer(); doc = domImplLS.createDocument("http://www.example.org","test",docType); docElem = doc.documentElement; newNode = doc.createComment("foo"); retNode = docElem.appendChild(newNode); domConfig = lsSerializer.domConfig; domConfig.setParameter("comments", false); output = lsSerializer.writeToString(doc); { test.ok((output.indexOf("