mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-06 00:54:32 +08:00
Add unit test for EditDistance (#6108)
This commit is contained in:
@ -1,7 +1,9 @@
|
|||||||
package com.thealgorithms.dynamicprogramming;
|
package com.thealgorithms.dynamicprogramming;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertAll;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.params.ParameterizedTest;
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
import org.junit.jupiter.params.provider.CsvSource;
|
import org.junit.jupiter.params.provider.CsvSource;
|
||||||
|
|
||||||
@ -12,4 +14,91 @@ public class EditDistanceTest {
|
|||||||
void testMinDistance(String str1, String str2, int expected) {
|
void testMinDistance(String str1, String str2, int expected) {
|
||||||
assertEquals(expected, EditDistance.minDistance(str1, str2));
|
assertEquals(expected, EditDistance.minDistance(str1, str2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEditDistanceBothEmptyStrings() {
|
||||||
|
assertEquals(0, EditDistance.editDistance("", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEditDistanceOneEmptyString() {
|
||||||
|
assertEquals(5, EditDistance.editDistance("", "hello"));
|
||||||
|
assertEquals(7, EditDistance.editDistance("worldly", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEditDistanceOneEmptyStringMemoization() {
|
||||||
|
int[][] storage = new int[1][6];
|
||||||
|
assertAll("String assertions",
|
||||||
|
()
|
||||||
|
-> assertEquals(5, EditDistance.editDistance("", "hello", storage)),
|
||||||
|
() -> assertEquals(0, storage[0][0]), () -> assertEquals(0, storage[0][1]), () -> assertEquals(0, storage[0][2]), () -> assertEquals(0, storage[0][3]), () -> assertEquals(0, storage[0][4]), () -> assertEquals(5, storage[0][5]));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEditDistanceEqualStrings() {
|
||||||
|
assertEquals(0, EditDistance.editDistance("test", "test"));
|
||||||
|
assertEquals(0, EditDistance.editDistance("abc", "abc"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEditDistanceEqualStringsMemoization() {
|
||||||
|
int[][] storage = new int[4][4];
|
||||||
|
assertAll("String assertions",
|
||||||
|
()
|
||||||
|
-> assertEquals(0, EditDistance.editDistance("abc", "abc", storage)),
|
||||||
|
()
|
||||||
|
-> assertEquals(0, storage[0][0]),
|
||||||
|
()
|
||||||
|
-> assertEquals(0, storage[0][1]),
|
||||||
|
()
|
||||||
|
-> assertEquals(0, storage[0][2]),
|
||||||
|
()
|
||||||
|
-> assertEquals(0, storage[0][3]),
|
||||||
|
()
|
||||||
|
-> assertEquals(0, storage[1][0]),
|
||||||
|
()
|
||||||
|
-> assertEquals(0, storage[1][1]),
|
||||||
|
()
|
||||||
|
-> assertEquals(0, storage[1][2]),
|
||||||
|
()
|
||||||
|
-> assertEquals(0, storage[1][3]),
|
||||||
|
()
|
||||||
|
-> assertEquals(0, storage[2][0]),
|
||||||
|
() -> assertEquals(0, storage[2][1]), () -> assertEquals(0, storage[2][2]), () -> assertEquals(0, storage[2][3]), () -> assertEquals(0, storage[3][0]), () -> assertEquals(0, storage[3][1]), () -> assertEquals(0, storage[3][2]), () -> assertEquals(0, storage[3][3]));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEditDistanceOneCharacterDifference() {
|
||||||
|
assertEquals(1, EditDistance.editDistance("cat", "bat"));
|
||||||
|
assertEquals(1, EditDistance.editDistance("cat", "cats"));
|
||||||
|
assertEquals(1, EditDistance.editDistance("cats", "cat"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEditDistanceOneCharacterDifferenceMemoization() {
|
||||||
|
int[][] storage = new int[3][3];
|
||||||
|
assertAll("All assertions",
|
||||||
|
()
|
||||||
|
-> assertEquals(1, EditDistance.editDistance("at", "it", storage)),
|
||||||
|
()
|
||||||
|
-> assertEquals(0, storage[0][0]),
|
||||||
|
()
|
||||||
|
-> assertEquals(1, storage[0][1]),
|
||||||
|
() -> assertEquals(2, storage[0][2]), () -> assertEquals(1, storage[1][0]), () -> assertEquals(0, storage[1][1]), () -> assertEquals(1, storage[1][2]), () -> assertEquals(2, storage[2][0]), () -> assertEquals(1, storage[2][1]), () -> assertEquals(1, storage[2][2]));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEditDistanceGeneralCases() {
|
||||||
|
assertEquals(3, EditDistance.editDistance("kitten", "sitting"));
|
||||||
|
assertEquals(2, EditDistance.editDistance("flaw", "lawn"));
|
||||||
|
assertEquals(5, EditDistance.editDistance("intention", "execution"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEditDistanceGeneralCasesMemoization() {
|
||||||
|
int[][] storage = new int[7][8];
|
||||||
|
assertEquals(3, EditDistance.editDistance("kitten", "sitting", storage));
|
||||||
|
assertAll("All assertions", () -> assertEquals(0, storage[0][0]), () -> assertEquals(3, storage[6][7]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user