/**
  * @test
  * @depends I_can_get_compatibility_to_all_combat_actions
  */
 public function Combinations_are_same_from_both_sides()
 {
     $codes = CombatActionCode::getPossibleValues();
     $codes = array_merge($codes, MeleeCombatActionCode::getMeleeOnlyCombatActionCodes());
     $codes = array_merge($codes, RangedCombatActionCode::getRangedOnlyCombatActionCodes());
     $combatActionsCompatibilityTable = new CombatActionsCompatibilityTable();
     foreach ($codes as $someCode) {
         foreach ($codes as $anotherCode) {
             self::assertSame($combatActionsCompatibilityTable->getValue($someCode, $anotherCode), $combatActionsCompatibilityTable->getValue($anotherCode, $someCode), "'{$someCode}' x '{$anotherCode}' do not match from both sides");
         }
     }
 }
 /**
  * @test
  */
 public function I_can_get_ranged_only_codes()
 {
     $expectedMeleeOnly = array_diff(array_values((new \ReflectionClass(RangedCombatActionCode::class))->getConstants()), CombatActionCode::getPossibleValues());
     self::assertSame($expectedMeleeOnly, RangedCombatActionCode::getRangedOnlyCombatActionCodes());
 }