v / vlib / strings / similarity_test.v
66 lines · 61 sloc · 3.04 KB · 16f3cb42991b2968e6d3f93328dacd925c1f672a
Raw
1import strings
2
3fn test_levenshtein_distance() {
4 assert strings.levenshtein_distance('', '') == 0
5 assert strings.levenshtein_distance('one', 'one') == 0
6 assert strings.levenshtein_distance('', 'two') == 3
7 assert strings.levenshtein_distance('three', '') == 5
8 assert strings.levenshtein_distance('bananna', '') == 7
9 assert strings.levenshtein_distance('cats', 'hats') == 1
10 assert strings.levenshtein_distance('hugs', 'shrugs') == 2
11 assert strings.levenshtein_distance('broom', 'shroom') == 2
12 assert strings.levenshtein_distance('flomax', 'volmax') == 3
13 assert strings.levenshtein_distance('ab', 'cd') == 2
14}
15
16fn test_hamming_distance() {
17 assert strings.hamming_distance('', '') == 0
18 assert strings.hamming_distance('one', 'one') == 0
19 assert strings.hamming_distance('', 'two') == 3
20 assert strings.hamming_distance('three', '') == 5
21 assert strings.hamming_distance('bananna', '') == 7
22 assert strings.hamming_distance('cats', 'hats') == 1
23 assert strings.hamming_distance('hugs', 'shrugs') == 6
24 assert strings.hamming_distance('broom', 'shroom') == 5
25 assert strings.hamming_distance('flomax', 'volmax') == 3
26 assert strings.hamming_distance('ab', 'cd') == 2
27}
28
29fn test_hamming_similarity() {
30 assert strings.hamming_similarity('', '') == 1.0
31 assert strings.hamming_similarity('one', 'one') == 1.0
32 assert strings.hamming_similarity('', 'two') == 0
33 assert strings.hamming_similarity('three', '') == 0
34 assert strings.hamming_similarity('bananna', '') == 0
35 assert strings.hamming_similarity('cats', 'hats') == 0.75
36 assert strings.hamming_similarity('hugs', 'shrugs') == 0
37 assert strings.hamming_similarity('broom', 'shroom') == 0.1666666865348816
38 assert strings.hamming_similarity('flomax', 'volmax') == 0.5
39 assert strings.hamming_similarity('ab', 'cd') == 0
40}
41
42fn test_jaro_similarity() {
43 assert strings.jaro_similarity('', '') == 1
44 assert strings.jaro_similarity('one', 'one') == 1
45 assert strings.jaro_similarity('', 'two') == 0
46 assert strings.jaro_similarity('three', '') == 0
47 assert strings.jaro_similarity('bananna', '') == 0
48 assert strings.jaro_similarity('MARTHA', 'MARHTA') == 0.9444444444444445
49 assert strings.jaro_similarity('DIXON', 'DICKSONX') == 0.7666666666666666
50 assert strings.jaro_similarity('JELLYFISH', 'SMELLYFISH') == 0.8962962962962964
51 assert strings.jaro_similarity('a', 'a') == 1
52 assert strings.jaro_similarity('a', 'b') == 0
53}
54
55fn test_jaro_winkler_similarity() {
56 assert strings.jaro_winkler_similarity('', '') == 1
57 assert strings.jaro_winkler_similarity('one', 'one') == 1
58 assert strings.jaro_winkler_similarity('', 'two') == 0
59 assert strings.jaro_winkler_similarity('three', '') == 0
60 assert strings.jaro_winkler_similarity('bananna', '') == 0
61 assert strings.jaro_winkler_similarity('accomodate', 'accommodate') == 0.9818181818181818
62 assert strings.jaro_winkler_similarity('accomodate', 'accompanist') == 0.8672727272727273
63 assert strings.jaro_winkler_similarity('untill', 'huntsville') == 0.8666666666666667
64 assert strings.jaro_winkler_similarity('wich', 'wichita') == 0.9142857142857143
65 assert strings.jaro_winkler_similarity('a', 'a') == 1
66}
67