def setUp(self):
        """ Build the Pkmn and Effects for the test """
        self.user = BuildPokemonBattleWrapper()
        self.target = BuildPokemonBattleWrapper()
        self.divergeEffects = [BuildEffectDelegate(), BuildEffectDelegate()]
        self.normalEffects = [BuildEffectDelegate()]
        self.message = BuildEffectDelegate().message

        self.delegate = DivergeOnFirstTurnDelegate(self.divergeEffects,
                                                   self.normalEffects)
    def setUp(self):
        """ Build the Pkmn and Effects for the test """
        self.user = BuildPokemonBattleWrapper()
        self.target = BuildPokemonBattleWrapper()
        self.divergeEffects = [BuildEffectDelegate(), BuildEffectDelegate()]
        self.normalEffects = [BuildEffectDelegate()]
        self.message = BuildEffectDelegate().message

        self.delegate = DivergeOnFirstTurnDelegate(self.divergeEffects, self.normalEffects)
class diverge(unittest.TestCase):
    """ Test cases of diverge """
    def setUp(self):
        """ Build the Pkmn and Effects for the test """
        self.user = BuildPokemonBattleWrapper()
        self.target = BuildPokemonBattleWrapper()
        self.divergeEffects = [BuildEffectDelegate(), BuildEffectDelegate()]
        self.normalEffects = [BuildEffectDelegate()]
        self.message = BuildEffectDelegate().message

        self.delegate = DivergeOnFirstTurnDelegate(self.divergeEffects,
                                                   self.normalEffects)

    def firstTurn(self):
        """ Test that the diverge effects are called when the user has not used a move yet """
        self.user.lastAction = None
        diverge = self.delegate.diverge(self.user, self.target)
        assert diverge, "Should diverge"

    def notFirstTurn(self):
        """ Test that the regular effects are called when the user has used a move """
        self.user.lastAction = 1
        diverge = self.delegate.diverge(self.user, self.target)
        assert not diverge, "Should not diverge when the user has already done a move"
class diverge(unittest.TestCase):
    """ Test cases of diverge """

    def setUp(self):
        """ Build the Pkmn and Effects for the test """
        self.user = BuildPokemonBattleWrapper()
        self.target = BuildPokemonBattleWrapper()
        self.divergeEffects = [BuildEffectDelegate(), BuildEffectDelegate()]
        self.normalEffects = [BuildEffectDelegate()]
        self.message = BuildEffectDelegate().message

        self.delegate = DivergeOnFirstTurnDelegate(self.divergeEffects, self.normalEffects)

    def firstTurn(self):
        """ Test that the diverge effects are called when the user has not used a move yet """
        self.user.lastAction = None
        diverge = self.delegate.diverge(self.user, self.target)
        assert diverge, "Should diverge"

    def notFirstTurn(self):
        """ Test that the regular effects are called when the user has used a move """
        self.user.lastAction = 1
        diverge = self.delegate.diverge(self.user, self.target)
        assert not diverge, "Should not diverge when the user has already done a move"