Files

28 lines
809 B
TypeScript

import { expect, test } from "vitest";
import { vec } from "./given.ts";
import { integrate } from "./motion.ts";
test("integrate advances position by velocity * delta", () => {
// velocity 0.1 units/ms, 100ms => move 10 units
expect(integrate(vec(0, 0), vec(0.1, 0), 100)).toEqual({ x: 10, y: 0 });
});
test("zero delta does not move", () => {
expect(integrate(vec(5, 5), vec(0.1, 0.1), 0)).toEqual({ x: 5, y: 5 });
});
test("framerate independence: one big step == many small steps", () => {
const start = vec(0, 0);
const vel = vec(0.1, -0.05);
const oneBigStep = integrate(start, vel, 16);
let manySmall = start;
for (let i = 0; i < 16; i++) {
manySmall = integrate(manySmall, vel, 1);
}
expect(manySmall.x).toBeCloseTo(oneBigStep.x);
expect(manySmall.y).toBeCloseTo(oneBigStep.y);
});