class checkOver(unittest.TestCase):
    """ Test cases of checkOver """
    
    def  setUp(self):
        """ Build the Confusion for the test """
        self.user = BuildPokemonBattleWrapper()
        self.confusion = Confusion()
        self.turns = 2
        
    def overCured(self):
        """ Test that the Confusion is cured when it is over """
        messages = []
        self.confusion.turns = 0
        self.user.secondaryEffects = [self.confusion]
        self.confusion.checkOver(self.user, messages)
        
        assert self.user.secondaryEffects == [], "Should be cured"
        
    def overMessage(self):
        """ Test that the Message is correct when it is over """
        messages = []
        self.confusion.turns = 0
        self.user.secondaryEffects = [self.confusion]
        message = self.user.getHeader() + Confusion.over
        self.confusion.checkOver(self.user, messages)
        
        assert len(messages) == 1, "Should receive one message"
        assert messages[0] == message, "Should receive a message that the confusion is over"
    
    def notOverStillConfused(self):
        """ Test that thePkmn is still confused when it isn't over """
        messages = []
        self.confusion.turns = self.turns
        self.user.secondaryEffects = [self.confusion]
        self.confusion.checkOver(self.user, messages)
        
        assert self.user.secondaryEffects == [self.confusion], "Should still be confused"

    def notOverTurnsDecremented(self):
        """ Test that the Turns is decremented when it isn't over """
        messages = []
        self.confusion.turns = self.turns
        self.confusion.checkOver(self.user, messages)
        
        assert self.confusion.turns == self.turns-1, "Should have turns decremented"

    def notOverMessage(self):
        """ Test that the Message is correct when it isn't over """
        messages = []
        self.confusion.turns = self.turns
        message = self.user.getHeader() + Confusion.start
        self.confusion.checkOver(self.user, messages)
        
        assert len(messages) == 1, "Should receive one message"
        assert messages[0] == message, "Should receive a message that the Pkmn is still confusion"