Files
core2026/app/game-engine/test/defaultCommandProfileAiCoverage.test.ts
T
Hide_D bf2f18aec9 feat: 장수 계략 명령 전체를 Ref 호환 이관
화계에 묶여 있던 공통 확률·난수·비용·성장 처리를 계략 기반 명령으로 분리한다.

선동·탈취·파괴·화계를 기본 프로필과 계략 분류에 등록하고 Ref 실제 실행, 능력치 상승, 모바일 Chromium 검증을 추가한다.
2026-08-15 19:11:14 +00:00

55 lines
1.9 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { loadTurnCommandProfile } from '../src/turn/turnCommandProfile.js';
const GENERAL_AI_ACTIONS = [
'che_군량매매',
'che_귀환',
'che_랜덤임관',
'che_모병',
'che_물자조달',
'che_선양',
'che_소집해제',
'che_이동',
'che_정착장려',
'che_해산',
'che_헌납',
] as const;
const NATION_AI_ACTIONS = ['che_몰수', 'che_발령', 'che_선전포고', 'che_천도', 'che_포상'] as const;
const GENERAL_REF_EDITOR_ACTIONS = [
'che_임관',
'che_랜덤임관',
'che_징병',
'che_출병',
'che_농지개간',
'che_선동',
'che_탈취',
'che_파괴',
'che_화계',
'che_증여',
'che_장비매매',
] as const;
const GENERAL_REF_STRATEGY_ACTIONS = ['che_선동', 'che_탈취', 'che_파괴', 'che_화계'] as const;
const GENERAL_REF_STRATEGY_ACTION_SET = new Set<string>(GENERAL_REF_STRATEGY_ACTIONS);
const NATION_REF_EDITOR_ACTIONS = ['che_포상', 'che_발령', 'che_증축', 'che_필사즉생'] as const;
describe('default turn command profile AI coverage', () => {
it('loads every action selected directly by the general and nation AI', async () => {
const profile = await loadTurnCommandProfile();
expect(profile.general).toEqual(expect.arrayContaining([...GENERAL_AI_ACTIONS]));
expect(profile.nation).toEqual(expect.arrayContaining([...NATION_AI_ACTIONS]));
});
it('keeps every command covered by the Ref general and chief editors', async () => {
const profile = await loadTurnCommandProfile();
expect(profile.general).toEqual(expect.arrayContaining([...GENERAL_REF_EDITOR_ACTIONS]));
expect(profile.general.filter((action) => GENERAL_REF_STRATEGY_ACTION_SET.has(action))).toEqual(
GENERAL_REF_STRATEGY_ACTIONS
);
expect(profile.nation).toEqual(expect.arrayContaining([...NATION_REF_EDITOR_ACTIONS]));
});
});