inventoresed
Version:
Z-Wave driver written entirely in JavaScript/TypeScript
59 lines (52 loc) • 1.59 kB
text/typescript
import { cpp2js, isPrintableASCIIWithNewlines, num2hex } from "./strings";
describe("lib/strings => cpp2js() => ", () => {
it("should truncate null-terminated strings", () => {
const testCases = [
["abc\0def", "abc"],
["\0def", ""],
["abcdef\0", "abcdef"],
];
for (const [inp, out] of testCases) {
expect(cpp2js(inp)).toBe(out);
}
});
it("should just return non-terminated strings", () => {
const testCases = ["abc", "def", "abcdef"];
for (const tc of testCases) {
expect(cpp2js(tc)).toBe(tc);
}
});
});
describe("lib/strings => num2hex()", () => {
it(`should return "undefined" when the input is null or undefined`, () => {
expect(num2hex(null)).toBe("undefined");
expect(num2hex(undefined)).toBe("undefined");
});
it("should return an even number lowercase hex digits prefixed with 0x", () => {
const testCases: [number, string][] = [
[1, "0x01"],
[0xfed, "0x0fed"],
];
for (const [inp, out] of testCases) {
expect(num2hex(inp)).toBe(out);
}
});
it("when the uppercase parameter is true, the hex digits should be uppercase", () => {
expect(num2hex(0xabc123, true)).toBe("0xABC123");
});
});
describe("lib/strings => isPrintableASCIIWithNewlines() => ", () => {
it("should return true for ASCII strings that start or end with newlines", () => {
const testCases = [
["abcdef\n\r", true],
["\n\r", true],
["", true],
["\r\n \n\r", true],
["ß", false],
["\r\nß\r\n", false],
] as const;
for (const [inp, result] of testCases) {
expect(isPrintableASCIIWithNewlines(inp)).toBe(result);
}
});
});