import assert from 'node:assert/strict'; import test from 'node:test'; import { asNpcId } from '../../shared/types/ids'; import { NpcsOverlayStore } from './npcsOverlayStore'; const a = asNpcId('npc_a'); const b = asNpcId('npc_b'); void test('NpcsOverlayStore: inspect is independent from overlay show', () => { const store = new NpcsOverlayStore(); store.dispatch({ kind: 'inspect.toggle', npcId: a }); store.dispatch({ kind: 'inspect.show', npcId: b }); assert.deepEqual(store.getState().inspectNpcIds, [a, b]); assert.equal(store.getState().inspectFocusNpcId, b); assert.deepEqual(store.getState().activeNpcIds, []); store.dispatch({ kind: 'show', npcId: a }); assert.deepEqual(store.getState().activeNpcIds, [a]); assert.deepEqual(store.getState().inspectNpcIds, [a, b]); store.dispatch({ kind: 'hide' }); assert.deepEqual(store.getState().activeNpcIds, []); assert.deepEqual(store.getState().inspectNpcIds, [a, b]); store.dispatch({ kind: 'inspect.toggle', npcId: a }); assert.deepEqual(store.getState().inspectNpcIds, [b]); }); void test('NpcsOverlayStore: clear wipes inspect; ensureNpcStillExists prunes', () => { const store = new NpcsOverlayStore(); store.dispatch({ kind: 'inspect.show', npcId: a }); store.dispatch({ kind: 'show', npcId: b }); store.ensureNpcStillExists(new Set([a])); assert.deepEqual(store.getState().inspectNpcIds, [a]); assert.deepEqual(store.getState().activeNpcIds, []); store.clear(); assert.deepEqual(store.getState().inspectNpcIds, []); });