import assert from 'node:assert/strict'; import test from 'node:test'; import { PerspectiveCamera } from 'three'; import { createRenderInvalidation } from '../src/scene/renderInvalidation.ts'; test('unchanged frames skip rendering but each live update requests a fresh frame', () => { const render = createRenderInvalidation(); const camera = new PerspectiveCamera(); assert.equal(render.shouldRender(camera), true); assert.equal(render.shouldRender(camera), false); for (let tick = 0; tick < 3; tick++) { render.invalidate(); assert.equal(render.shouldRender(camera), true); assert.equal(render.shouldRender(camera), false); } }); test('movement, rotation, camera switches and ocean animation remain visible', () => { const render = createRenderInvalidation(); const camera = new PerspectiveCamera(); render.shouldRender(camera); camera.position.x = 1; assert.equal(render.shouldRender(camera), true); camera.rotation.y = 0.2; assert.equal(render.shouldRender(camera), true); assert.equal(render.shouldRender(camera.clone()), true); assert.equal(render.shouldRender(camera, true), true); assert.equal(render.shouldRender(camera, true), true); });