43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import { run, squiggleExpression, errorValueToString } from "../src/js/index";
|
|
import * as chalk from "chalk";
|
|
|
|
let testRun = (x: string): squiggleExpression => {
|
|
let result = run(x, { sampleCount: 100, xyPointLength: 100 });
|
|
if (result.tag === "Ok") {
|
|
return result.value;
|
|
} else {
|
|
throw Error(
|
|
"Expected squiggle expression to evaluate but got error: " +
|
|
errorValueToString(result.value)
|
|
);
|
|
}
|
|
};
|
|
|
|
export function test(name: string, fn: () => void) {
|
|
console.log(chalk.cyan.bold(name));
|
|
fn();
|
|
}
|
|
|
|
export function expectEqual(expression1: string, expression2: string) {
|
|
let result1 = testRun(expression1);
|
|
let result2 = testRun(expression2);
|
|
if (result1.tag === "number" && result2.tag === "number") {
|
|
let logloss = Math.log(Math.abs(result1.value - result2.value));
|
|
let isBadLogless = logloss > 1;
|
|
console.log(chalk.blue(`${expression1} = ${expression2}`));
|
|
console.log(`${result1.value} = ${result2.value}`);
|
|
console.log(
|
|
`logloss = ${
|
|
isBadLogless
|
|
? chalk.red(logloss.toFixed(2))
|
|
: chalk.green(logloss.toFixed(2))
|
|
}`
|
|
);
|
|
console.log();
|
|
} else {
|
|
throw Error(
|
|
`Expected both to be number, but got ${result1.tag} and ${result2.tag}`
|
|
);
|
|
}
|
|
}
|