compare: preserve ordered conflict fixtures
This commit is contained in:
@@ -335,7 +335,27 @@ function comparisonApplyTurnFixtureSetup(mixed $setup): void
|
|||||||
'trade' => 'trade',
|
'trade' => 'trade',
|
||||||
'officerSet' => 'officer_set',
|
'officerSet' => 'officer_set',
|
||||||
]);
|
]);
|
||||||
if (array_key_exists('conflict', $row)) {
|
if (array_key_exists('conflictEntries', $row)) {
|
||||||
|
if (!is_array($row['conflictEntries'])) {
|
||||||
|
throw new \InvalidArgumentException('setup.cities.conflictEntries must be an array');
|
||||||
|
}
|
||||||
|
$orderedConflict = [];
|
||||||
|
foreach ($row['conflictEntries'] as $entry) {
|
||||||
|
if (
|
||||||
|
!is_array($entry)
|
||||||
|
|| count($entry) !== 2
|
||||||
|
|| !is_int($entry[0] ?? null)
|
||||||
|
|| $entry[0] < 1
|
||||||
|
|| !is_numeric($entry[1] ?? null)
|
||||||
|
) {
|
||||||
|
throw new \InvalidArgumentException(
|
||||||
|
'setup.cities.conflictEntries requires [positive nation id, numeric value] pairs'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$orderedConflict[$entry[0]] = $entry[1];
|
||||||
|
}
|
||||||
|
$patch['conflict'] = Json::encode($orderedConflict);
|
||||||
|
} elseif (array_key_exists('conflict', $row)) {
|
||||||
if (!is_array($row['conflict'])) {
|
if (!is_array($row['conflict'])) {
|
||||||
throw new \InvalidArgumentException('setup.cities.conflict must be an object');
|
throw new \InvalidArgumentException('setup.cities.conflict must be an object');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user