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.32 矩阵:琳琅甲组', () => { it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 3] as const))( 'seed %d:辰1·三验', (seed) => { const w = mk(`琳琅甲组-0-${seed}`) for (let m = 0; m < 6; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Number.isFinite(w.state.family.stones)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 4] as const))( 'seed %d:辰2·三验', (seed) => { const w = mk(`琳琅甲组-1-${seed}`) for (let m = 0; m < 12; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Number.isFinite(w.state.family.stones)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 5] as const))( 'seed %d:辰3·三验', (seed) => { const w = mk(`琳琅甲组-2-${seed}`) for (let m = 0; m < 18; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Number.isFinite(w.state.family.stones)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 6] as const))( 'seed %d:辰4·三验', (seed) => { const w = mk(`琳琅甲组-3-${seed}`) for (let m = 0; m < 24; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Number.isFinite(w.state.family.stones)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 7] as const))( 'seed %d:辰5·三验', (seed) => { const w = mk(`琳琅甲组-4-${seed}`) for (let m = 0; m < 30; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Number.isFinite(w.state.family.stones)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 8] as const))( 'seed %d:辰6·三验', (seed) => { const w = mk(`琳琅甲组-5-${seed}`) for (let m = 0; m < 36; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Number.isFinite(w.state.family.stones)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 9] as const))( 'seed %d:辰7·三验', (seed) => { const w = mk(`琳琅甲组-6-${seed}`) for (let m = 0; m < 42; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Number.isFinite(w.state.family.stones)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 10] as const))( 'seed %d:辰8·三验', (seed) => { const w = mk(`琳琅甲组-7-${seed}`) for (let m = 0; m < 48; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Number.isFinite(w.state.family.stones)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 11] as const))( 'seed %d:辰9·三验', (seed) => { const w = mk(`琳琅甲组-8-${seed}`) for (let m = 0; m < 54; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Number.isFinite(w.state.family.stones)).toBe(true) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 12] as const))( 'seed %d:辰10·三验', (seed) => { const w = mk(`琳琅甲组-9-${seed}`) for (let m = 0; m < 60; m++) w.advanceMonth() expect(Number.isFinite(w.state.seq)).toBe(true) expect(Array.isArray(w.state.chronicle)).toBe(true) expect(Number.isFinite(w.state.family.stones)).toBe(true) }) })