Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 97 additions & 0 deletions test/built-ins/Array/prototype/join/number-elements.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
// Copyright (C) 2026 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-array.prototype.join
description: >
Number elements are joined correctly, including digit-count and 32-bit
boundaries, non-integers, and very large and small values
---*/

var cases = [
[0, "0"],
[1, "1"],
[-1, "-1"],
[2147483647, "2147483647"],
[-2147483647, "-2147483647"],
[-2147483648, "-2147483648"],
[2147483648, "2147483648"],
[-2147483649, "-2147483649"],
[4294967295, "4294967295"],
[-4294967295, "-4294967295"],
[4294967296, "4294967296"],
[-4294967296, "-4294967296"],
[9007199254740991, "9007199254740991"],
[-9007199254740991, "-9007199254740991"],
[9007199254740992, "9007199254740992"],
[100000000000000000000, "100000000000000000000"],
[999999999999999900000, "999999999999999900000"],
[9, "9"],
[10, "10"],
[99, "99"],
[100, "100"],
[999, "999"],
[1000, "1000"],
[9999, "9999"],
[10000, "10000"],
[99999, "99999"],
[100000, "100000"],
[999999, "999999"],
[1000000, "1000000"],
[9999999, "9999999"],
[10000000, "10000000"],
[99999999, "99999999"],
[100000000, "100000000"],
[999999999, "999999999"],
[1000000000, "1000000000"],
[9999999999, "9999999999"],
[10000000000, "10000000000"],
[99999999999, "99999999999"],
[100000000000, "100000000000"],
[999999999999, "999999999999"],
[1000000000000, "1000000000000"],
[9999999999999, "9999999999999"],
[10000000000000, "10000000000000"],
[99999999999999, "99999999999999"],
[100000000000000, "100000000000000"],
[999999999999999, "999999999999999"],
[-0, "0"],
[0.1, "0.1"],
[-0.1, "-0.1"],
[1.5, "1.5"],
[-1.5, "-1.5"],
[0.1 + 0.2, "0.30000000000000004"],
[123456789.125, "123456789.125"],
[2147483647.5, "2147483647.5"],
[-2147483648.5, "-2147483648.5"],
[0.000001, "0.000001"],
[0.000001234, "0.000001234"],
[1e-7, "1e-7"],
[-1e-7, "-1e-7"],
[1.25e-7, "1.25e-7"],
[123e-20, "1.23e-18"],
[1e21, "1e+21"],
[-1e21, "-1e+21"],
[1.5e300, "1.5e+300"],
[5e-324, "5e-324"],
[-5e-324, "-5e-324"],
[2.2250738585072014e-308, "2.2250738585072014e-308"],
[-2.2250738585072014e-308, "-2.2250738585072014e-308"],
[1.7976931348623157e308, "1.7976931348623157e+308"],
[-1.7976931348623157e308, "-1.7976931348623157e+308"],
[NaN, "NaN"],
[Infinity, "Infinity"],
[-Infinity, "-Infinity"],
];

for (var i = 0; i < cases.length; i++) {
var value = cases[i][0];
var expected = cases[i][1];

assert.sameValue([value].join(), expected, "single element: " + expected);
assert.sameValue([value, value].join(), expected + "," + expected,
"default separator: " + expected);
assert.sameValue([value, value].join(""), expected + expected,
"empty separator: " + expected);
assert.sameValue([value, value].join("—"), expected + "—" + expected,
"non-Latin-1 separator: " + expected);
}
96 changes: 96 additions & 0 deletions test/built-ins/JSON/stringify/value-number.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
// Copyright (C) 2026 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-json.stringify
description: >
Number values are serialized correctly, including digit-count and
32-bit boundaries, non-integers, and very large and small values
---*/

var cases = [
[0, "0"],
[1, "1"],
[-1, "-1"],
[2147483647, "2147483647"],
[-2147483647, "-2147483647"],
[-2147483648, "-2147483648"],
[2147483648, "2147483648"],
[-2147483649, "-2147483649"],
[4294967295, "4294967295"],
[-4294967295, "-4294967295"],
[4294967296, "4294967296"],
[-4294967296, "-4294967296"],
[9007199254740991, "9007199254740991"],
[-9007199254740991, "-9007199254740991"],
[9007199254740992, "9007199254740992"],
[100000000000000000000, "100000000000000000000"],
[999999999999999900000, "999999999999999900000"],
[9, "9"],
[10, "10"],
[99, "99"],
[100, "100"],
[999, "999"],
[1000, "1000"],
[9999, "9999"],
[10000, "10000"],
[99999, "99999"],
[100000, "100000"],
[999999, "999999"],
[1000000, "1000000"],
[9999999, "9999999"],
[10000000, "10000000"],
[99999999, "99999999"],
[100000000, "100000000"],
[999999999, "999999999"],
[1000000000, "1000000000"],
[9999999999, "9999999999"],
[10000000000, "10000000000"],
[99999999999, "99999999999"],
[100000000000, "100000000000"],
[999999999999, "999999999999"],
[1000000000000, "1000000000000"],
[9999999999999, "9999999999999"],
[10000000000000, "10000000000000"],
[99999999999999, "99999999999999"],
[100000000000000, "100000000000000"],
[999999999999999, "999999999999999"],
[0.1, "0.1"],
[-0.1, "-0.1"],
[1.5, "1.5"],
[-1.5, "-1.5"],
[0.1 + 0.2, "0.30000000000000004"],
[123456789.125, "123456789.125"],
[2147483647.5, "2147483647.5"],
[-2147483648.5, "-2147483648.5"],
[0.000001, "0.000001"],
[0.000001234, "0.000001234"],
[1e-7, "1e-7"],
[-1e-7, "-1e-7"],
[1.25e-7, "1.25e-7"],
[123e-20, "1.23e-18"],
[1e21, "1e+21"],
[-1e21, "-1e+21"],
[1.5e300, "1.5e+300"],
[5e-324, "5e-324"],
[-5e-324, "-5e-324"],
[2.2250738585072014e-308, "2.2250738585072014e-308"],
[-2.2250738585072014e-308, "-2.2250738585072014e-308"],
[1.7976931348623157e308, "1.7976931348623157e+308"],
[-1.7976931348623157e308, "-1.7976931348623157e+308"],
];

for (var i = 0; i < cases.length; i++) {
var value = cases[i][0];
var expected = cases[i][1];

assert.sameValue(JSON.stringify(value), expected, "top level: " + expected);
assert.sameValue(JSON.stringify([value]), "[" + expected + "]",
"array element: " + expected);
assert.sameValue(JSON.stringify([value, value]),
"[" + expected + "," + expected + "]", "array elements: " + expected);
assert.sameValue(JSON.stringify({ key: value }), '{"key":' + expected + "}",
"property value: " + expected);
assert.sameValue(JSON.stringify({ a: [value], b: { c: value } }),
'{"a":[' + expected + '],"b":{"c":' + expected + "}}",
"nested: " + expected);
}
Loading