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 矩阵:辰宿丙组(冲刺三)', () => { it.each(Array.from({ length: 50 }, (_, k) => [k * 4 + 501] as const))( 'seed %d:辰11 完满验', (seed) => { const w = mk(`辰宿丙组-0-${seed}`) for (let m = 0; m < 5; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.missions)).toBe(true) expect(w.state.stats).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) expect(Array.isArray(w.state.eventQueue)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 4 + 502] as const))( 'seed %d:辰12 完满验', (seed) => { const w = mk(`辰宿丙组-1-${seed}`) for (let m = 0; m < 8; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.missions)).toBe(true) expect(w.state.stats).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) expect(Array.isArray(w.state.eventQueue)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 4 + 503] as const))( 'seed %d:辰13 完满验', (seed) => { const w = mk(`辰宿丙组-2-${seed}`) for (let m = 0; m < 11; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.missions)).toBe(true) expect(w.state.stats).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) expect(Array.isArray(w.state.eventQueue)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 4 + 504] as const))( 'seed %d:辰14 完满验', (seed) => { const w = mk(`辰宿丙组-3-${seed}`) for (let m = 0; m < 14; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.missions)).toBe(true) expect(w.state.stats).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) expect(Array.isArray(w.state.eventQueue)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 4 + 505] as const))( 'seed %d:辰15 完满验', (seed) => { const w = mk(`辰宿丙组-4-${seed}`) for (let m = 0; m < 17; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.missions)).toBe(true) expect(w.state.stats).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) expect(Array.isArray(w.state.eventQueue)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 4 + 506] as const))( 'seed %d:辰16 完满验', (seed) => { const w = mk(`辰宿丙组-5-${seed}`) for (let m = 0; m < 20; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.missions)).toBe(true) expect(w.state.stats).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) expect(Array.isArray(w.state.eventQueue)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 4 + 507] as const))( 'seed %d:辰17 完满验', (seed) => { const w = mk(`辰宿丙组-6-${seed}`) for (let m = 0; m < 23; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.missions)).toBe(true) expect(w.state.stats).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) expect(Array.isArray(w.state.eventQueue)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 4 + 508] as const))( 'seed %d:辰18 完满验', (seed) => { const w = mk(`辰宿丙组-7-${seed}`) for (let m = 0; m < 26; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.missions)).toBe(true) expect(w.state.stats).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) expect(Array.isArray(w.state.eventQueue)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 4 + 509] as const))( 'seed %d:辰19 完满验', (seed) => { const w = mk(`辰宿丙组-8-${seed}`) for (let m = 0; m < 29; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.missions)).toBe(true) expect(w.state.stats).toBeTruthy() expect(Number.isFinite(w.state.family.stones)).toBe(true) expect(Array.isArray(w.state.eventQueue)).toBe(true) }) })