Files
united-workforce/packages/workflow/__tests__/base32.test.ts
T
xiaoju cf17dedac3 refactor: organize workflow/src into 6 module folders
Move 34 flat modules into cas/, registry/, bundle/, extract/, engine/, util/.
Move gc.ts to engine/ (was in cas/) to avoid cas→engine reverse dependency.
Dependency direction: util ← cas ← extract ← engine, util ← registry ← bundle.
No logic changes — only file locations and import paths.

Refs #102
2026-05-08 01:22:01 +00:00

39 lines
1.2 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import {
decodeCrockfordBase32Bits,
decodeCrockfordToUint64,
encodeCrockfordBase32Bits,
encodeUint64AsCrockford,
} from "../src/util/base32.js";
describe("Crockford Base32", () => {
test("roundtrip 64-bit hash encoding", () => {
const value = 0xef46_db37_51d8_e999n;
const encoded = encodeUint64AsCrockford(value);
expect(encoded.length).toBe(13);
const decoded = decodeCrockfordToUint64(encoded);
expect(decoded.ok).toBe(true);
if (decoded.ok) {
expect(decoded.value).toBe(value);
}
});
test("roundtrip arbitrary bit widths used by ULID (128-bit)", () => {
const rand = 0x1234567890abcdef12n & ((1n << 80n) - 1n);
const payload = (12345n << 80n) | rand;
const encoded = encodeCrockfordBase32Bits(payload, 128);
expect(encoded.length).toBe(26);
const decoded = decodeCrockfordBase32Bits(encoded, 128);
expect(decoded.ok).toBe(true);
if (decoded.ok) {
expect(decoded.value).toBe(payload);
}
});
test("reject invalid characters", () => {
const decoded = decodeCrockfordToUint64("!!!!!!!!!!!!!");
expect(decoded.ok).toBe(false);
});
});