squiggle/packages/squiggle-lang/__tests__/TS/TestHelpers.ts
Vyacheslav Matyukhin 32cefb40da
TS & components (WIP)
2022-08-27 23:57:45 +04:00

45 lines
1.1 KiB
TypeScript

import { run, SquiggleValue } from "../../src/js/index";
export function testRun(x: string) {
const { result, bindings } = run(x); // FIXME - set environment
// x,
// bindings,
// {
// sampleCount: 1000,
// xyPointLength: 100,
// },
// imports
// );
if (result.tag === "Ok") {
return result.value;
} else {
throw new Error(
`Expected squiggle expression to evaluate but got error: ${result.value}`
);
}
}
export function failDefault() {
expect("be reached").toBe("codepath should never");
}
/**
* This appears also in `TestHelpers.res`. According to https://www.math.net/percent-error, it computes
* absolute error when numerical stability concerns make me not want to compute relative error.
* */
export function expectErrorToBeBounded(
received: number,
expected: number,
epsilon: number,
digits: number
) {
let distance = Math.abs(received - expected);
let expectedAbs = Math.abs(expected);
let normalizingDenom = Math.max(expectedAbs, 1);
let error = distance / normalizingDenom;
expect(Math.round(10 ** digits * error) / 10 ** digits).toBeLessThanOrEqual(
epsilon
);
}