Beispiel #1
0
 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
Beispiel #2
0
 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
Beispiel #3
0
    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
Beispiel #4
0
 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
Beispiel #5
0
 def test_change_battalion_strength_1(self):
     army = Army()
     army.update_battalion_strength(BattalionType.HORSES, 50)
     assert army.get_battalion_strength(BattalionType.HORSES) == 50
Beispiel #6
0
 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)