From 35e901d680357fc816cce8259f6d199306bf12cf Mon Sep 17 00:00:00 2001 From: Mark Wright Date: Thu, 7 Dec 2017 11:13:44 -0800 Subject: [PATCH] I fixed a bug that was mutating the draw list during validation. I added a test to check for a mutated draw during validation. --- 02/game.py | 5 +++-- 02/test_game.py | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/02/game.py b/02/game.py index 5a5ed7d04..03f272bfb 100644 --- a/02/game.py +++ b/02/game.py @@ -28,9 +28,10 @@ def input_word(draw): def _validation(word, draw): + unused_letters = list(draw) # copied because we are mutating the list for char in word.upper(): - if char in draw: - draw.remove(char) + if char in unused_letters: + unused_letters.remove(char) else: raise ValueError("{} is not a valid word!".format(word)) if not word.lower() in DICTIONARY: diff --git a/02/test_game.py b/02/test_game.py index 93888fa1e..b6fb49a61 100644 --- a/02/test_game.py +++ b/02/test_game.py @@ -40,13 +40,15 @@ def test_get_possible_dict_words(self): self.assertEqual(len(words), 137) def test_validation(self): - draw = list('garytev'.upper()) + letters = list('garytev'.upper()) + draw = list(letters) word = 'GARYTEV' self.assertRaises(ValueError, _validation, word, draw) word = 'F' self.assertRaises(ValueError, _validation, word, draw) word = 'GARETTA' self.assertRaises(ValueError, _validation, word, draw) + self.assertEqual(letters, draw) if __name__ == "__main__": unittest.main()