Skip to content

Commit 66cdba0

Browse files
committed
Changed test methods
1 parent faabdeb commit 66cdba0

File tree

1 file changed

+134
-73
lines changed

1 file changed

+134
-73
lines changed

tests/test_distance.py

Lines changed: 134 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -11,118 +11,179 @@
1111
class TestLevenshtein(unittest.TestCase):
1212

1313
def test_levenshtein(self):
14-
self.assertEqual(levenshtein('sitting', 'kitten'), 3)
15-
self.assertEqual(levenshtein('sunday', 'saturday'), 3)
16-
self.assertEqual(levenshtein('', ''), 0)
17-
self.assertEqual(levenshtein('sitting', ''), 7)
18-
self.assertEqual(levenshtein('aabcc', 'bccdd'), 4)
19-
self.assertEqual(levenshtein('idカード', 'Id番号カード'), 3)
20-
self.assertEqual(levenshtein('ひだるま', 'けんだま'), 3)
14+
cases = [
15+
('sitting', 'kitten', 3),
16+
('sunday', 'saturday', 3),
17+
('', '', 0),
18+
('sitting', '', 7),
19+
('aabcc', 'bccdd', 4),
20+
('idカード', 'Id番号カード', 3),
21+
('ひだるま', 'けんだま', 3)
22+
]
23+
for str1, str2, expected in cases:
24+
with self.subTest(str1=str1, str2=str2):
25+
self.assertEqual(levenshtein(str1, str2), expected)
2126

2227

2328
def test_invalid_args(self):
24-
self.assertRaises(TypeError, levenshtein, 'abc', 1)
25-
self.assertRaises(TypeError, levenshtein, 1, 'abc')
26-
self.assertRaises(TypeError, levenshtein, 5, 1)
27-
29+
cases = [
30+
('abc', 1, TypeError),
31+
(1, 'abc', TypeError),
32+
(5, 1, TypeError)
33+
]
34+
for str1, str2, exception in cases:
35+
with self.subTest(str1=str1, str2=str2):
36+
with self.assertRaises(exception):
37+
levenshtein(str1, str2)
38+
2839

2940
class TestJaro(unittest.TestCase):
3041

3142
def test_jaro(self):
32-
self.assertEqual(jaro('abc', 'bac'), 0.8888888888888888)
33-
self.assertEqual(jaro('dicksonx', 'dixon'), 0.7666666666666666)
34-
self.assertEqual(jaro('dixon', 'dicksonx'), 0.7666666666666666)
35-
self.assertEqual(jaro('Brian', 'Jesus'), 0.0)
36-
self.assertEqual(jaro('Thorkel', 'Thorgier'), 0.7797619047619048)
37-
self.assertEqual(jaro('Dinsdale', 'D'), 0.7083333333333334)
38-
self.assertEqual(jaro('Carol','elephant'), 0.44166666666666665)
39-
self.assertEqual(jaro('', ''), 1.0)
40-
self.assertEqual(jaro('Dinsdale', ''), 0.0)
41-
self.assertEqual(jaro('','elephant'), 0.0)
42-
self.assertEqual(jaro('idカード', 'Id番号'), 0.48333333333333334)
43-
self.assertEqual(jaro('ひだるま', 'けんだま'), 0.6666666666666666)
43+
cases = [
44+
('abc', 'bac', 0.8888888888888888),
45+
('dicksonx', 'dixon', 0.7666666666666666),
46+
('dixon', 'dicksonx', 0.7666666666666666),
47+
('Brian', 'Jesus', 0.0),
48+
('Thorkel', 'Thorgier', 0.7797619047619048),
49+
('Dinsdale', 'D', 0.7083333333333334),
50+
('Carol','elephant', 0.44166666666666665),
51+
('', '', 1.0),
52+
('Dinsdale', '', 0.0),
53+
('','elephant', 0.0),
54+
('idカード', 'Id番号', 0.48333333333333334),
55+
('ひだるま', 'けんだま', 0.6666666666666666)
56+
]
57+
for str1, str2, expected in cases:
58+
with self.subTest(str1=str1, str2=str2):
59+
self.assertEqual(jaro(str1, str2), expected)
4460

4561

