Files
ChronicleOfTheImmortalClan/tests/matrix-final-0.1.34.test.ts
thzxx bb82947bb6 v0.1.34: 万象归元——功法流派/世界自演化/插件MOD 进化 + 测试 6000
【版本】0.1.34(build 通过)
【测试】5242→6000(94 套件:matrix-tech/worldsim/mod/stable/final +758 矩阵域)
【文档】AGENTS(MOD 协议章节 14 卡/红线补 worldNum 键位 + 金钟罩 0.1.34 基线注释)/README(沿革+矩阵域)/MEMORY(8c2 世界状态红牌纪律 + B0 军规)/MOD_GUIDE(4 效果字段+patch 层注解)
2026-08-23 22:12:07 +08:00

42 lines
1.9 KiB
TypeScript

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')
})
})