From b011e0d83741b2ef9a3f0e4b65d9c02ed669dd6f Mon Sep 17 00:00:00 2001 From: Hailong Cui Date: Wed, 30 Oct 2024 10:41:49 +0800 Subject: [PATCH] add unit test Signed-off-by: Hailong Cui --- test/unit/serializer.test.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/test/unit/serializer.test.js b/test/unit/serializer.test.js index 1773fce07..41bb466f3 100644 --- a/test/unit/serializer.test.js +++ b/test/unit/serializer.test.js @@ -79,6 +79,37 @@ test('Long numerals enabled', (t) => { t.match(res, `"[ ${longNegative.toString()}, ${longPositive.toString()} ]"`); }); +test('Long numerals enabled and json not includes large numbers', (t) => { + t.plan(2); + const s = new Serializer({ enableLongNumeralSupport: true }); + const longPositive = BigInt(Number.MAX_SAFE_INTEGER) * 2n; // eslint-disable-line no-undef + const longNegative = BigInt(Number.MIN_SAFE_INTEGER) * 2n; // eslint-disable-line no-undef + const json = + `{` + + // The space before and after the values, and the lack of spaces before comma are intentional + `"false-positive-1": "෴${longNegative.toString()}", ` + + `"false-positive-2": "[ ߷${longPositive.toString()} ]", ` + + `"false-positive-3": "\\": ֍${longPositive.toString()}\\"", ` + + `"false-positive-4": "෴߷֍${longPositive.toString()}", ` + + `"normal-number": 2024,` + + `"max-safe-integer": ${Number.MAX_SAFE_INTEGER},` + + `"min-safe-integer": ${Number.MIN_SAFE_INTEGER}` + + `}`; + const obj = s.deserialize(json); + const res = s.serialize(obj); + t.same(obj, { + 'normal-number': 2024, + 'max-safe-integer': `${Number.MAX_SAFE_INTEGER}`, + 'min-safe-integer': `${Number.MIN_SAFE_INTEGER}`, + 'false-positive-4': `෴߷֍${longPositive.toString()}`, + 'false-positive-3': `": ֍${longPositive.toString()}"`, + 'false-positive-2': `[ ߷${longPositive.toString()} ]`, + 'false-positive-1': `෴${longNegative.toString()}`, + }); + // The space before and after the values, and the lack of spaces before comma are intentional + t.equal(res.replace(/\s+/g, ''), json.replace(/\s+/g, '')); +}); + test('long numerals not enabled', (t) => { t.plan(5); const s = new Serializer({ enableLongNumeralSupport: false });