summaryrefslogtreecommitdiff
path: root/tests/js/escape.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/js/escape.mjs')
-rw-r--r--tests/js/escape.mjs62
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/js/escape.mjs b/tests/js/escape.mjs
new file mode 100644
index 0000000..2cad16a
--- /dev/null
+++ b/tests/js/escape.mjs
@@ -0,0 +1,62 @@
+import assert from "node:assert/strict";
+import { runTests } from "../runner.mjs";
+import { escape } from "../../src/escape.mjs";
+
+const test_escape = t => {
+ t.start("escape()");
+
+ t.test("numbers", () => {
+ assert.equal(escape(0), "0");
+ assert.equal(escape(42), "42");
+ assert.equal(escape(-1), "-1");
+ });
+
+ t.test("object", () => {
+ assert.equal(escape({}), "[object Object]");
+ assert.equal(escape({ k: "v" }), "[object Object]");
+ });
+
+ t.test("string with special chars", () => {
+ assert.strictEqual(escape(`"`), """);
+ assert.strictEqual(escape(`"bar`), ""bar");
+ assert.strictEqual(escape(`foo"`), "foo"");
+ assert.strictEqual(escape(`foo"bar`), "foo"bar");
+ assert.strictEqual(escape(`foo""bar`), "foo""bar");
+
+ assert.strictEqual(escape("&"), "&");
+ assert.strictEqual(escape("&bar"), "&bar");
+ assert.strictEqual(escape("foo&"), "foo&");
+ assert.strictEqual(escape("foo&bar"), "foo&bar");
+ assert.strictEqual(escape("foo&&bar"), "foo&&bar");
+
+ assert.strictEqual(escape("'"), "'");
+ assert.strictEqual(escape("'bar"), "'bar");
+ assert.strictEqual(escape("foo'"), "foo'");
+ assert.strictEqual(escape("foo'bar"), "foo'bar");
+ assert.strictEqual(escape("foo''bar"), "foo''bar");
+
+ assert.strictEqual(escape("<"), "&lt;");
+ assert.strictEqual(escape("<bar"), "&lt;bar");
+ assert.strictEqual(escape("foo<"), "foo&lt;");
+ assert.strictEqual(escape("foo<bar"), "foo&lt;bar");
+ assert.strictEqual(escape("foo<<bar"), "foo&lt;&lt;bar");
+
+ assert.strictEqual(escape(">"), "&gt;");
+ assert.strictEqual(escape(">bar"), "&gt;bar");
+ assert.strictEqual(escape("foo>"), "foo&gt;");
+ assert.strictEqual(escape("foo>bar"), "foo&gt;bar");
+ assert.strictEqual(escape("foo>>bar"), "foo&gt;&gt;bar");
+ });
+
+ t.test("the combination of all special characters", () => {
+ assert.strictEqual(
+ escape(`foo, "bar", 'baz' & <quux>`),
+ "foo, &quot;bar&quot;, &#39;baz&#39; &amp; &lt;quux&gt;",
+ );
+ });
+};
+
+
+await runTests([
+ test_escape,
+]);