def test_makeMoveShouldPrioritiseDamagingTheHighestHealthPlayerIfItCantKillAPlayer(
            self):
        MaxHPWarlock = Warlock()
        MaxHPWarlock.health = 130
        MinHPWarlock = Warlock()
        MinHPWarlock.health = 70
        Warlock1 = Warlock()
        Warlock1.health = 80
        Warlock2 = Warlock()
        Warlock2.health = 80

        myEnemy = Rat()

        playerList = [Warlock1, MaxHPWarlock, MinHPWarlock, Warlock2]
        damage, PlayerToHit = makeMove(myEnemy, playerList)
        self.assertEqual(PlayerToHit, MaxHPWarlock)
    def test_getPlayersToAttackShouldReturnThePlayersWithTheLowestAndHighestHealth(
            self):
        MaxHPWarlock = Warlock()
        MaxHPWarlock.health = 130
        MinHPWarlock = Warlock()
        MinHPWarlock.health = 1
        Warlock1 = Warlock()
        Warlock1.health = 10
        Warlock2 = Warlock()
        Warlock2.health = 10

        playerList = [Warlock1, MaxHPWarlock, MinHPWarlock, Warlock2]
        playerWithLeastHealth, playerWithMaxHealth, = getPlayersToAttack(
            playerList)
        self.assertEqual(MinHPWarlock, playerWithLeastHealth)
        self.assertEqual(MaxHPWarlock, playerWithMaxHealth)
    def test_getPlayersToAttackShouldReturnTheFirstPlayerInListIfAllHealthsAreTheSame(
            self):
        firstWarlock = Warlock()
        secondWarlock = Warlock()
        thirdWarlock = Warlock()
        fourthWarlock = Warlock()
        firstWarlock.health = 10
        secondWarlock.health = 10
        thirdWarlock.health = 10
        fourthWarlock.health = 10

        playerList = [firstWarlock, secondWarlock, thirdWarlock, fourthWarlock]
        playerWithLeastHealth, playerWithMaxHealth = getPlayersToAttack(
            playerList)
        self.assertEqual(firstWarlock, playerWithLeastHealth)
        self.assertEqual(firstWarlock, playerWithMaxHealth)
    def test_makeMoveShouldPrioritiseKillingAPlayerOverDamagingOtherPlayers(
            self):
        MaxHPWarlock = Warlock()
        MaxHPWarlock.health = 130
        MinHPWarlock = Warlock()
        MinHPWarlock.health = 1
        Warlock1 = Warlock()
        Warlock1.health = 10
        Warlock2 = Warlock()
        Warlock2.health = 10

        myEnemy = Rat()

        playerList = [Warlock1, MaxHPWarlock, MinHPWarlock, Warlock2]
        damage, PlayerToHit = makeMove(myEnemy, playerList)
        self.assertEqual(PlayerToHit, MinHPWarlock)
        self.assertTrue(damage.calcDamage() >= 1)