tor-browser

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

test_Format.js (2921B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const { truncate, pprint } = ChromeUtils.importESModule(
      7  "chrome://remote/content/shared/Format.sys.mjs"
      8 );
      9 
     10 const MAX_STRING_LENGTH = 250;
     11 const HALF = "x".repeat(MAX_STRING_LENGTH / 2);
     12 
     13 add_task(function test_pprint() {
     14  equal('[object Object] {"foo":"bar"}', pprint`${{ foo: "bar" }}`);
     15 
     16  equal("[object Number] 42", pprint`${42}`);
     17  equal("[object Boolean] true", pprint`${true}`);
     18  equal("[object Undefined] undefined", pprint`${undefined}`);
     19  equal("[object Null] null", pprint`${null}`);
     20 
     21  let complexObj = { toJSON: () => "foo" };
     22  equal('[object Object] "foo"', pprint`${complexObj}`);
     23 
     24  let cyclic = {};
     25  cyclic.me = cyclic;
     26  equal("[object Object] <cyclic object value>", pprint`${cyclic}`);
     27 
     28  let el = {
     29    hasAttribute: attr => attr in el,
     30    getAttribute: attr => (attr in el ? el[attr] : null),
     31    nodeType: 1,
     32    localName: "input",
     33    id: "foo",
     34    class: "a b",
     35    href: "#",
     36    name: "bar",
     37    src: "s",
     38    type: "t",
     39  };
     40  equal(
     41    '<input id="foo" class="a b" href="#" name="bar" src="s" type="t">',
     42    pprint`${el}`
     43  );
     44 });
     45 
     46 add_task(function test_truncate_empty() {
     47  equal(truncate``, "");
     48 });
     49 
     50 add_task(function test_truncate_noFields() {
     51  equal(truncate`foo bar`, "foo bar");
     52 });
     53 
     54 add_task(function test_truncate_multipleFields() {
     55  equal(truncate`${0}`, "0");
     56  equal(truncate`${1}${2}${3}`, "123");
     57  equal(truncate`a${1}b${2}c${3}`, "a1b2c3");
     58 });
     59 
     60 add_task(function test_truncate_primitiveFields() {
     61  equal(truncate`${123}`, "123");
     62  equal(truncate`${true}`, "true");
     63  equal(truncate`${null}`, "");
     64  equal(truncate`${undefined}`, "");
     65 });
     66 
     67 add_task(function test_truncate_string() {
     68  equal(truncate`${"foo"}`, "foo");
     69  equal(truncate`${"x".repeat(250)}`, "x".repeat(250));
     70  equal(truncate`${"x".repeat(260)}`, `${HALF} ... ${HALF}`);
     71 });
     72 
     73 add_task(function test_truncate_array() {
     74  equal(truncate`${["foo"]}`, JSON.stringify(["foo"]));
     75  equal(truncate`${"foo"} ${["bar"]}`, `foo ${JSON.stringify(["bar"])}`);
     76  equal(
     77    truncate`${["x".repeat(260)]}`,
     78    JSON.stringify([`${HALF} ... ${HALF}`])
     79  );
     80 });
     81 
     82 add_task(function test_truncate_object() {
     83  equal(truncate`${{}}`, JSON.stringify({}));
     84  equal(truncate`${{ foo: "bar" }}`, JSON.stringify({ foo: "bar" }));
     85  equal(
     86    truncate`${{ foo: "x".repeat(260) }}`,
     87    JSON.stringify({ foo: `${HALF} ... ${HALF}` })
     88  );
     89  equal(truncate`${{ foo: ["bar"] }}`, JSON.stringify({ foo: ["bar"] }));
     90  equal(
     91    truncate`${{ foo: ["bar", { baz: 42 }] }}`,
     92    JSON.stringify({ foo: ["bar", { baz: 42 }] })
     93  );
     94 
     95  let complex = {
     96    toString() {
     97      return "hello world";
     98    },
     99  };
    100  equal(truncate`${complex}`, "hello world");
    101 
    102  let longComplex = {
    103    toString() {
    104      return "x".repeat(260);
    105    },
    106  };
    107  equal(truncate`${longComplex}`, `${HALF} ... ${HALF}`);
    108 });