import assert from "node:assert/strict"; import * as runner from "../runner.mjs"; import { escape, } from "../../src/escape.mjs"; const test_escape = async t => { t.start("escape()"); await t.test("numbers", () => { assert.equal(escape(0), "0"); assert.equal(escape(42), "42"); assert.equal(escape(-1), "-1"); }); await t.test("object", () => { assert.equal(escape({}), "[object Object]"); assert.equal(escape({ k: "v" }), "[object Object]"); }); await 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("<"), "<"); 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"); }); await t.test("the combination of all special characters", () => { assert.strictEqual( escape(`foo, "bar", 'baz' & `), "foo, "bar", 'baz' & <quux>", ); }); }; await runner.runTests([ test_escape, ]);