/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; const { truncate, pprint } = ChromeUtils.importESModule( "chrome://remote/content/shared/Format.sys.mjs" ); const MAX_STRING_LENGTH = 250; const HALF = "x".repeat(MAX_STRING_LENGTH / 2); add_task(function test_pprint() { equal('[object Object] {"foo":"bar"}', pprint`${{ foo: "bar" }}`); equal("[object Number] 42", pprint`${42}`); equal("[object Boolean] true", pprint`${true}`); equal("[object Undefined] undefined", pprint`${undefined}`); equal("[object Null] null", pprint`${null}`); let complexObj = { toJSON: () => "foo" }; equal('[object Object] "foo"', pprint`${complexObj}`); let cyclic = {}; cyclic.me = cyclic; equal("[object Object] ", pprint`${cyclic}`); let el = { hasAttribute: attr => attr in el, getAttribute: attr => (attr in el ? el[attr] : null), nodeType: 1, localName: "input", id: "foo", class: "a b", href: "#", name: "bar", src: "s", type: "t", }; equal( '', pprint`${el}` ); }); add_task(function test_truncate_empty() { equal(truncate``, ""); }); add_task(function test_truncate_noFields() { equal(truncate`foo bar`, "foo bar"); }); add_task(function test_truncate_multipleFields() { equal(truncate`${0}`, "0"); equal(truncate`${1}${2}${3}`, "123"); equal(truncate`a${1}b${2}c${3}`, "a1b2c3"); }); add_task(function test_truncate_primitiveFields() { equal(truncate`${123}`, "123"); equal(truncate`${true}`, "true"); equal(truncate`${null}`, ""); equal(truncate`${undefined}`, ""); }); add_task(function test_truncate_string() { equal(truncate`${"foo"}`, "foo"); equal(truncate`${"x".repeat(250)}`, "x".repeat(250)); equal(truncate`${"x".repeat(260)}`, `${HALF} ... ${HALF}`); }); add_task(function test_truncate_array() { equal(truncate`${["foo"]}`, JSON.stringify(["foo"])); equal(truncate`${"foo"} ${["bar"]}`, `foo ${JSON.stringify(["bar"])}`); equal( truncate`${["x".repeat(260)]}`, JSON.stringify([`${HALF} ... ${HALF}`]) ); }); add_task(function test_truncate_object() { equal(truncate`${{}}`, JSON.stringify({})); equal(truncate`${{ foo: "bar" }}`, JSON.stringify({ foo: "bar" })); equal( truncate`${{ foo: "x".repeat(260) }}`, JSON.stringify({ foo: `${HALF} ... ${HALF}` }) ); equal(truncate`${{ foo: ["bar"] }}`, JSON.stringify({ foo: ["bar"] })); equal( truncate`${{ foo: ["bar", { baz: 42 }] }}`, JSON.stringify({ foo: ["bar", { baz: 42 }] }) ); let complex = { toString() { return "hello world"; }, }; equal(truncate`${complex}`, "hello world"); let longComplex = { toString() { return "x".repeat(260); }, }; equal(truncate`${longComplex}`, `${HALF} ... ${HALF}`); });