Prepare reserve drill assignment state
This commit is contained in:
@@ -32,6 +32,7 @@ try {
|
||||
getCampaignState,
|
||||
hasCampaignSave,
|
||||
loadCampaignState,
|
||||
normalizeCampaignReserveTrainingAssignments,
|
||||
normalizeCampaignSortieItemAssignments,
|
||||
resetCampaignState,
|
||||
setCampaignState,
|
||||
@@ -104,6 +105,35 @@ try {
|
||||
cappedLaunchFormation['unit-96'] === undefined,
|
||||
`Expected launch sortie formation assignments without a roster filter to stay capped: ${JSON.stringify(cappedLaunchFormation)}`
|
||||
);
|
||||
const normalizedReserveDrills = normalizeCampaignReserveTrainingAssignments(
|
||||
{
|
||||
'liu-bei': 'bond-practice',
|
||||
' liu-bei ': 'class-practice',
|
||||
'guan-yu': 'class-practice',
|
||||
'ghost-unit': 'balanced',
|
||||
'zhang-fei': 'broken-focus',
|
||||
['x'.repeat(97)]: 'balanced',
|
||||
'': 'balanced'
|
||||
},
|
||||
new Set(['liu-bei', 'guan-yu'])
|
||||
);
|
||||
assert(
|
||||
normalizedReserveDrills['liu-bei'] === 'bond-practice' &&
|
||||
normalizedReserveDrills['guan-yu'] === 'class-practice' &&
|
||||
normalizedReserveDrills['ghost-unit'] === undefined &&
|
||||
normalizedReserveDrills['zhang-fei'] === undefined &&
|
||||
normalizedReserveDrills['x'.repeat(97)] === undefined,
|
||||
`Expected reserve drill assignments to trim, filter, and preserve first valid focus ids: ${JSON.stringify(normalizedReserveDrills)}`
|
||||
);
|
||||
const cappedReserveDrills = normalizeCampaignReserveTrainingAssignments(
|
||||
Object.fromEntries(Array.from({ length: 120 }, (_, index) => [`unit-${index}`, 'balanced']))
|
||||
);
|
||||
assert(
|
||||
Object.keys(cappedReserveDrills).length === 96 &&
|
||||
cappedReserveDrills['unit-95'] === 'balanced' &&
|
||||
cappedReserveDrills['unit-96'] === undefined,
|
||||
`Expected reserve drill assignments without a roster filter to stay capped: ${JSON.stringify(cappedReserveDrills)}`
|
||||
);
|
||||
|
||||
resetCampaignState();
|
||||
const firstScenario = battleScenarios['first-battle-zhuo-commandery'];
|
||||
@@ -325,7 +355,8 @@ try {
|
||||
assert(
|
||||
Array.isArray(legacy.selectedSortieUnitIds) &&
|
||||
typeof legacy.sortieFormationAssignments === 'object' &&
|
||||
typeof legacy.sortieItemAssignments === 'object',
|
||||
typeof legacy.sortieItemAssignments === 'object' &&
|
||||
typeof legacy.reserveTrainingAssignments === 'object',
|
||||
`Expected modern sortie fields to be restored: ${JSON.stringify(legacy)}`
|
||||
);
|
||||
|
||||
@@ -360,6 +391,13 @@ try {
|
||||
},
|
||||
selectedSortieUnitIds: { corrupted: true },
|
||||
sortieFormationAssignments: 'front',
|
||||
reserveTrainingFocus: 'ghost-focus',
|
||||
reserveTrainingAssignments: {
|
||||
'liu-bei': 'bond-practice',
|
||||
'guan-yu': 'unknown-focus',
|
||||
['x'.repeat(97)]: 'balanced',
|
||||
'': 'balanced'
|
||||
},
|
||||
sortieItemAssignments: {
|
||||
'liu-bei': { ' bean ': '5', wine: -1, salve: '1', stone: '9', ['x'.repeat(97)]: '1' },
|
||||
'guan-yu': '2',
|
||||
@@ -407,6 +445,13 @@ try {
|
||||
Object.keys(malformed.sortieFormationAssignments).length === 0,
|
||||
`Expected malformed inventory and sortie assignments to normalize: ${JSON.stringify(malformed)}`
|
||||
);
|
||||
assert(
|
||||
malformed.reserveTrainingFocus === 'balanced' &&
|
||||
malformed.reserveTrainingAssignments['liu-bei'] === 'bond-practice' &&
|
||||
malformed.reserveTrainingAssignments['guan-yu'] === undefined &&
|
||||
malformed.reserveTrainingAssignments['x'.repeat(97)] === undefined,
|
||||
`Expected malformed reserve drill focus fields to normalize: ${JSON.stringify(malformed)}`
|
||||
);
|
||||
|
||||
storage.clear();
|
||||
storage.set(
|
||||
@@ -445,6 +490,11 @@ try {
|
||||
'guan-yu': 'support',
|
||||
broken: 'center'
|
||||
},
|
||||
reserveTrainingAssignments: {
|
||||
'liu-bei': 'bond-practice',
|
||||
'ghost-unit': 'balanced',
|
||||
'guan-yu': 'class-practice'
|
||||
},
|
||||
sortieItemAssignments: {
|
||||
'liu-bei': { bean: '2' },
|
||||
'ghost-unit': { bean: '1' },
|
||||
@@ -458,6 +508,9 @@ try {
|
||||
staleSortie.selectedSortieUnitIds[0] === 'liu-bei' &&
|
||||
staleSortie.sortieFormationAssignments['liu-bei'] === 'front' &&
|
||||
staleSortie.sortieFormationAssignments['ghost-unit'] === undefined &&
|
||||
staleSortie.reserveTrainingAssignments['liu-bei'] === 'bond-practice' &&
|
||||
staleSortie.reserveTrainingAssignments['ghost-unit'] === undefined &&
|
||||
staleSortie.reserveTrainingAssignments['guan-yu'] === undefined &&
|
||||
staleSortie.sortieItemAssignments['liu-bei']?.bean === 2 &&
|
||||
staleSortie.sortieItemAssignments['ghost-unit'] === undefined &&
|
||||
staleSortie.sortieItemAssignments['guan-yu'] === undefined,
|
||||
|
||||
Reference in New Issue
Block a user