mirror of
https://github.com/oven-sh/bun
synced 2026-02-13 12:29:07 +00:00
99 lines
4.3 KiB
TypeScript
99 lines
4.3 KiB
TypeScript
import { expect, test } from "bun:test";
|
|
import { addStrings, addStringsUTF16, escape, identity } from "./macro.ts" assert { type: "macro" };
|
|
import { escapeHTML } from "bun" assert { type: "macro" };
|
|
|
|
test("bun builtins can be used in macros", async () => {
|
|
expect(escapeHTML("abc!")).toBe("abc!");
|
|
});
|
|
|
|
test("latin1 string", () => {
|
|
expect(identity("©")).toBe("©");
|
|
});
|
|
|
|
test("ascii string", () => {
|
|
expect(identity("abc")).toBe("abc");
|
|
});
|
|
|
|
test("type coercion", () => {
|
|
expect(identity({ a: 1 })).toEqual({ a: 1 });
|
|
expect(identity([1, 2, 3])).toEqual([1, 2, 3]);
|
|
expect(identity(undefined)).toBe(undefined);
|
|
expect(identity(null)).toBe(null);
|
|
expect(identity(1.5)).toBe(1.5);
|
|
expect(identity(1)).toBe(1);
|
|
expect(identity(true)).toBe(true);
|
|
});
|
|
|
|
test("escaping", () => {
|
|
expect(identity("\\")).toBe("\\");
|
|
expect(identity("\f")).toBe("\f");
|
|
expect(identity("\n")).toBe("\n");
|
|
expect(identity("\r")).toBe("\r");
|
|
expect(identity("\t")).toBe("\t");
|
|
expect(identity("\v")).toBe("\v");
|
|
expect(identity("\0")).toBe("\0");
|
|
expect(identity("'")).toBe("'");
|
|
expect(identity('"')).toBe('"');
|
|
expect(identity("`")).toBe("`");
|
|
// prettier-ignore
|
|
expect(identity("\'")).toBe("\'");
|
|
// prettier-ignore
|
|
expect(identity('\"')).toBe('\"');
|
|
// prettier-ignore
|
|
expect(identity("\`")).toBe("\`");
|
|
expect(identity("$")).toBe("$");
|
|
expect(identity("\x00")).toBe("\x00");
|
|
expect(identity("\x0B")).toBe("\x0B");
|
|
expect(identity("\x0C")).toBe("\x0C");
|
|
|
|
expect(identity("\\")).toBe("\\");
|
|
|
|
expect(escape()).toBe("\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C");
|
|
|
|
expect(addStrings("abc")).toBe("abc\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings("\n")).toBe("\n\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings("\r")).toBe("\r\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings("\t")).toBe("\t\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings("©")).toBe("©\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings("\x00")).toBe("\x00\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings("\x0B")).toBe("\x0B\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings("\x0C")).toBe("\x0C\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings("\\")).toBe("\\\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings("\f")).toBe("\f\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings("\v")).toBe("\v\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings("\0")).toBe("\0\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings("'")).toBe("'\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings('"')).toBe('"\\\f\n\r\t\v\0\'"`$\x00\x0B\x0C©');
|
|
expect(addStrings("`")).toBe("`\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
expect(addStrings("😊")).toBe("😊\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C©");
|
|
|
|
expect(addStringsUTF16("abc")).toBe("abc\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16("\n")).toBe("\n\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16("\r")).toBe("\r\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16("\t")).toBe("\t\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16("©")).toBe("©\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16("\x00")).toBe("\x00\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16("\x0B")).toBe("\x0B\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16("\x0C")).toBe("\x0C\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16("\\")).toBe("\\\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16("\f")).toBe("\f\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16("\v")).toBe("\v\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16("\0")).toBe("\0\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16("'")).toBe("'\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16('"')).toBe('"\\\f\n\r\t\v\0\'"`$\x00\x0B\x0C😊');
|
|
expect(addStringsUTF16("`")).toBe("`\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
expect(addStringsUTF16("😊")).toBe("😊\\\f\n\r\t\v\0'\"`$\x00\x0B\x0C😊");
|
|
});
|
|
|
|
test("utf16 string", () => {
|
|
expect(identity("😊 Smiling Face with Smiling Eyes Emoji")).toBe("😊 Smiling Face with Smiling Eyes Emoji");
|
|
});
|
|
|
|
// test("template string ascii", () => {
|
|
// expect(identity(`A${""}`)).toBe("A");
|
|
// });
|
|
|
|
// test("template string latin1", () => {
|
|
// expect(identity(`©${""}`)).toBe("©");
|
|
// });
|