import { describe, it, expect } from "vitest"; import * as generate from "../../src/ts/utils/generate"; describe("hexadecimal", () => { it("should generate a random hexadecimal string", () => { const hex = generate.getHexadecimal(); expect(hex.length).toSatisfy( (len: number) => len % 2 === 0, "The length of the hexadecimal string should be even.", ); expect(hex.length).toBeGreaterThanOrEqual(2); expect(hex.length).toBeLessThanOrEqual(16); expect(hex).toMatch(/^[0-9a-f]+$/); }); }); describe("specials", () => { it("should generate valid special character strings", () => { let foundComma = false; let foundPeriod = false; const expectedSpecials = generate.__testing.specials; // Generate 1000 special "words" and check each for (let i = 0; i < 1000; i++) { const specials = generate.getSpecials(); // Check min/max length (1-7 as per implementation) expect(specials.length).toBeGreaterThanOrEqual(1); expect(specials.length).toBeLessThanOrEqual(7); // Check that every character is from the expected specials array for (const char of specials) { expect(expectedSpecials).toContain(char); if (char === ",") foundComma = true; if (char === ".") foundPeriod = true; } } // Ensure comma and period were found during the test expect(foundComma).toBe(true); expect(foundPeriod).toBe(true); }); });