diff --git a/Levenshtein_Edit_Distance.py b/Levenshtein_Edit_Distance.py index b076a99..014c64b 100644 --- a/Levenshtein_Edit_Distance.py +++ b/Levenshtein_Edit_Distance.py @@ -20,5 +20,4 @@ def edit_distance(str1, str2): #input is 2 strings that we will be comparing cost = 1 #no match: substitution D[i][j] = min(D[i-1][j] + 1, D[i][j-1] + 1,D[i-1][j-1] + cost) - return D[len(str1)][len(str2)] #last cell of matrix contains optimal solution - + return D[len(str1)][len(str2)] #last cell of matrix contains optimal solution \ No newline at end of file diff --git a/Test_Levenshtein_Edit_Distance.py b/Test_Levenshtein_Edit_Distance.py new file mode 100644 index 0000000..934a275 --- /dev/null +++ b/Test_Levenshtein_Edit_Distance.py @@ -0,0 +1,42 @@ +import unittest +import Levenshtein_Edit_Distance + +class TestEditDistance(unittest.TestCase): + def test_empty_strings(self): + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("", ""), 0) + + def test_identical_strings(self): + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("abcde", "abcde"), 0) + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("hello_world", "hello_world"), 0) + + def test_different_lengths(self): + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("apple", "pineapple"), 4) + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("programming", "programmer"), 3) + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("classification", "clarification"), 2) + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("comp sci", "computer science"), 8) + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("saturday", "sunday"), 3) + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("video", "nvidia"), 3) + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("uconn", "basketball"), 10) + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("national", "champions"), 6) + + + def test_same_lengths(self): + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("intention", "execution"), 5) + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("storrs", "stores"), 1) + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("student", "faculty"), 7) + + def test_one_empty_string(self): + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("computer", ""), 8) + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("", "science"), 7) + + def test_different_cases(self): + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("UConn", "uconn"), 2) + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("AbC", "abc"), 2) + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("ALGORITHM", "algorithm"), 9) + + def test_special_characters(self): + self.assertEqual(Levenshtein_Edit_Distance.edit_distance("a|b^c}", "a&b#c."), 3) + +if __name__ == '__main__': + unittest.main() + diff --git a/__pycache__/Levenshtein_Edit_Distance.cpython-313.pyc b/__pycache__/Levenshtein_Edit_Distance.cpython-313.pyc new file mode 100644 index 0000000..827d2c7 Binary files /dev/null and b/__pycache__/Levenshtein_Edit_Distance.cpython-313.pyc differ