1+ /*
2+ * The MIT License
3+ *
4+ * Copyright 2015 Thibault Debatty.
5+ *
6+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7+ * of this software and associated documentation files (the "Software"), to deal
8+ * in the Software without restriction, including without limitation the rights
9+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+ * copies of the Software, and to permit persons to whom the Software is
11+ * furnished to do so, subject to the following conditions:
12+ *
13+ * The above copyright notice and this permission notice shall be included in
14+ * all copies or substantial portions of the Software.
15+ *
16+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22+ * THE SOFTWARE.
23+ */
24+
25+ package info .debatty .java .stringsimilarity ;
26+
27+ import info .debatty .java .stringsimilarity .testutil .NullEmptyTests ;
28+ import org .junit .Test ;
29+ import static org .junit .Assert .*;
30+
31+ /**
32+ *
33+ * @author Agung Nugroho
34+ */
35+ public class RatcliffObershelpTest {
36+
37+
38+ /**
39+ * Test of similarity method, of class RatcliffObershelp.
40+ */
41+ @ Test
42+ public final void testSimilarity () {
43+ System .out .println ("similarity" );
44+ RatcliffObershelp instance = new RatcliffObershelp ();
45+ assertEquals (
46+ 0.888888 ,
47+ instance .similarity ("My string" , "My tsring" ),
48+ 0.000001 );
49+
50+ assertEquals (
51+ 0.777778 ,
52+ instance .similarity ("My string" , "My ntrisg" ),
53+ 0.000001 );
54+
55+ // test data from essay by Ilya Ilyankou
56+ // "Comparison of Jaro-Winkler and Ratcliff/Obershelp algorithms
57+ // in spell check"
58+ // https://ilyankou.files.wordpress.com/2015/06/ib-extended-essay.pdf
59+ // p13, expected result is 0.857
60+ assertEquals (
61+ 0.857 ,
62+ instance .similarity ("MATEMATICA" , "MATHEMATICS" ),
63+ 0.001 );
64+
65+ // these following test data were based on stringmetric
66+ // https://github.com/rockymadden/stringmetric
67+ // expected output is 0.7368421052631579
68+ assertEquals (
69+ 0.736842 ,
70+ instance .similarity ("aleksander" , "alexandre" ),
71+ 0.000001 );
72+
73+ // expected output is 0.6666666666666666
74+ assertEquals (
75+ 0.666666 ,
76+ instance .similarity ("pennsylvania" , "pencilvaneya" ),
77+ 0.000001 );
78+
79+ // test data from wikipedia
80+ // https://en.wikipedia.org/wiki/Gestalt_Pattern_Matching
81+ // expected output is 14/18 = 0.7777777777777778
82+ assertEquals (
83+ 0.777778 ,
84+ instance .similarity ("WIKIMEDIA" , "WIKIMANIA" ),
85+ 0.000001 );
86+
87+ NullEmptyTests .testSimilarity (instance );
88+ }
89+
90+ @ Test
91+ public final void testDistance () {
92+ RatcliffObershelp instance = new RatcliffObershelp ();
93+ NullEmptyTests .testDistance (instance );
94+
95+ // TODO: regular (non-null/empty) distance tests
96+ }
97+ }
0 commit comments