-
Daniele Nicolodi authoredDaniele Nicolodi authored
test_levenshtein.py 1.04 KiB
import unittest
from itertools import combinations
from levenshtein import distance
class TestDistance(unittest.TestCase):
corpus = [
# equal strings
('', '', 0),
('a', 'a', 0),
('aaa', 'aaa', 0),
# character insertion
('a', '', 1),
('ab', '', 2),
# character replacement
('a', 'b', 1),
('ab', 'ac', 1),
('aba', 'acb', 2),
# character deletion
('abc', 'ac', 1),
('abcd', 'ad', 2),
('abcde', 'ace', 2),
]
strings = [x[0] for x in corpus] + [x[1] for x in corpus]
def test_distance(self):
for a, b, d in self.corpus:
self.assertEqual(distance(a, b), d)
self.assertEqual(distance(b, a), d)
def test_symmetric(self):
for a, b in combinations(self.strings, 2):
self.assertEqual(distance(a, b), distance(b, a))
def test_triangular(self):
for a, b, c in combinations(self.strings, 3):
self.assertLessEqual(distance(a, c), distance(a, b) + distance(b, c))