import { describe, expect, it } from 'vitest' import { World } from '../src/renderer/game/engine/runtime/World' import { techniqueById } from '../src/renderer/game/data/techniques' import { pack } from '../src/renderer/game/data/registry' function mk(seed: string): World { return World.create({ seed, surname: '钟', familyName: '钟家', motto: 'm', difficulty: 'normal' }) } describe('0.1.34 矩阵:MOD 功法口', () => { it.each(Array.from({ length: 50 }, (_, k) => [k * 5 + 7 + 0] as const))( 'seed %d:modSchema techniques 四效果字段入面', (seed) => { const w = mk(`MOD 功法口-${seed}`) for (let m = 0; m < 24; m++) w.advanceMonth() expect(typeof techniqueById('t-qinglian')?.desc).toBe('string') expect(pack().techniques.length).toBeGreaterThanOrEqual(22) }) it.each(Array.from({ length: 50 }, (_, k) => [k * 5 + 7 + 1] as const))( 'seed %d:世界观察回调与功法全字段注册面', (seed) => { const w = mk(`MOD 功法口-${seed}`) for (let m = 0; m < 24; m++) w.advanceMonth() let calls = 0 const unsub = w.onWorldSimTick(() => { calls++ }) w.advanceMonth() unsub() expect(calls).toBe(1) }) })