forked from phenom/healer-man
41 lines
1.6 KiB
TypeScript
41 lines
1.6 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
encounterWorldIsReady,
|
|
encounterWorldKey,
|
|
rendererCanvasKey,
|
|
sceneFrameLoop,
|
|
} from "./sceneLifecycle";
|
|
|
|
describe("R3F scene lifecycle", () => {
|
|
it("keeps the WebGL renderer stable while encounter worlds change", () => {
|
|
expect(rendererCanvasKey(0)).toBe(rendererCanvasKey(0));
|
|
expect(rendererCanvasKey(0)).not.toBe(rendererCanvasKey(1));
|
|
expect(encounterWorldKey("wailing-caverns", 1))
|
|
.not.toBe(encounterWorldKey("wailing-caverns", 2));
|
|
});
|
|
|
|
it("only accepts collision readiness from the current encounter world", () => {
|
|
expect(encounterWorldIsReady(null, 4)).toBe(false);
|
|
expect(encounterWorldIsReady(4, 4)).toBe(true);
|
|
expect(encounterWorldIsReady(4, 5)).toBe(false);
|
|
});
|
|
|
|
it("renders local paused worlds on demand without stalling loading or online worlds", () => {
|
|
const readyWorld = {
|
|
worldReady: true,
|
|
graphicsRecovering: false,
|
|
sharedOnline: false,
|
|
paused: false,
|
|
mapOpen: false,
|
|
companionOpen: false,
|
|
};
|
|
expect(sceneFrameLoop({ ...readyWorld, paused: true })).toBe("demand");
|
|
expect(sceneFrameLoop({ ...readyWorld, mapOpen: true })).toBe("demand");
|
|
expect(sceneFrameLoop({ ...readyWorld, companionOpen: true })).toBe("demand");
|
|
expect(sceneFrameLoop({ ...readyWorld, paused: true, sharedOnline: true })).toBe("always");
|
|
expect(sceneFrameLoop({ ...readyWorld, paused: true, worldReady: false })).toBe("always");
|
|
expect(sceneFrameLoop({ ...readyWorld, paused: true, graphicsRecovering: true })).toBe("always");
|
|
expect(sceneFrameLoop(readyWorld)).toBe("always");
|
|
});
|
|
});
|