mirror of
https://github.com/motajs/template.git
synced 2026-09-14 10:58:51 +08:00
test(01-09): add point-event-only map aggregation regression
- Covers a dirty point event without matrix, static, or dynamic changes - Asserts the low-compression layer keeps its z-index and nested event ids
This commit is contained in:
parent
cb9934343a
commit
98d5958880
@ -27,7 +27,8 @@ beforeAll(async () => {
|
||||
});
|
||||
|
||||
function createMapState(
|
||||
pointEvents: Record<number, Record<number, string>> = {}
|
||||
pointEvents: Record<number, Record<number, string>> = {},
|
||||
blocks: number[] = [1, 1, 1, 1]
|
||||
) {
|
||||
const tileStore = new modules.TileStore();
|
||||
tileStore.addTile({
|
||||
@ -61,7 +62,7 @@ function createMapState(
|
||||
const map = mapState.fromRaw({
|
||||
floorId: 'F1',
|
||||
width: 2,
|
||||
map: { 0: [1, 1, 1, 1] },
|
||||
map: { 0: blocks },
|
||||
layerAlias: { 0: 'event' },
|
||||
events: { 0: pointEvents }
|
||||
});
|
||||
@ -213,6 +214,26 @@ describe('MapLayer point event lifecycle', () => {
|
||||
expect(point.dirty()).toBe(false);
|
||||
});
|
||||
|
||||
it('map saves layers containing only point events', () => {
|
||||
const { map, layer } = createMapState({}, [0, 0, 0, 0]);
|
||||
layer.setZIndex(7);
|
||||
const point = layer.event(1, 0)!;
|
||||
|
||||
expect(layer.dirty()).toBe(false);
|
||||
point.set(7, 'point-only');
|
||||
expect(layer.dirty()).toBe(true);
|
||||
|
||||
const save = map.saveState(modules.SaveCompression.LowCompression);
|
||||
const layerSave = save.layers.get(7);
|
||||
expect(layerSave).toBeDefined();
|
||||
expect(layerSave?.fullMap).toBeUndefined();
|
||||
expect(layerSave?.staticBlocks?.size).toBe(0);
|
||||
expect(layerSave?.dynamicBlocks?.size).toBe(0);
|
||||
expect(layerSave?.pointEvents).toEqual(
|
||||
new Map([[1, new Map([[7, 'point-only']])]])
|
||||
);
|
||||
});
|
||||
|
||||
it('resize preserves in-range point events and resize2 clears them', () => {
|
||||
const { layer } = createMapState({
|
||||
0: { 1: 'top-left' },
|
||||
|
||||
Loading…
Reference in New Issue
Block a user