feat: add sortie operation orders
This commit is contained in:
@@ -35,6 +35,15 @@ try {
|
||||
assert(normalizeBattleSaveSlot(Number.NaN, 3) === 1, 'Expected NaN slot to normalize to slot 1.');
|
||||
assert(normalizeBattleSaveSlot(99, 3) === 3, 'Expected overflowing slot to clamp to slot count.');
|
||||
assert(isValidBattleSaveState(validState, options), 'Expected valid battle save to pass validation.');
|
||||
assert(
|
||||
['elite', 'mobile', 'siege'].every((sortieOrderId) => isValidBattleSaveState({ ...validState, sortieOrderId }, options)),
|
||||
'Expected every sortie order id to pass battle-save validation.'
|
||||
);
|
||||
const { sortieOrderId: _legacySortieOrderId, ...legacyStateWithoutSortieOrder } = validState;
|
||||
assert(
|
||||
isValidBattleSaveState(legacyStateWithoutSortieOrder, options),
|
||||
'Expected legacy battle saves without a sortie order to remain valid.'
|
||||
);
|
||||
const validSortieStatsState = {
|
||||
...validState,
|
||||
battleStats: {
|
||||
@@ -123,6 +132,10 @@ try {
|
||||
'Expected every tactical command field to round-trip.'
|
||||
);
|
||||
assert(parseBattleSaveState(JSON.stringify(validState), options)?.battleId === options.expectedBattleId, 'Expected valid JSON save to parse.');
|
||||
assert(
|
||||
parseBattleSaveState(JSON.stringify(validState), options)?.sortieOrderId === 'elite',
|
||||
'Expected the selected sortie order to round-trip through battle-save parsing.'
|
||||
);
|
||||
assert(parseBattleSaveState('{', options) === undefined, 'Expected malformed JSON to be ignored.');
|
||||
assert(parseBattleSaveState('', options) === undefined, 'Expected empty save payload to be ignored.');
|
||||
|
||||
@@ -134,6 +147,7 @@ try {
|
||||
['invalid activeFaction', { activeFaction: 'neutral' }],
|
||||
['invalid rosterTab', { rosterTab: 'neutral' }],
|
||||
['invalid campaign step', { campaignStep: 'lost-progress' }],
|
||||
['invalid sortie order', { sortieOrderId: 'reserve' }],
|
||||
['invalid actedUnitIds', { actedUnitIds: 'liu-bei' }],
|
||||
['unknown acted unit id', { actedUnitIds: ['ghost-unit'] }],
|
||||
['duplicate acted unit id', { actedUnitIds: ['liu-bei', 'liu-bei'] }],
|
||||
@@ -281,6 +295,7 @@ function createValidBattleSaveState() {
|
||||
version: 1,
|
||||
battleId: 'first-battle-zhuo-commandery',
|
||||
campaignStep: 'first-battle',
|
||||
sortieOrderId: 'elite',
|
||||
savedAt: '2026-07-05T00:00:00.000Z',
|
||||
turnNumber: 2,
|
||||
activeFaction: 'ally',
|
||||
|
||||
Reference in New Issue
Block a user