mirror of
https://github.com/motajs/template.git
synced 2026-09-12 17:58:51 +08:00
- Bind serialized point events to the coordinate event view. - Select the event layer by its event alias and verify the static view stays clean.
65 lines
1.9 KiB
TypeScript
65 lines
1.9 KiB
TypeScript
import { beforeAll, describe, expect, it, vi } from 'vitest';
|
|
|
|
interface TestModules {
|
|
MapState: typeof import('./mapState').MapState;
|
|
TileStore: typeof import('@user/data-common').TileStore;
|
|
RoleFaceBinder: typeof import('@user/data-common').RoleFaceBinder;
|
|
logger: typeof import('@motajs/common').logger;
|
|
}
|
|
|
|
let modules: TestModules;
|
|
|
|
beforeAll(async () => {
|
|
vi.stubGlobal('main', { replayChecking: true });
|
|
const mapModule = await import('./mapState');
|
|
const commonModule = await import('@user/data-common');
|
|
const loggerModule = await import('@motajs/common');
|
|
modules = {
|
|
MapState: mapModule.MapState,
|
|
TileStore: commonModule.TileStore,
|
|
RoleFaceBinder: commonModule.RoleFaceBinder,
|
|
logger: loggerModule.logger
|
|
};
|
|
});
|
|
|
|
function createRaw() {
|
|
return {
|
|
floorId: 'F1',
|
|
width: 2,
|
|
map: { 0: [1, 1, 1, 1] },
|
|
layerAlias: { 0: 'event' },
|
|
events: { 0: { 1: { 5: 'point-event' } } }
|
|
};
|
|
}
|
|
|
|
function createMapState() {
|
|
const tileStore = new modules.TileStore();
|
|
const state = {
|
|
tileStore,
|
|
itemStore: {},
|
|
mapStore: {},
|
|
eventStore: {},
|
|
roleFace: new modules.RoleFaceBinder(),
|
|
faceManager: {},
|
|
saveSystem: {}
|
|
};
|
|
return new modules.MapState(tileStore, state);
|
|
}
|
|
|
|
describe('MapState raw event path', () => {
|
|
it('raw point events and event layer', () => {
|
|
const mapState = createMapState();
|
|
const map = mapState.fromRaw(createRaw());
|
|
const layer = map?.eventLayer;
|
|
|
|
expect(layer).toBe(map?.getLayerByAlias('event'));
|
|
expect(layer?.getPointEvent(1, 0)).toEqual(
|
|
new Map([[5, 'point-event']])
|
|
);
|
|
expect(layer?.getLocationData(1, 0)?.static.tileEvent().get()).toEqual(
|
|
new Map()
|
|
);
|
|
expect(layer?.event(1, 0)?.dirty()).toBe(false);
|
|
});
|
|
});
|