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.31 矩阵:宏量检验(500 例)', () => { it.each(Array.from({ length: 25 }, (_, k) => [k * 7 + 1] as const))( 'seed %d:宏1二十验', (seed) => { const w = mk(`h1-${seed}`) for (let m = 0; m < 12; m++) w.advanceMonth() expect(w.state.year).toBeGreaterThanOrEqual(0) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Array.isArray(w.state.battles)).toBe(true) expect(w.state.family.inventory).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) expect(Number.isFinite(w.state.seq)).toBe(true) }) it.each(Array.from({ length: 25 }, (_, k) => [k * 7 + 2] as const))( 'seed %d:宏2二十验', (seed) => { const w = mk(`h2-${seed}`) for (let m = 0; m < 24; m++) w.advanceMonth() expect(w.state.year).toBeGreaterThanOrEqual(1) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Array.isArray(w.state.battles)).toBe(true) expect(w.state.family.inventory).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) expect(Number.isFinite(w.state.seq)).toBe(true) }) it.each(Array.from({ length: 25 }, (_, k) => [k * 7 + 3] as const))( 'seed %d:宏3二十验', (seed) => { const w = mk(`h3-${seed}`) for (let m = 0; m < 36; m++) w.advanceMonth() expect(w.state.year).toBeGreaterThanOrEqual(2) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Array.isArray(w.state.battles)).toBe(true) expect(w.state.family.inventory).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) expect(Number.isFinite(w.state.seq)).toBe(true) }) it.each(Array.from({ length: 25 }, (_, k) => [k * 7 + 4] as const))( 'seed %d:宏4二十验', (seed) => { const w = mk(`h4-${seed}`) for (let m = 0; m < 48; m++) w.advanceMonth() expect(w.state.year).toBeGreaterThanOrEqual(3) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Array.isArray(w.state.battles)).toBe(true) expect(w.state.family.inventory).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) expect(Number.isFinite(w.state.seq)).toBe(true) }) })