import { describe, expect, it } from 'vitest' import { World } from '../src/renderer/game/engine/runtime/World' import { techniqueById } from '../src/renderer/game/data/techniques' import { pack } from '../src/renderer/game/data/registry' function mk(seed: string): World { return World.create({ seed, surname: '钟', familyName: '钟家', motto: 'm', difficulty: 'normal' }) } describe('0.1.34 矩阵:世界演化', () => { it.each(Array.from({ length: 50 }, (_, k) => [k * 5 + 7 + 0] as const))( 'seed %d:warFatigue 字段演化:世界温度存在且有限', (seed) => { const w = mk(`世界演化-${seed}`) for (let m = 0; m < 24; m++) w.advanceMonth() expect(w.state.worldSim).toBeTruthy() expect((w.state.worldSim as any)?.warFatigue === undefined || typeof (w.state.worldSim as any)?.warFatigue === 'number').toBe(true) expect((w.state.worldSim as any)?.warFatigue ?? 0).toBeGreaterThanOrEqual(0) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 5 + 7 + 1] as const))( 'seed %d:断供监测:shortage 至少一 obj(或未缺)', (seed) => { const w = mk(`世界演化-${seed}`) for (let m = 0; m < 24; m++) w.advanceMonth() const sh = (w.state.worldSim as any)?.shortage expect(sh === undefined || typeof sh === 'object').toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 5 + 7 + 2] as const))( 'seed %d:换代继承:成功次数非负且世界简报有限', (seed) => { const w = mk(`世界演化-${seed}`) for (let m = 0; m < 24; m++) w.advanceMonth() const s = (w.state.worldSim as any) expect((s.npcSuccessions ?? 0)).toBeGreaterThanOrEqual(0) expect(Array.isArray(s.worldAnnals)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 5 + 7 + 3] as const))( 'seed %d:新秘境灵机:三年演进 wonder 定义或零(合法)', (seed) => { const w = mk(`世界演化-${seed}`) for (let m = 0; m < 24; m++) w.advanceMonth() expect((w.state.worldSim as any) !== undefined).toBe(true) }) })