4662
def test_invalid_args(self):
47-
self.assertRaises(TypeError, jaro, 'abc', 1)
48-
self.assertRaises(TypeError, jaro, 1, 'abc')
49-
self.assertRaises(TypeError, jaro, 5, 1)
63+
cases = [
64+
('abc', 1, TypeError),
65+
(1, 'abc', TypeError),
66+
(5, 1, TypeError)
67+
]
68+
for str1, str2, exception in cases:
69+
with self.subTest(str1=str1, str2=str2):
70+
with self.assertRaises(exception):
71+
jaro(str1, str2)
5072

5173

5274
class TestJaroWinkler(unittest.TestCase):
5375

5476
def test_jaro_winkler(self):
55-
self.assertEqual(jaro_winkler('abc', 'bac'), 0.8888888888888888)
56-
self.assertEqual(jaro_winkler('dicksonx', 'dixon'), 0.8133333333333332)
57-
self.assertEqual(jaro_winkler('dixon', 'dicksonx'), 0.8133333333333332)
58-
self.assertEqual(jaro_winkler('Brian', 'Jesus'), 0.0)
59-
self.assertEqual(jaro_winkler('Thorkel', 'Thorgier'), 0.8678571428571429)
60-
self.assertEqual(jaro_winkler('Dinsdale', 'D'), 0.7375)
61-
self.assertEqual(jaro_winkler('Carol','elephant'), 0.44166666666666665)
62-
self.assertEqual(jaro_winkler('', ''), 1.0)
63-
self.assertEqual(jaro_winkler('Dinsdale', ''), 0.0)
64-
self.assertEqual(jaro_winkler('','elephant'), 0.0)
65-
self.assertEqual(jaro('idカード', 'Id番号'), 0.48333333333333334)
66-
self.assertEqual(jaro('ひだるま', 'けんだま'), 0.6666666666666666)
77+
cases = [
78+
('abc', 'bac', 0.8888888888888888),
79+
('dicksonx', 'dixon', 0.8133333333333332),
80+
('dixon', 'dicksonx', 0.8133333333333332),
81+
('Brian', 'Jesus', 0.0),
82+
('Thorkel', 'Thorgier', 0.8678571428571429),
83+
('Dinsdale', 'D', 0.7375),
84+
('Carol','elephant', 0.44166666666666665),
85+
('', '', 1.0),
86+
('Dinsdale', '', 0.0),
87+
('','elephant', 0.0),
88+
('idカード', 'Id番号', 0.48333333333333334),
89+
('ひだるま', 'けんだま', 0.6666666666666666),
90+
91+
]
92+
for str1, str2, expected in cases:
93+
with self.subTest(str1=str1, str2=str2):
94+
self.assertEqual(jaro_winkler(str1, str2), expected)
95+
6796

68-
6997
def test_invalid_args(self):
70-
self.assertRaises(TypeError, jaro, 'abc', 1)
71-
self.assertRaises(TypeError, jaro, 1, 'abc')
72-
self.assertRaises(TypeError, jaro, 5, 1)
73-
98+
cases = [
99+
('abc', 1, TypeError),
100+
(1, 'abc', TypeError),
101+
(5, 1, TypeError)
102+
]
103+
for str1, str2, exception in cases:
104+
with self.subTest(str1=str1, str2=str2):
105+
with self.assertRaises(exception):
106+
jaro_winkler(str1, str2)
107+
74108

75109
class TestHamming(unittest.TestCase):
76110

77111
def test_hamming(self):
78-
self.assertEqual(hamming('karolin', 'kathrin'), 3)
79-
self.assertEqual(hamming('karolin', 'kerstin'), 3)
80-
self.assertEqual(hamming('kathrin', 'kerstin'), 4)
81-
self.assertEqual(hamming('1011101', '1001001'), 2)
82-
self.assertEqual(hamming('2173896', '2233796'), 3)
83-
self.assertEqual(hamming('Brian', 'Jesus'), 5)
84-
self.assertEqual(hamming('Brian', 'Brian'), 0)
112+
cases = [
113+
('karolin', 'kathrin', 3),
114+
('karolin', 'kerstin', 3),
115+
('kathrin', 'kerstin', 4),
116+
('1011101', '1001001', 2),
117+
('2173896', '2233796', 3),
118+
('Brian', 'Jesus', 5),
119+
('Brian', 'Brian', 0),
120+
]
121+
for str1, str2, expected in cases:
122+
with self.subTest(str1=str1, str2=str2):
123+
self.assertEqual(hamming(str1, str2), expected)
85124

