mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-29 12:19:54 +00:00
Everywhere: Hoist the Libraries folder to the top-level
This commit is contained in:
parent
950e819ee7
commit
93712b24bf
Notes:
github-actions[bot]
2024-11-10 11:51:52 +00:00
Author: https://github.com/trflynn89
Commit: 93712b24bf
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2256
Reviewed-by: https://github.com/sideshowbarker
4547 changed files with 104 additions and 113 deletions
76
Libraries/LibJS/Tests/builtins/JSON/JSON.parse.js
Normal file
76
Libraries/LibJS/Tests/builtins/JSON/JSON.parse.js
Normal file
|
@ -0,0 +1,76 @@
|
|||
test("basic functionality", () => {
|
||||
expect(JSON.parse).toHaveLength(2);
|
||||
|
||||
const properties = [
|
||||
["5", 5],
|
||||
["null", null],
|
||||
["true", true],
|
||||
["false", false],
|
||||
['"test"', "test"],
|
||||
['[1,2,"foo"]', [1, 2, "foo"]],
|
||||
['{"foo":1,"bar":"baz"}', { foo: 1, bar: "baz" }],
|
||||
];
|
||||
|
||||
properties.forEach(testCase => {
|
||||
expect(JSON.parse(testCase[0])).toEqual(testCase[1]);
|
||||
});
|
||||
});
|
||||
|
||||
test("syntax errors", () => {
|
||||
[
|
||||
undefined,
|
||||
NaN,
|
||||
-NaN,
|
||||
Infinity,
|
||||
-Infinity,
|
||||
'{ "foo" }',
|
||||
'{ foo: "bar" }',
|
||||
"[1,2,3,]",
|
||||
"[1,2,3, ]",
|
||||
'{ "foo": "bar",}',
|
||||
'{ "foo": "bar", }',
|
||||
"",
|
||||
].forEach(test => {
|
||||
expect(() => {
|
||||
JSON.parse(test);
|
||||
}).toThrow(SyntaxError);
|
||||
});
|
||||
});
|
||||
|
||||
test("negative zero", () => {
|
||||
["-0", " \n-0", "-0 \t", "\n\t -0\n ", "-0.0"].forEach(testCase => {
|
||||
expect(JSON.parse(testCase)).toEqual(-0.0);
|
||||
});
|
||||
|
||||
expect(JSON.parse(-0)).toEqual(0);
|
||||
});
|
||||
|
||||
// The underlying parser resolves decimal numbers by storing the decimal portion in an integer
|
||||
// This test handles a regression where the decimal portion was only using a u32 vs. u64
|
||||
// and would fail to parse.
|
||||
test("long decimal parse", () => {
|
||||
expect(JSON.parse("1644452550.6489999294281")).toEqual(1644452550.6489999294281);
|
||||
});
|
||||
|
||||
test("does not truncate large integers", () => {
|
||||
expect(JSON.parse("1234567890123")).toEqual(1234567890123);
|
||||
expect(JSON.parse("4294967295")).toEqual(4294967295);
|
||||
expect(JSON.parse("4294967296")).toEqual(4294967296);
|
||||
expect(JSON.parse("4294967297")).toEqual(4294967297);
|
||||
expect(JSON.parse("4294967298")).toEqual(4294967298);
|
||||
|
||||
expect(JSON.parse("2147483647")).toEqual(2147483647);
|
||||
expect(JSON.parse("2147483648")).toEqual(2147483648);
|
||||
expect(JSON.parse("2147483649")).toEqual(2147483649);
|
||||
expect(JSON.parse("2147483650")).toEqual(2147483650);
|
||||
|
||||
expect(JSON.parse("9007199254740991")).toEqual(9007199254740991);
|
||||
expect(JSON.parse("9007199254740992")).toEqual(9007199254740992);
|
||||
expect(JSON.parse("9007199254740993")).toEqual(9007199254740993);
|
||||
expect(JSON.parse("9007199254740994")).toEqual(9007199254740994);
|
||||
expect(JSON.parse("9008199254740994")).toEqual(9008199254740994);
|
||||
|
||||
expect(JSON.parse("18446744073709551615")).toEqual(18446744073709551615);
|
||||
expect(JSON.parse("18446744073709551616")).toEqual(18446744073709551616);
|
||||
expect(JSON.parse("18446744073709551617")).toEqual(18446744073709551617);
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue