-
Notifications
You must be signed in to change notification settings - Fork 0
/
anagram_test.py
61 lines (51 loc) · 2.81 KB
/
anagram_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import unittest
import anagram
class TestCleanWords(unittest.TestCase):
# Following tests check string cleaning
def test_whitespace(self):
self.assertEqual(anagram.cleanWords(" all whitespace\r\nclea red\t"),
"allwhitespacecleared")
self.assertNotEqual(anagram.cleanWords(" allwhite\r\nspa\tce "),
" allwhite\r\nspa\tce ")
def test_numeric_chars(self):
self.assertEqual(anagram.cleanWords("1234all567numbers98018.59cleared"),
"allnumberscleared")
self.assertNotEqual(anagram.cleanWords("124all567.289numbers"),
"124all567.289numbers")
def test_capitals(self):
self.assertEqual(anagram.cleanWords("HasManyCapitalLETTERS"),
"hasmanycapitalletters")
self.assertNotEqual(anagram.cleanWords("SuPerCapItalIzed"),
"SuPerCapItalIzed")
# Following tests check cleaning of array of strings
def test_whitespace_list(self):
self.assertEqual(anagram.cleanWords([" all whitespace\r\ncleared\t ",
"item\t\t\n 2"]),
["allwhitespacecleared", "item"])
self.assertNotEqual(anagram.cleanWords([" all space\r\ncleared\t "]),
[" all space\r\ncleared\t "])
def test_numeric_chars_list(self):
self.assertEqual(anagram.cleanWords(["1.234numbers87cleare89d09","1ab"]),
["numberscleared","ab"])
self.assertNotEqual(anagram.cleanWords(["1.234number889s09","1ab4"]),
["1.234numbers889s09","1ab4"])
class TestCheckAnagram(unittest.TestCase):
# Following tests check anagrams
def test_anagrams(self):
self.assertTrue(anagram.checkAnagram(["melon", "lemon"]))
self.assertTrue(anagram.checkAnagram(["abcdef", "CBDAEF", "FEdcBA",
"CABDEF", "cadbef"]))
self.assertTrue(anagram.checkAnagram(["Tom Marvolo Riddle",
"I am Lord Voldemort"]))
self.assertTrue(anagram.checkAnagram(["Mike likes I", "I like Mikes"]))
# Now to check ones that are not valid anagrams
print("Testing Failure Cases.")
self.assertFalse(anagram.checkAnagram(["only one entry"]))
self.assertFalse(anagram.checkAnagram(["melon", "lemonn"]))
self.assertFalse(anagram.checkAnagram(["says", "asyy"]))
self.assertFalse(anagram.checkAnagram(["says", "syaa"]))
self.assertFalse(anagram.checkAnagram(["I like Mike", "Mike likes"]))
# Be sure to test that same word does not get counted as an anagram!
self.assertFalse(anagram.checkAnagram(["Anna", "anna"]))
if __name__ == '__main__':
unittest.main()