From a6dfcc89fab6a82000b3bf07a851a1b913190fc5 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 8 Jan 2023 14:43:07 +0100 Subject: [PATCH 1/2] Implement unit tests for the `recoverJsURL` utility function --- test/unit/core_utils_spec.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/test/unit/core_utils_spec.js b/test/unit/core_utils_spec.js index 1a8da5a7c..41a16a0ed 100644 --- a/test/unit/core_utils_spec.js +++ b/test/unit/core_utils_spec.js @@ -23,6 +23,7 @@ import { isWhiteSpace, log2, parseXFAPath, + recoverJsURL, stringToUTF16HexString, stringToUTF16String, toRomanNumerals, @@ -210,6 +211,39 @@ describe("core_utils", function () { }); }); + describe("recoverJsURL", function () { + it("should get valid URLs without `newWindow` property", function () { + const inputs = [ + "window.open('https://test.local')", + "window.open('https://test.local', true)", + "app.launchURL('https://test.local')", + "app.launchURL('https://test.local', false)", + "xfa.host.gotoURL('https://test.local')", + "xfa.host.gotoURL('https://test.local', true)", + ]; + + for (const input of inputs) { + expect(recoverJsURL(input)).toEqual({ + url: "https://test.local", + newWindow: false, + }); + } + }); + + it("should get valid URLs with `newWindow` property", function () { + const input = "app.launchURL('https://test.local', true)"; + expect(recoverJsURL(input)).toEqual({ + url: "https://test.local", + newWindow: true, + }); + }); + + it("should not get invalid URLs", function () { + const input = "navigateToUrl('https://test.local')"; + expect(recoverJsURL(input)).toBeNull(); + }); + }); + describe("escapePDFName", function () { it("should escape PDF name", function () { expect(escapePDFName("hello")).toEqual("hello"); From 9e3adb5ec70f62ecc9dd7c2b3cb15a02286b3d45 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 8 Jan 2023 14:49:20 +0100 Subject: [PATCH 2/2] Implement unit tests for the `numberToString` utility function --- test/unit/core_utils_spec.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/test/unit/core_utils_spec.js b/test/unit/core_utils_spec.js index 41a16a0ed..f8fb8da16 100644 --- a/test/unit/core_utils_spec.js +++ b/test/unit/core_utils_spec.js @@ -22,6 +22,7 @@ import { isAscii, isWhiteSpace, log2, + numberToString, parseXFAPath, recoverJsURL, stringToUTF16HexString, @@ -182,6 +183,21 @@ describe("core_utils", function () { }); }); + describe("numberToString", function () { + it("should stringify integers", function () { + expect(numberToString(1)).toEqual("1"); + expect(numberToString(0)).toEqual("0"); + expect(numberToString(-1)).toEqual("-1"); + }); + + it("should stringify floats", function () { + expect(numberToString(1.0)).toEqual("1"); + expect(numberToString(1.2)).toEqual("1.2"); + expect(numberToString(1.23)).toEqual("1.23"); + expect(numberToString(1.234)).toEqual("1.23"); + }); + }); + describe("isWhiteSpace", function () { it("handles space characters", function () { expect(isWhiteSpace(0x20)).toEqual(true);