86125

87126
def test_invalid_args(self):
88-
self.assertRaises(TypeError, hamming, 'abc', 1)
89-
self.assertRaises(ValueError, hamming, 'abc', 'abcdf')
127+
cases = [
128+
('abc', 1, TypeError),
129+
('abc', 'abcdf', ValueError)
130+
]
131+
for str1, str2, exception in cases:
132+
with self.subTest(str1=str1, str2=str2):
133+
with self.assertRaises(exception):
134+
hamming(str1, str2)
90135

91136

92137
class TestDamerauLevenshtein(unittest.TestCase):
93138

94139
def test_damerau_levenshtein(self):
95-
self.assertEqual(damerau_levenshtein('abcdef', 'abcfad'), 2)
96-
self.assertEqual(damerau_levenshtein('ca', 'abc'), 2)
97-
self.assertEqual(damerau_levenshtein('a cat', 'a abct'), 2)
98-
self.assertEqual(damerau_levenshtein('a cat', 'an act'), 2)
99-
self.assertEqual(damerau_levenshtein('ifhs', 'fish'), 2)
100-
self.assertEqual(damerau_levenshtein('BADC', 'ABCD'), 2)
101-
self.assertEqual(damerau_levenshtein('ZX', 'XYZ'), 2)
102-
self.assertEqual(damerau_levenshtein('BADC', ''), 4)
103-
self.assertEqual(damerau_levenshtein('', 'ABCD'), 4)
104-
self.assertEqual(damerau_levenshtein('ABCD', 'ABCD'), 0)
105-
self.assertEqual(damerau_levenshtein('', ''), 0)
140+
cases = [
141+
('abcdef', 'abcfad', 2),
142+
('ca', 'abc', 2),
143+
('a cat', 'a abct', 2),
144+
('a cat', 'an act', 2),
145+
('ifhs', 'fish', 2),
146+
('BADC', 'ABCD', 2),
147+
('ZX', 'XYZ', 2),
148+
('BADC', '', 4),
149+
('', 'ABCD', 4),
150+
('ABCD', 'ABCD', 0),
151+
('', '', 0),
152+
]
153+
for str1, str2, expected in cases:
154+
with self.subTest(str1=str1, str2=str2):
155+
self.assertEqual(damerau_levenshtein(str1, str2), expected)
106156

107157

108158
def test_invalid_args(self):
109-
self.assertRaises(TypeError, hamming, 'abc', 1)
159+
self.assertRaises(TypeError, damerau_levenshtein, 'abc', 1)
110160

111161

112162
class TestNormalizedLevenshtein(unittest.TestCase):
113163

114164
def test_normalized_levenshtein(self):
115-
self.assertEqual(normalized_levenshtein('アイス', 'ミント'), 1.0)
116-
self.assertEqual(normalized_levenshtein('チョコレート', 'チョコレートアイス'), 0.3333333333333333)
117-
self.assertEqual(normalized_levenshtein('dixon', 'dickson'), 0.42857142857142855)
118-
self.assertEqual(normalized_levenshtein('sunday', 'saturday'), 0.375)
119-
165+
cases = [
166+
('アイス', 'ミント', 1.0),
167+
('チョコレート', 'チョコレートアイス', 0.3333333333333333),
168+
('dixon', 'dickson', 0.42857142857142855),
169+
('sunday', 'saturday', 0.375),
170+
]
171+
for str1, str2, expected in cases:
172+
with self.subTest(str1=str1, str2=str2):
173+
self.assertEqual(normalized_levenshtein(str1, str2), expected)
174+
120175

121176
def test_invalid_args(self):
122-
self.assertRaises(TypeError, levenshtein, 'abc', 1)
123-
self.assertRaises(TypeError, levenshtein, 1, 'abc')
124-
self.assertRaises(TypeError, levenshtein, 5, 1)
177+
cases = [
178+
('abc', 1, TypeError),
179+
(1, 'abc', TypeError),
180+
(5, 1, TypeError)
181+
]
182+
for str1, str2, exception in cases:
183+
with self.subTest(str1=str1, str2=str2):
184+
with self.assertRaises(exception):
185+
normalized_levenshtein(str1, str2)
186+
125187

126-
127188
if __name__ == '__main__':
128189
unittest.main()

0 commit comments

Comments
 (0)