michael@0: /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: function xmlEncode(aFile, aFlags, aCharset) { michael@0: if(aFlags == undefined) aFlags = 0; michael@0: if(aCharset == undefined) aCharset = "UTF-8"; michael@0: michael@0: var doc = do_parse_document(aFile, "text/xml"); michael@0: michael@0: var encoder = Components.classes["@mozilla.org/layout/documentEncoder;1?type=text/xml"] michael@0: .createInstance(nsIDocumentEncoder); michael@0: encoder.setCharset(aCharset); michael@0: encoder.init(doc, "text/xml", aFlags); michael@0: return encoder.encodeToString(); michael@0: } michael@0: michael@0: function run_test() michael@0: { michael@0: var result, expected; michael@0: const de = Components.interfaces.nsIDocumentEncoder; michael@0: michael@0: result = xmlEncode("1_original.xml", de.OutputLFLineBreak); michael@0: expected =loadContentFile("1_result.xml"); michael@0: do_check_eq(expected, result); michael@0: michael@0: result = xmlEncode("2_original.xml", de.OutputLFLineBreak); michael@0: expected = loadContentFile("2_result_1.xml"); michael@0: do_check_eq(expected, result); michael@0: michael@0: result = xmlEncode("2_original.xml", de.OutputCRLineBreak); michael@0: expected = expected.replace(/\n/g, "\r"); michael@0: do_check_eq(expected, result); michael@0: michael@0: result = xmlEncode("2_original.xml", de.OutputLFLineBreak | de.OutputCRLineBreak); michael@0: expected = expected.replace(/\r/mg, "\r\n"); michael@0: do_check_eq(expected, result); michael@0: michael@0: result = xmlEncode("2_original.xml", de.OutputLFLineBreak | de.OutputFormatted); michael@0: expected = loadContentFile("2_result_2.xml"); michael@0: do_check_eq(expected, result); michael@0: michael@0: result = xmlEncode("2_original.xml", de.OutputLFLineBreak | de.OutputFormatted | de.OutputWrap); michael@0: expected = loadContentFile("2_result_3.xml"); michael@0: do_check_eq(expected, result); michael@0: michael@0: result = xmlEncode("2_original.xml", de.OutputLFLineBreak | de.OutputWrap); michael@0: expected = loadContentFile("2_result_4.xml"); michael@0: do_check_eq(expected, result); michael@0: michael@0: result = xmlEncode("3_original.xml", de.OutputLFLineBreak | de.OutputFormatted | de.OutputWrap); michael@0: expected = loadContentFile("3_result.xml"); michael@0: do_check_eq(expected, result); michael@0: michael@0: result = xmlEncode("3_original.xml", de.OutputLFLineBreak | de.OutputWrap); michael@0: expected = loadContentFile("3_result_2.xml"); michael@0: do_check_eq(expected, result); michael@0: michael@0: // tests on namespaces michael@0: var doc = do_parse_document("4_original.xml", "text/xml"); michael@0: michael@0: var encoder = Components.classes["@mozilla.org/layout/documentEncoder;1?type=text/xml"] michael@0: .createInstance(nsIDocumentEncoder); michael@0: encoder.setCharset("UTF-8"); michael@0: encoder.init(doc, "text/xml", de.OutputLFLineBreak); michael@0: michael@0: result = encoder.encodeToString(); michael@0: expected = loadContentFile("4_result_1.xml"); michael@0: do_check_eq(expected, result); michael@0: michael@0: encoder.setNode(doc.documentElement.childNodes[9]); michael@0: result = encoder.encodeToString(); michael@0: expected = loadContentFile("4_result_2.xml"); michael@0: do_check_eq(expected, result); michael@0: michael@0: encoder.setNode(doc.documentElement.childNodes[7].childNodes[1]); michael@0: result = encoder.encodeToString(); michael@0: expected = loadContentFile("4_result_3.xml"); michael@0: do_check_eq(expected, result); michael@0: michael@0: encoder.setNode(doc.documentElement.childNodes[11].childNodes[1]); michael@0: result = encoder.encodeToString(); michael@0: expected = loadContentFile("4_result_4.xml"); michael@0: do_check_eq(expected, result); michael@0: michael@0: encoder.setCharset("UTF-8"); michael@0: // it doesn't support this flags michael@0: encoder.init(doc, "text/xml", de.OutputLFLineBreak | de.OutputFormatted | de.OutputWrap); michael@0: encoder.setWrapColumn(40); michael@0: result = encoder.encodeToString(); michael@0: expected = loadContentFile("4_result_5.xml"); michael@0: do_check_eq(expected, result); michael@0: michael@0: encoder.init(doc, "text/xml", de.OutputLFLineBreak | de.OutputWrap); michael@0: encoder.setWrapColumn(40); michael@0: result = encoder.encodeToString(); michael@0: expected = loadContentFile("4_result_6.xml"); michael@0: do_check_eq(expected, result); michael@0: michael@0: }