Skip to content

Commit

Permalink
Unit tests for Levenshtein Edit Distance
Browse files Browse the repository at this point in the history
  • Loading branch information
jendapang committed Apr 18, 2025
1 parent 3758641 commit a0a4101
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 2 deletions.
3 changes: 1 addition & 2 deletions Levenshtein_Edit_Distance.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
42 changes: 42 additions & 0 deletions Test_Levenshtein_Edit_Distance.py
Original file line number Diff line number Diff line change
@@ -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()

Binary file not shown.

0 comments on commit a0a4101

Please sign in to comment.