diff --git a/src/core/Utils.mjs b/src/core/Utils.mjs index 5c6c485c..e64aba4b 100755 --- a/src/core/Utils.mjs +++ b/src/core/Utils.mjs @@ -201,9 +201,8 @@ class Utils { * Utils.parseEscapedChars("\\n"); */ static parseEscapedChars(str) { - return str.replace(/(\\)?\\([bfnrtv'"]|[0-3][0-7]{2}|[0-7]{1,2}|x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]{1,6}\}|\\)/g, function(m, a, b) { - if (a === "\\") return "\\"+b; - switch (b[0]) { + return str.replace(/\\([bfnrtv'"]|[0-3][0-7]{2}|[0-7]{1,2}|x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]{1,6}\}|\\)/g, function(m, a) { + switch (a[0]) { case "\\": return "\\"; case "0": @@ -214,7 +213,7 @@ class Utils { case "5": case "6": case "7": - return String.fromCharCode(parseInt(b, 8)); + return String.fromCharCode(parseInt(a, 8)); case "b": return "\b"; case "t": @@ -232,12 +231,12 @@ class Utils { case "'": return "'"; case "x": - return String.fromCharCode(parseInt(b.substr(1), 16)); + return String.fromCharCode(parseInt(a.substr(1), 16)); case "u": - if (b[1] === "{") - return String.fromCodePoint(parseInt(b.slice(2, -1), 16)); + if (a[1] === "{") + return String.fromCodePoint(parseInt(a.slice(2, -1), 16)); else - return String.fromCharCode(parseInt(b.substr(1), 16)); + return String.fromCharCode(parseInt(a.substr(1), 16)); } }); } diff --git a/tests/node/index.mjs b/tests/node/index.mjs index 6d685555..29c8c841 100644 --- a/tests/node/index.mjs +++ b/tests/node/index.mjs @@ -21,6 +21,8 @@ import "./tests/operations.mjs"; import "./tests/File.mjs"; import "./tests/Dish.mjs"; import "./tests/NodeDish.mjs"; +import "./tests/Utils.mjs"; +import "./tests/Categories.mjs"; const testStatus = { allTestsPassing: true, diff --git a/tests/operations/Categories.mjs b/tests/node/tests/Categories.mjs similarity index 62% rename from tests/operations/Categories.mjs rename to tests/node/tests/Categories.mjs index c1f9f472..0f4e8644 100644 --- a/tests/operations/Categories.mjs +++ b/tests/node/tests/Categories.mjs @@ -1,7 +1,7 @@ -import TestRegister from "../lib/TestRegister.mjs"; -import Categories from "../../src/core/config/Categories.json"; -import OperationConfig from "../../src/core/config/OperationConfig.json"; -import it from "../node/assertionHandler.mjs"; +import TestRegister from "../../lib/TestRegister.mjs"; +import Categories from "../../../src/core/config/Categories.json"; +import OperationConfig from "../../../src/core/config/OperationConfig.json"; +import it from "../assertionHandler.mjs"; import assert from "assert"; TestRegister.addApiTests([ diff --git a/tests/node/tests/Utils.mjs b/tests/node/tests/Utils.mjs new file mode 100644 index 00000000..8dbf37ae --- /dev/null +++ b/tests/node/tests/Utils.mjs @@ -0,0 +1,23 @@ +import TestRegister from "../../lib/TestRegister.mjs"; +import Utils from "../../../src/core/Utils.mjs"; +import it from "../assertionHandler.mjs"; +import assert from "assert"; + +TestRegister.addApiTests([ + it("Utils: should parse six backslashes correctly", () => { + assert.equal(Utils.parseEscapedChars("\\\\\\\\\\\\"), "\\\\\\"); + }), + + it("Utils: should parse escaped quotes correctly", () => { + assert.equal(Utils.parseEscapedChars("\\'"), "'"); + }), + + it("Utils: should parse escaped quotes and backslashes correctly", () => { + assert.equal(Utils.parseEscapedChars("\\\\'"), "\\'"); + }), + + it("Utils: should parse escaped quotes and escaped backslashes correctly", () => { + assert.equal(Utils.parseEscapedChars("\\\\\\'"), "\\'"); + }), + +]); diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index 59c64550..d64a7737 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -17,11 +17,6 @@ import { } from "../lib/utils.mjs"; import TestRegister from "../lib/TestRegister.mjs"; - -// Generic tests -import "./Categories.mjs"; - -// Operation tests import "./tests/BCD.mjs"; import "./tests/BSON.mjs"; import "./tests/BaconCipher.mjs"; @@ -111,8 +106,5 @@ setLongTestFailure(); const logOpsTestReport = logTestReport.bind(null, testStatus); -TestRegister.runApiTests() - .then(logOpsTestReport); - TestRegister.runTests() .then(logOpsTestReport);