ironic-mirror / tests /simulation.test.mjs
SNAPKITTYWEST's picture
push from SNAPKITTYWEST/ironic-mirror
677e207 verified
Raw
History Blame Contribute Delete
2.28 kB
import test from 'node:test';
import assert from 'node:assert/strict';
import { CHECKPOINTS, EVENTS, HAZARDS, OBJECTIVES, TOOLS, deriveSnapshot, serializeReplay } from '../docs/simulation.mjs';
import { createWasmBoundary } from '../docs/wasm-boundary.mjs';
test('scenario is deterministic and has a complete event vocabulary', () => {
const required = ['OBSERVE', 'SCAN', 'DISCOVER', 'PLAN', 'MOVE', 'TOOL_CALL', 'HAZARD_DETECTED', 'REASON', 'REROUTE', 'ACTION', 'VERIFICATION', 'FAILURE', 'RECOVERY', 'CHECKPOINT', 'COMPLETE'];
for (const type of required) assert.ok(EVENTS.some(item => item.type === type), `missing ${type}`);
assert.equal(EVENTS[0].timestamp, '14:02:31');
assert.equal(EVENTS.at(-1).position.x, 92);
assert.equal(HAZARDS.length, 6);
assert.equal(CHECKPOINTS.length, 4);
assert.equal(OBJECTIVES.length, 8);
assert.equal(TOOLS.length, 9);
assert.equal(JSON.stringify(deriveSnapshot(8)), JSON.stringify(deriveSnapshot(8)));
});
test('replay restores path, hazards, mirror response, and verification state', () => {
const before = deriveSnapshot(5);
const blocked = deriveSnapshot(8);
const after = deriveSnapshot(12);
assert.equal(before.path.length, 6);
assert.equal(blocked.current.verification, 'fail');
assert.equal(blocked.mirror.status, 'PATH COLLAPSED');
assert.ok(blocked.mirror.boundaryHardness > before.mirror.boundaryHardness);
assert.equal(after.current.verification, 'pass');
assert.equal(after.world.blockedPaths, 0);
assert.equal(after.checkpoints.length, 2);
assert.equal(deriveSnapshot(2).path.length, 3);
assert.notEqual(serializeReplay(5), serializeReplay(12));
});
test('snapshot clamps time travel and preserves completion', () => {
assert.equal(deriveSnapshot(-50).index, 0);
assert.equal(deriveSnapshot(1000).index, EVENTS.length - 1);
assert.equal(deriveSnapshot(1000).isComplete, true);
assert.equal(deriveSnapshot(1000).current.verification, 'pass');
});
test('WASM boundary is deterministic and explicitly reports its implementation', async () => {
const boundary = await createWasmBoundary();
assert.ok(['READY', 'FALLBACK'].includes(boundary.status));
assert.equal(boundary.score(41), 42);
assert.equal(boundary.score(0), 1);
});