tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_xmlserializer.js (5391B)


      1 /* -*- indent-tabs-mode: nil; js-indent-level: 4 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 async function xmlEncode(aFile, aFlags, aCharset) {
      7  if (aFlags == undefined) {
      8    aFlags = 0;
      9  }
     10  if (aCharset == undefined) {
     11    aCharset = "UTF-8";
     12  }
     13 
     14  var doc = await do_parse_document(aFile, "text/xml");
     15 
     16  var encoder = Cu.createDocumentEncoder("text/xml");
     17  encoder.setCharset(aCharset);
     18  encoder.init(doc, "text/xml", aFlags);
     19  return encoder.encodeToString();
     20 }
     21 
     22 add_task(async function test_encoding() {
     23  var result, expected;
     24  const de = Ci.nsIDocumentEncoder;
     25 
     26  result = await xmlEncode("1_original.xml", de.OutputLFLineBreak);
     27  expected = loadContentFile("1_result.xml");
     28  Assert.equal(expected, result);
     29 
     30  result = await xmlEncode("2_original.xml", de.OutputLFLineBreak);
     31  expected = loadContentFile("2_result_1.xml");
     32  Assert.equal(expected, result);
     33 
     34  result = await xmlEncode("2_original.xml", de.OutputCRLineBreak);
     35  expected = expected.replace(/\n/g, "\r");
     36  Assert.equal(expected, result);
     37 
     38  result = await xmlEncode(
     39    "2_original.xml",
     40    de.OutputLFLineBreak | de.OutputCRLineBreak
     41  );
     42  expected = expected.replace(/\r/gm, "\r\n");
     43  Assert.equal(expected, result);
     44 
     45  result = await xmlEncode(
     46    "2_original.xml",
     47    de.OutputLFLineBreak | de.OutputFormatted
     48  );
     49  expected = loadContentFile("2_result_2.xml");
     50  Assert.equal(expected, result);
     51 
     52  result = await xmlEncode(
     53    "2_original.xml",
     54    de.OutputLFLineBreak | de.OutputFormatted | de.OutputWrap
     55  );
     56  expected = loadContentFile("2_result_3.xml");
     57  Assert.equal(expected, result);
     58 
     59  result = await xmlEncode(
     60    "2_original.xml",
     61    de.OutputLFLineBreak | de.OutputWrap
     62  );
     63  expected = loadContentFile("2_result_4.xml");
     64  Assert.equal(expected, result);
     65 
     66  result = await xmlEncode(
     67    "3_original.xml",
     68    de.OutputLFLineBreak | de.OutputFormatted | de.OutputWrap
     69  );
     70  expected = loadContentFile("3_result.xml");
     71  Assert.equal(expected, result);
     72 
     73  result = await xmlEncode(
     74    "3_original.xml",
     75    de.OutputLFLineBreak | de.OutputWrap
     76  );
     77  expected = loadContentFile("3_result_2.xml");
     78  Assert.equal(expected, result);
     79 
     80  // tests on namespaces
     81  var doc = await do_parse_document("4_original.xml", "text/xml");
     82 
     83  var encoder = Cu.createDocumentEncoder("text/xml");
     84  encoder.setCharset("UTF-8");
     85  encoder.init(doc, "text/xml", de.OutputLFLineBreak);
     86 
     87  result = encoder.encodeToString();
     88  expected = loadContentFile("4_result_1.xml");
     89  Assert.equal(expected, result);
     90 
     91  encoder.setNode(doc.documentElement.childNodes[9]);
     92  result = encoder.encodeToString();
     93  expected = loadContentFile("4_result_2.xml");
     94  Assert.equal(expected, result);
     95 
     96  encoder.setNode(doc.documentElement.childNodes[7].childNodes[1]);
     97  result = encoder.encodeToString();
     98  expected = loadContentFile("4_result_3.xml");
     99  Assert.equal(expected, result);
    100 
    101  encoder.setNode(doc.documentElement.childNodes[11].childNodes[1]);
    102  result = encoder.encodeToString();
    103  expected = loadContentFile("4_result_4.xml");
    104  Assert.equal(expected, result);
    105 
    106  encoder.setCharset("UTF-8");
    107  // it doesn't support this flags
    108  encoder.init(
    109    doc,
    110    "text/xml",
    111    de.OutputLFLineBreak | de.OutputFormatted | de.OutputWrap
    112  );
    113  encoder.setWrapColumn(40);
    114  result = encoder.encodeToString();
    115  expected = loadContentFile("4_result_5.xml");
    116  Assert.equal(expected, result);
    117 
    118  encoder.init(doc, "text/xml", de.OutputLFLineBreak | de.OutputWrap);
    119  encoder.setWrapColumn(40);
    120  result = encoder.encodeToString();
    121  expected = loadContentFile("4_result_6.xml");
    122  Assert.equal(expected, result);
    123 });
    124 
    125 // OutputRaw should cause OutputWrap and OutputFormatted to be ignored.
    126 // Check by encoding each test file and making sure the result matches what
    127 // was fed in.
    128 add_task(async function test_outputRaw() {
    129  let result, expected;
    130  const de = Ci.nsIDocumentEncoder;
    131 
    132  expected = loadContentFile("2_original.xml");
    133  result = await xmlEncode(
    134    "2_original.xml",
    135    de.OutputRaw | de.OutputLFLineBreak | de.OutputWrap
    136  );
    137  Assert.equal(expected, result);
    138 
    139  result = await xmlEncode(
    140    "2_original.xml",
    141    de.OutputRaw | de.OutputLFLineBreak | de.OutputFormatted | de.OutputWrap
    142  );
    143  Assert.equal(expected, result);
    144 
    145  expected = loadContentFile("3_original.xml");
    146  result = await xmlEncode(
    147    "3_original.xml",
    148    de.OutputRaw | de.OutputLFLineBreak | de.OutputWrap
    149  );
    150  Assert.equal(expected, result);
    151 
    152  result = await xmlEncode(
    153    "3_original.xml",
    154    de.OutputRaw | de.OutputLFLineBreak | de.OutputFormatted | de.OutputWrap
    155  );
    156  Assert.equal(expected, result);
    157 
    158  expected = loadContentFile("4_original.xml");
    159  let doc = await do_parse_document("4_original.xml", "text/xml");
    160  let encoder = Cu.createDocumentEncoder("text/xml");
    161  encoder.setCharset("UTF-8");
    162  encoder.init(
    163    doc,
    164    "text/xml",
    165    de.OutputRaw | de.OutputLFLineBreak | de.OutputWrap
    166  );
    167  encoder.setWrapColumn(40);
    168  result = encoder.encodeToString();
    169  Assert.equal(expected, result);
    170 
    171  encoder.init(
    172    doc,
    173    "text/xml",
    174    de.OutputRaw | de.OutputLFLineBreak | de.OutputFormatted | de.OutputWrap
    175  );
    176  encoder.setWrapColumn(40);
    177  result = encoder.encodeToString();
    178  Assert.equal(expected, result);
    179 });