Files
sunrise/tests/renderInvalidation.test.ts

30 lines
1.2 KiB
TypeScript

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);
});