summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/basic/dumpValue.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/basic/dumpValue.js')
-rw-r--r--js/src/jit-test/tests/basic/dumpValue.js134
1 files changed, 134 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/basic/dumpValue.js b/js/src/jit-test/tests/basic/dumpValue.js
new file mode 100644
index 0000000000..6bf4ffcb8d
--- /dev/null
+++ b/js/src/jit-test/tests/basic/dumpValue.js
@@ -0,0 +1,134 @@
+// |jit-test| skip-if: typeof dumpValue !== 'function' || getBuildConfiguration("windows")
+
+// FIXME: Fix backslash handling on windows (bug 1880003).
+
+// Try the dumpValue and dumpValueToString shell functions on various types of
+// values, and make sure theyit don't crash, and the result is valid JSON.
+
+function testDump(v) {
+ dumpValue(v);
+
+ const s = dumpValueToString(v);
+
+ const result = JSON.parse(s);
+ assertEq(typeof result, "object");
+ assertEq(typeof result.type, "string");
+}
+
+
+testDump(1);
+testDump(1.1);
+testDump(-0.1);
+
+testDump(100n);
+
+testDump(true);
+testDump(false);
+
+testDump(null);
+
+testDump(undefined);
+
+// dumpStringRepresentation.js covers more strings.
+testDump("foo");
+
+testDump(/foo/ig);
+
+testDump(Symbol.iterator);
+testDump(Symbol("hello"));
+testDump(Symbol.for("hello"));
+
+testDump({});
+testDump({ prop1: 10, prop2: 20 });
+
+testDump([]);
+testDump([1, , 3, 4]);
+
+testDump(function f() {});
+testDump(function* f() {});
+testDump(async function f() {});
+testDump(async function* f() {});
+
+testDump(Promise.withResolvers());
+
+var p1 = new Promise(() => {}); p1.then(() => {});
+testDump(p1);
+var p2 = new Promise(() => {}); p2.then(() => {}); p2.then(() => {});
+testDump(p2);
+var p3 = Promise.reject(10).catch(() => {});
+testDump(p3);
+
+testDump(new ArrayBuffer([1, 2, 3]));
+testDump(new Int8Array([1, 2, 3]));
+testDump(new Int8Array(new Int8Array([1, 2, 3]).buffer, 1));
+testDump(new Int32Array([1, 2, 3]));
+testDump(new Int32Array(new Int32Array([1, 2, 3]).buffer, 4));
+testDump(new Float64Array([1, 2, 3]));
+
+testDump(new Date());
+testDump(new Map([[1, 2]]));
+testDump(new Set([1, 2]));
+testDump(new WeakMap([ [{}, 10], [{}, 20] ]));
+testDump(new WeakSet([{}, {}]));
+testDump(new Proxy({}, {}));
+
+testDump(Array);
+testDump(Array.prototype);
+testDump(this);
+
+testDump([
+ 1,
+ 1.1,
+ -0.1,
+
+ 100n,
+
+ true,
+ false,
+
+ null,
+
+ undefined,
+
+ "foo",
+
+ /foo/ig,
+
+ Symbol.iterator,
+ Symbol("hello"),
+ Symbol.for("hello"),
+
+ {},
+ { prop1: 10, prop2: 20 },
+
+ [],
+ [1, , 3, 4],
+
+ function f() {},
+ function* f() {},
+ async function f() {},
+ async function* f() {},
+
+ Promise.withResolvers(),
+ p1,
+ p2,
+ p3,
+
+ new ArrayBuffer([1, 2, 3]),
+ new Int8Array([1, 2, 3]),
+ new Int8Array(new Int8Array([1, 2, 3]).buffer, 1),
+ new Int32Array([1, 2, 3]),
+ new Int32Array(new Int32Array([1, 2, 3]).buffer, 4),
+ new Float64Array([1, 2, 3]),
+ new Float64Array([1, 2, 3]),
+
+ new Map([[1, 2]]),
+ new Set([1, 2]),
+ new WeakMap([ [{}, 10], [{}, 20] ]),
+ new WeakSet([{}, {}]),
+ new Proxy({}, {}),
+
+ Array,
+ Array.prototype,
+ this,
+]);