class TokenDeepCopyTests(TokenBaseTests):
    def setUp(self):
        super().setUp()

        self.history_copy = list(self.history)
        self.words_copy = list(self.words)
        self.token = Token(self.score, self.history_copy, self.words_copy )

    def modify_token_content(self, token):
        token.history.append(40)
        token.words.append(3)

    def did_not_changed(self):
        self.assertEqual(self.history, self.history_copy)
        self.assertEqual(self.words, self.words_copy)

    def test_update_score_create_deep_copy(self):
        token = self.token.update_score(10)
        self.modify_token_content(token)
        self.did_not_changed()

    def test_update_history_create_deep_copy(self):
        token = self.token.update_history(10)
        self.modify_token_content(token)
        self.did_not_changed()

    def test_update_words_create_deep_copy(self):
        token = self.token.update_words(10)
        self.modify_token_content(token)
        self.did_not_changed()
 def test_update_history(self):
     token = Token(self.score, self.history, self.words)
     res = token.update_history(42)
     self.assertEqual(Token(self.score, self.history + [42], self.words), res)