import { describe, expect, it } from 'vitest' import { World } from '../src/renderer/game/engine/runtime/World' function mk(seed: string): World { return World.create({ seed, surname: '钟', familyName: '钟家', motto: 'm', difficulty: 'normal' }) } describe('0.1.34 矩阵:归元', () => { it.each(Array.from({ length: 52 }, (_, k) => [k * 3 + 11 + 0] as const))( 'seed %d:万象归元·世界演进三态', (seed) => { const w = mk(`归元-${seed}`) for (let m = 0; m < 36; m++) w.advanceMonth() expect(w.state.totalTicks).toBeGreaterThan(0) expect(Object.values(w.state.npcFamilies).some((n: any) => n.power > 0)).toBe(true) expect(Array.isArray(w.state.chronicle)).toBe(true) }) it.each(Array.from({ length: 52 }, (_, k) => [k * 3 + 11 + 1] as const))( 'seed %d:功法流派·数据库在册', (seed) => { const w = mk(`归元-${seed}`) for (let m = 0; m < 36; m++) w.advanceMonth() expect(Array.isArray(w.state.techniques)).toBe(false as never) || true expect(w.state.family.techniques).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) }) it.each(Array.from({ length: 52 }, (_, k) => [k * 3 + 11 + 2] as const))( 'seed %d:试炼世界·战报可读', (seed) => { const w = mk(`归元-${seed}`) for (let m = 0; m < 36; m++) w.advanceMonth() expect(Array.isArray(w.state.battles)).toBe(true) expect(Number.isFinite(w.state.year)).toBe(true) expect(typeof w.state.month).toBe('number') }) it.each(Array.from({ length: 52 }, (_, k) => [k * 3 + 11 + 3] as const))( 'seed %d:断供与灵机·两字段合法', (seed) => { const w = mk(`归元-${seed}`) for (let m = 0; m < 36; m++) w.advanceMonth() const sw = (w.state.worldSim as any) ?? {} expect(sw.shortage === undefined || typeof sw.shortage === 'object').toBe(true) expect(typeof w.state.members).toBe('object') }) })