72 lines
2.0 KiB
JavaScript
72 lines
2.0 KiB
JavaScript
const { state } = require("../src/state");
|
|
const { DEFAULT_CHANNEL_MAP } = require("../src/mapping/canonical");
|
|
|
|
describe("StateManager", () => {
|
|
beforeEach(() => {
|
|
state.emitterMap = null;
|
|
state.artNetConfig = null;
|
|
state.currentFrame = null;
|
|
state.presets = new Map();
|
|
state.playlist = { entries: [], activeIndex: -1, loop: true };
|
|
state.blackout = false;
|
|
state.outputEnabled = false;
|
|
});
|
|
|
|
it("stores and retrieves emitter map", () => {
|
|
const emitter = {
|
|
id: "e1",
|
|
xyz: [0, 0, 0],
|
|
region: "top",
|
|
sourceUniverse: 0,
|
|
sourceDmxSlot: 1,
|
|
destinationRouteId: "192.168.1.101",
|
|
channelMap: { ...DEFAULT_CHANNEL_MAP },
|
|
provenance: { sourceFile: "t.json", checksum: "x", importedAt: "now" },
|
|
};
|
|
const map = {
|
|
version: 1,
|
|
generatedAt: "now",
|
|
sourceFile: "t.json",
|
|
checksum: "x",
|
|
emitters: [emitter],
|
|
universeCount: 1,
|
|
slotOccupancy: new Map([[0, new Set([1, 2])]]),
|
|
};
|
|
state.setEmitterMap(map);
|
|
expect(state.getEmitterMap()).toBe(map);
|
|
state.clearEmitterMap();
|
|
expect(state.getEmitterMap()).toBeNull();
|
|
});
|
|
|
|
it("tracks blackout state", () => {
|
|
expect(state.isBlackout()).toBe(false);
|
|
state.setBlackout(true);
|
|
expect(state.isBlackout()).toBe(true);
|
|
state.setBlackout(false);
|
|
expect(state.isBlackout()).toBe(false);
|
|
});
|
|
|
|
it("tracks output enabled state", () => {
|
|
expect(state.isOutputEnabled()).toBe(false);
|
|
state.setOutputEnabled(true);
|
|
expect(state.isOutputEnabled()).toBe(true);
|
|
});
|
|
|
|
it("stores and retrieves frame", () => {
|
|
const frame = {
|
|
timestamp: 1,
|
|
fps: 40,
|
|
intensities: new Map([["a", { top: 0.5, bottom: 0.5 }]]),
|
|
};
|
|
state.setFrame(frame);
|
|
expect(state.getFrame()).toBe(frame);
|
|
});
|
|
|
|
it("snapshot reports state", () => {
|
|
const snap = state.snapshot();
|
|
expect(snap).toHaveProperty("hasEmitterMap");
|
|
expect(snap).toHaveProperty("blackout");
|
|
expect(snap).toHaveProperty("outputEnabled");
|
|
});
|
|
});
|