template/packages-user/data-state/__test__/coreNode.test.ts
unanmed 36d8b4fb3c test(08-01): migrate data-layer tests into __test__ dirs
Move 65 *.test.ts + 6 *.perf.ts across data-{common,base,system,state} into sibling __test__/ (data-state/test -> data-state/__test__), incl. fixtures/floors.json and non-test helpers; rewrite Rule A relative specifiers (+1 depth), keep Rule B unchanged; sync script/test-data-node.ts require paths. Gates: test:ci=66 files, test:perf=6 files, eslint clean, zero config/production changes.
2026-10-04 17:34:09 +08:00

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);
});
});