1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.text.similarity;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20
21 import java.util.stream.Stream;
22
23 import org.junit.jupiter.params.ParameterizedTest;
24 import org.junit.jupiter.params.provider.Arguments;
25 import org.junit.jupiter.params.provider.MethodSource;
26
27
28
29
30
31
32 public class ParameterizedEditDistanceFromTest<R> {
33
34 public static Stream<Arguments> parameters() {
35 return Stream.of(
36 Arguments.of(new HammingDistance(), "Sam I am.", "Ham I am.", 1),
37 Arguments.of(new HammingDistance(), "Japtheth, Ham, Shem", "Japtheth, HAM, Shem", 2),
38 Arguments.of(new HammingDistance(), "Hamming", "Hamming", 0),
39
40 Arguments.of(LevenshteinDistance.getDefaultInstance(), "Apache", "a patchy", 4),
41 Arguments.of(LevenshteinDistance.getDefaultInstance(), "go", "no go", 3),
42 Arguments.of(LevenshteinDistance.getDefaultInstance(), "go", "go", 0),
43
44 Arguments.of(new LevenshteinDistance(4), "Apache", "a patchy", 4),
45 Arguments.of(new LevenshteinDistance(4), "go", "no go", 3),
46 Arguments.of(new LevenshteinDistance(0), "go", "go", 0),
47
48 Arguments.of(
49 (EditDistance<Boolean>) (left, right) -> left == right || left != null && left.equals(right),
50 "Bob's your uncle.",
51 "Every good boy does fine.",
52 false));
53 }
54
55 @ParameterizedTest
56 @MethodSource("parameters")
57 void test(final EditDistance<R> editDistance, final CharSequence left, final CharSequence right, final R distance) {
58 final EditDistanceFrom<R> editDistanceFrom = new EditDistanceFrom<>(editDistance, left);
59 assertEquals(distance, editDistanceFrom.apply(right));
60 }
61
62 }