test: add assertions for war readiness, dispatch records, and neutral cities in NPC simulation
This commit is contained in:
@@ -401,6 +401,26 @@ describe('NPC 대형 시뮬레이션', () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const assertWarReadiness = (minCount: number, minTrain = 70, minAtmos = 70) => {
|
||||||
|
const recruited = world
|
||||||
|
.listGenerals()
|
||||||
|
.filter((general) => general.nationId > 0 && general.crew > 0 && general.crewTypeId > 0);
|
||||||
|
const ready = recruited.filter((general) => general.train >= minTrain && general.atmos >= minAtmos);
|
||||||
|
expect(ready.length).toBeGreaterThanOrEqual(minCount);
|
||||||
|
};
|
||||||
|
|
||||||
|
const assertDispatchRecorded = (year: number, month: number, minCount = 1) => {
|
||||||
|
const matches = turnTraces.filter(
|
||||||
|
(trace) => trace.year === year && trace.month === month && trace.actionKey === 'che_출병'
|
||||||
|
);
|
||||||
|
expect(matches.length).toBeGreaterThanOrEqual(minCount);
|
||||||
|
};
|
||||||
|
|
||||||
|
const assertNoNeutralCities = () => {
|
||||||
|
const neutralCities = world.listCities().filter((city) => city.nationId <= 0);
|
||||||
|
expect(neutralCities.length).toBe(0);
|
||||||
|
};
|
||||||
|
|
||||||
const maybeSnapshotGold = () => {
|
const maybeSnapshotGold = () => {
|
||||||
checkpointGoldByGeneral.clear();
|
checkpointGoldByGeneral.clear();
|
||||||
for (const general of world.listGenerals()) {
|
for (const general of world.listGenerals()) {
|
||||||
@@ -492,6 +512,9 @@ describe('NPC 대형 시뮬레이션', () => {
|
|||||||
['181-01', () => assertNationGeneralCount(10)],
|
['181-01', () => assertNationGeneralCount(10)],
|
||||||
['182-01', () => assertDomesticGrowthBy(182, 1)],
|
['182-01', () => assertDomesticGrowthBy(182, 1)],
|
||||||
['182-10', () => assertNationRecruitCount(5)],
|
['182-10', () => assertNationRecruitCount(5)],
|
||||||
|
['182-12', () => assertWarReadiness(10, 70, 70)],
|
||||||
|
['183-01', () => assertDispatchRecorded(183, 1, 1)],
|
||||||
|
['183-07', () => assertNoNeutralCities()],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const toKey = (year: number, month: number) => `${year}-${String(month).padStart(2, '0')}`;
|
const toKey = (year: number, month: number) => `${year}-${String(month).padStart(2, '0')}`;
|
||||||
@@ -615,7 +638,7 @@ describe('NPC 대형 시뮬레이션', () => {
|
|||||||
if (checker) {
|
if (checker) {
|
||||||
checker();
|
checker();
|
||||||
}
|
}
|
||||||
if (currentYear > 182 || (currentYear === 182 && currentMonth >= 10)) {
|
if (currentYear > 183 || (currentYear === 183 && currentMonth >= 7)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user