def test_army_init(self): horses, elephants, armoured_tanks, sling_guns = 100, 50, 10, 5 army = Army(horses=horses, elephants=elephants, armoured_tanks=armoured_tanks, sling_guns=sling_guns) assert army.get_battalion_strength(BattalionType.HORSES) == horses assert army.get_battalion_strength(BattalionType.ELEPHANTS) == elephants assert army.get_battalion_strength(BattalionType.ARMOUREDTANKS) == armoured_tanks assert army.get_battalion_strength(BattalionType.SLINGGUNS) == sling_guns
def test_change_battalion_strength(self): horses, elephants, armoured_tanks, sling_guns = 100, 50, 10, 5 army = Army(horses=horses, elephants=elephants, armoured_tanks=armoured_tanks, sling_guns=sling_guns) army.update_battalion_strength(BattalionType.HORSES, -50) army.update_battalion_strength(BattalionType.SLINGGUNS, 5) assert army.get_battalion_strength(BattalionType.HORSES) == 50 assert army.get_battalion_strength(BattalionType.SLINGGUNS) == 10
def get_winning_army(self, enemy_army: Army): battle_result: bool = True for enemy_battalion in enemy_army.get_battalions(): enemy_strength = enemy_army.get_battalion_strength(enemy_battalion) battle_result &= self.resolve_battalion(enemy_battalion, enemy_strength) required_battalions = self.__result_army.get_all_battalion_with_strength( ) return battle_result, required_battalions
def get_winning_army(self, enemy_army: Army): """Returns the minimum required army and a bool indicating the result of the battle with the returned army True : Returned army will win False : Returned army will lose Arguments: enemy_army {Army} -- [The army to battle against] Returns: Army -- [Minimum required army to defeat enemy_army] battle_result {bool} -- [boolean indicating the result of the battle] """ battle_result: bool = True for enemy_battalion in enemy_army.get_battalions(): enemy_strength = enemy_army.get_battalion_strength(enemy_battalion) battle_result &= self.resolve_battalion(enemy_battalion, enemy_strength) required_battalions = self.__result_army.get_all_battalion_with_strength( ) return battle_result, required_battalions
def test_change_battalion_strength_1(self): army = Army() army.update_battalion_strength(BattalionType.HORSES, 50) assert army.get_battalion_strength(BattalionType.HORSES) == 50
def test_invalid_battalion_name(self): horses, elephants, armoured_tanks, sling_guns = 100, 50, 10, 5 army = Army(horses=horses, elephants=elephants, armoured_tanks=armoured_tanks, sling_guns=sling_guns) with pytest.raises(KeyError): army.get_battalion_strength(6)