Files
scriptc/packages/runtime/test/number.test.ts
2026-07-22 18:08:04 -05:00

26 lines
1002 B
TypeScript

import { execFile } from "node:child_process";
import { mkdir } from "node:fs/promises";
import { join } from "node:path";
import { promisify } from "node:util";
import { expect, test } from "vitest";
const execFileAsync = promisify(execFile);
const testDir = import.meta.dirname;
// Compiles and runs the C-side oracle test against the committed case file
// (generated once from Node via gen-number-cases.mjs — see that file to
// regenerate or fuzz).
test("scr_f64_to_str matches Node String(x) on committed oracle cases", async () => {
const buildDir = join(testDir, "build");
await mkdir(buildDir, { recursive: true });
const bin = join(buildDir, "test_number");
await execFileAsync("clang", [
"-std=c11", "-O2", "-Wall", "-Wextra",
"-o", bin,
join(testDir, "test_number.c"),
join(testDir, "../src/scr_number.c"),
]);
const { stderr } = await execFileAsync(bin, [join(testDir, "number-cases.txt")]);
expect(stderr.trim()).toMatch(/^(\d+)\/\1 cases passed$/);
});