From 98d59588806ea306c816687729cb8d16b6e629fb Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Wed, 9 Sep 2026 10:22:23 +0800 Subject: [PATCH] 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 --- .../data-base/src/map/mapLifecycle.test.ts | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/packages-user/data-base/src/map/mapLifecycle.test.ts b/packages-user/data-base/src/map/mapLifecycle.test.ts index d7019cc..8eda79a 100644 --- a/packages-user/data-base/src/map/mapLifecycle.test.ts +++ b/packages-user/data-base/src/map/mapLifecycle.test.ts @@ -27,7 +27,8 @@ beforeAll(async () => { }); function createMapState( - pointEvents: Record> = {} + pointEvents: Record> = {}, + 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' },