time for a snapshot
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
import { expect, test } from "bun:test";
|
||||
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);
|
||||
});
|
||||
Reference in New Issue
Block a user