34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
// import { errorValueToString } from "../../src/js/index";
|
|
import { testRun } from "./TestHelpers";
|
|
import * as fc from "fast-check";
|
|
|
|
describe("Scalar manipulation is well-modeled by javascript math", () => {
|
|
test("in the case of natural logarithms", () => {
|
|
fc.assert(
|
|
fc.property(fc.float(), (x) => {
|
|
let squiggleString = `log(${x})`;
|
|
let squiggleResult = testRun(squiggleString);
|
|
if (x == 0) {
|
|
expect(squiggleResult.value).toEqual(-Infinity);
|
|
} else if (x < 0) {
|
|
expect(squiggleResult.value).toEqual(
|
|
"somemessage (confused why a test case hasn't pointed out to me that this message is bogus)"
|
|
);
|
|
} else {
|
|
expect(squiggleResult.value).toEqual(Math.log(x));
|
|
}
|
|
})
|
|
);
|
|
});
|
|
|
|
test("in the case of addition (with assignment)", () => {
|
|
fc.assert(
|
|
fc.property(fc.float(), fc.float(), fc.float(), (x, y, z) => {
|
|
let squiggleString = `x = ${x}; y = ${y}; z = ${z}; x + y + z`;
|
|
let squiggleResult = testRun(squiggleString);
|
|
expect(squiggleResult.value).toBeCloseTo(x + y + z);
|
|
})
|
|
);
|
|
});
|
|
});
|