template/packages-user/data-state/test/coreNode.test.ts

34 lines
1.4 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { SaveCompression } from '@user/data-common';
import { createCoreState } from '../src/core';
describe('Node CoreState factory', () => {
// 验证无参数工厂创建的状态实例不会共享勇士、地图、事件存储和存档系统
it('creates independent mutable data-side instances', () => {
const first = createCoreState();
const second = createCoreState();
expect(first).not.toBe(second);
expect(first.hero).not.toBe(second.hero);
expect(first.hero.attribute).not.toBe(second.hero.attribute);
expect(first.eventStore).not.toBe(second.eventStore);
first.hero.getModifiableAttribute().set('hp', 99);
expect(second.hero.attribute.getFinalAttribute('hp')).not.toBe(99);
const map = first.maps.createMap('isolated-floor', 1, 1);
map.setActiveStatus(true);
const layer = map.addLayer();
layer.setMapRef(new Uint32Array([7]));
expect(second.maps.getMap('isolated-floor')).toBeNull();
const saved = first.maps.saveState(SaveCompression.NoCompression);
const savedFloor = saved.floors.get('isolated-floor');
const savedLayer = savedFloor?.layers.get(0);
if (!savedLayer?.fullMap)
throw new Error('missing isolated map snapshot');
savedLayer.fullMap[0] = 99;
expect(layer.getBlock(0, 0)).toBe(7);
});
});