summaryrefslogtreecommitdiff
path: root/tests/js/escape.mjs
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-02-23 06:05:19 -0300
committerEuAndreh <eu@euandre.org>2024-02-23 06:05:21 -0300
commitc36bf8e3577da31cf6d575879c7e92d3e9c7e4f1 (patch)
tree4fd5414e76490e297c4c770ff35e09149ef3658f /tests/js/escape.mjs
parentRemove C code and cleanup repository (diff)
downloadpapod-c36bf8e3577da31cf6d575879c7e92d3e9c7e4f1.tar.gz
papod-c36bf8e3577da31cf6d575879c7e92d3e9c7e4f1.tar.xz
Big cleanup
- delete all SQLite Node-API code: we'll use the C++ one instead; - implement hero.mjs, with tests! - use ESM all over.
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(`"`), "&quot;");
+ assert.strictEqual(escape(`"bar`), "&quot;bar");
+ assert.strictEqual(escape(`foo"`), "foo&quot;");
+ assert.strictEqual(escape(`foo"bar`), "foo&quot;bar");
+ assert.strictEqual(escape(`foo""bar`), "foo&quot;&quot;bar");
+
+ assert.strictEqual(escape("&"), "&amp;");
+ assert.strictEqual(escape("&bar"), "&amp;bar");
+ assert.strictEqual(escape("foo&"), "foo&amp;");
+ assert.strictEqual(escape("foo&bar"), "foo&amp;bar");
+ assert.strictEqual(escape("foo&&bar"), "foo&amp;&amp;bar");
+
+ assert.strictEqual(escape("'"), "&#39;");
+ assert.strictEqual(escape("'bar"), "&#39;bar");
+ assert.strictEqual(escape("foo'"), "foo&#39;");
+ assert.strictEqual(escape("foo'bar"), "foo&#39;bar");
+ assert.strictEqual(escape("foo''bar"), "foo&#39;&#39;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,
+]);