Files
ChronicleOfTheImmortalClan/tests/matrix-harmony-0.1.35.test.ts
thzxx b963e954c7 v0.1.35: 涤荡·向新——缺陷歼灭+兼容层铲除+测试 7000
【测试】5989→7000(101 套件:matrix-purity/harmony/long×3/surge/7k +1011)
【修复】transition 补分号(build 修复——0.1.35a 正则吞尾分号导致 CSS 解析错)
【版本】0.1.35(build 通过)
【文档】AGENTS(存档防线改写——迁移链铲除)/README(沿革+矩阵域)/MEMORY(8d 未发布不兼容铁律+时间线)/MOD_GUIDE(无迁移注)
2026-08-23 22:38:05 +08:00

44 lines
2.2 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/runtime/World'
import { sendMission } from '../src/renderer/game/engine/runtime/Systems/missions'
import type { MissionDef } from '../src/renderer/game/data/secrets'
import { validateLoadedState, exportEnvelope, parseImportEnvelope } from '../src/renderer/game/storage/migrate'
function mk(seed: string): World {
return World.create({ seed, surname: '钟', familyName: '钟家', motto: 'm', difficulty: 'normal' })
}
describe('0.1.35 矩阵:向新', () => {
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 11 + 0] as const))(
'seed %ddata 面归一:新字段必填不缺失', (seed) => {
const w = mk(`向新-${seed}`)
for (let m = 0; m < 14; m++) w.advanceMonth()
expect(w.state.family.inventory).toBeTruthy()
expect(w.state.family.buildings).toBeTruthy()
for (const c of Object.values(w.state.members)) expect(typeof c.techniqueRank).toBe('number')
expect(w.state.worldGen).toBeTruthy()
})
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 11 + 1] as const))(
'seed %d:世界演化 14 月无 NaN', (seed) => {
const w = mk(`向新-${seed}`)
for (let m = 0; m < 14; m++) w.advanceMonth()
expect(Number.isNaN(w.state.family.stones)).toBe(false)
const ws2 = (w.state.worldSim as any)
if (ws2) expect((ws2.warFatigue ?? 0) >= 0).toBe(true)
})
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 11 + 2] as const))(
'seed %d:功法巨兽:家族技册与功法表', (seed) => {
const w = mk(`向新-${seed}`)
for (let m = 0; m < 14; m++) w.advanceMonth()
expect(Array.isArray(w.state.family.techniques)).toBe(true)
expect(w.state.family.techniques.length).toBeGreaterThanOrEqual(2)
})
it.each(Array.from({ length: 50 }, (_, k) => [k * 3 + 11 + 3] as const))(
'seed %d:涤荡回声:无 __state 泄漏/无 schemaVersion 戳', (seed) => {
const w = mk(`向新-${seed}`)
for (let m = 0; m < 14; m++) w.advanceMonth()
expect((globalThis as any).__state === undefined).toBe(true)
expect((w.state as any).schemaVersion === undefined).toBe(true)
})
})