Completed
Push — master ( c67833...fb6f9a )
by Mischa ter
02:09
created
tests/DamerauLevenshteinTest.php 1 patch
Indentation   +317 added lines, -317 removed lines patch added patch discarded remove patch
@@ -7,321 +7,321 @@
 block discarded – undo
7 7
 class DamerauLevenshteinTest extends TestCase
8 8
 {
9 9
 
10
-    /**
11
-     * Tests `getSimilarity`.
12
-     *
13
-     * @return void
14
-     */
15
-    public function testGetSimilarity()
16
-    {
17
-        $inputs = [
18
-            ['foo', 'foo'],
19
-            ['foo', 'fooo'],
20
-            ['foo', 'bar'],
21
-
22
-            ['123', '12'],
23
-            ['qwe', 'qwa'],
24
-            ['awe', 'qwe'],
25
-            ['фыв', 'фыа'],
26
-            ['vvvqw', 'vvvwq'],
27
-            ['qw', 'wq'],
28
-            ['qq', 'ww'],
29
-            ['qw', 'qw'],
30
-            ['пионер', 'плеер'],
31
-            ['пионер', 'пионеер'],
32
-            ['пионер', 'поинер'],
33
-            ['pioner', 'poner'],
34
-            ['пионер', 'понер'],
35
-        ];
36
-        $outputs = [
37
-            0,
38
-            1,
39
-            3,
40
-
41
-            1,
42
-            1,
43
-            1,
44
-            1,
45
-            1,
46
-            1,
47
-            2,
48
-            0,
49
-            3,
50
-            1,
51
-            1,
52
-            1,
53
-            1,
54
-        ];
55
-
56
-        foreach ($inputs as $i => $input) {
57
-            $DamerauLevenshtein = new DamerauLevenshtein($input[0], $input[1]);
58
-            $result = $DamerauLevenshtein->getSimilarity();
59
-            $expected = $outputs[$i];
60
-
61
-            $this->assertSame($expected, $result);
62
-        }
63
-    }
64
-
65
-    /**
66
-     * Tests `getInsCost`.
67
-     *
68
-     * @return void
69
-     */
70
-    public function testGetInsCost()
71
-    {
72
-        list($firstString, $secondString) = $this->getDefaultStrings();
73
-        list($insCost, $delCost, $subCost, $transCost) = $this->getDefaultCosts();
74
-
75
-        // Default insert cost
76
-
77
-        $DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
78
-        $result = $DamerauLevenshtein->getInsCost();
79
-        $expected = $insCost;
80
-
81
-        $this->assertSame($expected, $result);
82
-
83
-        // Non-default insert cost
84
-
85
-        $insCost = 2;
86
-
87
-        $DamerauLevenshtein = new DamerauLevenshtein(
88
-            $firstString,
89
-            $secondString,
90
-            $insCost,
91
-            $delCost,
92
-            $subCost,
93
-            $transCost
94
-        );
95
-        $result = $DamerauLevenshtein->getInsCost();
96
-        $expected = $insCost;
97
-
98
-        $this->assertSame($expected, $result);
99
-    }
100
-
101
-    /**
102
-     * Tests `getDelCost`.
103
-     *
104
-     * @return void
105
-     */
106
-    public function testGetDelCost()
107
-    {
108
-        list($firstString, $secondString) = $this->getDefaultStrings();
109
-        list($insCost, $delCost, $subCost, $transCost) = $this->getDefaultCosts();
110
-
111
-        // Default delete cost
112
-
113
-        $DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
114
-        $result = $DamerauLevenshtein->getDelCost();
115
-        $expected = $delCost;
116
-
117
-        $this->assertSame($expected, $result);
118
-
119
-        // Non-default delete cost
120
-
121
-        $delCost = 2;
122
-
123
-        $DamerauLevenshtein = new DamerauLevenshtein(
124
-            $firstString,
125
-            $secondString,
126
-            $insCost,
127
-            $delCost,
128
-            $subCost,
129
-            $transCost
130
-        );
131
-        $result = $DamerauLevenshtein->getDelCost();
132
-        $expected = $delCost;
133
-
134
-        $this->assertSame($expected, $result);
135
-    }
136
-
137
-    /**
138
-     * Tests `getSubCost`.
139
-     *
140
-     * @return void
141
-     */
142
-    public function testGetSubCost()
143
-    {
144
-        list($firstString, $secondString) = $this->getDefaultStrings();
145
-        list($insCost, $delCost, $subCost, $transCost) = $this->getDefaultCosts();
146
-
147
-        // Default substitution cost
148
-
149
-        $DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
150
-        $result = $DamerauLevenshtein->getSubCost();
151
-        $expected = $subCost;
152
-
153
-        $this->assertSame($expected, $result);
154
-
155
-        // Non-default substitution cost
156
-
157
-        $subCost = 2;
158
-
159
-        $DamerauLevenshtein = new DamerauLevenshtein(
160
-            $firstString,
161
-            $secondString,
162
-            $insCost,
163
-            $delCost,
164
-            $subCost,
165
-            $transCost
166
-        );
167
-        $result = $DamerauLevenshtein->getSubCost();
168
-        $expected = $subCost;
169
-
170
-        $this->assertSame($expected, $result);
171
-    }
172
-
173
-    /**
174
-     * Tests `getTransCost`.
175
-     *
176
-     * @return void
177
-     */
178
-    public function testGetTransCost()
179
-    {
180
-        list($firstString, $secondString) = $this->getDefaultStrings();
181
-        list($insCost, $delCost, $subCost, $transCost) = $this->getDefaultCosts();
182
-
183
-        // Default transposition cost
184
-
185
-        $DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
186
-        $result = $DamerauLevenshtein->getTransCost();
187
-        $expected = $transCost;
188
-
189
-        $this->assertSame($expected, $result);
190
-
191
-        // Non-default transposition cost
192
-
193
-        $transCost = 2;
194
-
195
-        $DamerauLevenshtein = new DamerauLevenshtein(
196
-            $firstString,
197
-            $secondString,
198
-            $insCost,
199
-            $delCost,
200
-            $subCost,
201
-            $transCost
202
-        );
203
-        $result = $DamerauLevenshtein->getTransCost();
204
-        $expected = $transCost;
205
-
206
-        $this->assertSame($expected, $result);
207
-    }
208
-
209
-    /**
210
-     * Tests `getRelativeDistance`.
211
-     *
212
-     * @return void
213
-     */
214
-    public function testGetRelativeDistance()
215
-    {
216
-        $delta = pow(10, -4);
217
-
218
-        $firstString = 'O\'Callaghan';
219
-        $secondString = 'OCallaghan';
220
-
221
-        $DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
222
-        $result = $DamerauLevenshtein->getRelativeDistance();
223
-        $expected = 0.90909090909091;
224
-        $this->assertEquals($expected, $result, '', $delta);
225
-
226
-        $firstString = 'Thom';
227
-        $secondString = 'Mira';
228
-
229
-        $DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
230
-        $result = $DamerauLevenshtein->getRelativeDistance();
231
-        $expected = 0.0;
232
-        $this->assertEquals($expected, $result, '', $delta);
233
-
234
-        $firstString = 'Oldeboom';
235
-        $secondString = 'Ven';
236
-
237
-        $DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
238
-        $result = $DamerauLevenshtein->getRelativeDistance();
239
-        $expected = 0.125;
240
-        $this->assertEquals($expected, $result, '', $delta);
241
-
242
-        $firstString = 'ven';
243
-        $secondString = 'Ven';
244
-
245
-        $DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
246
-        $result = $DamerauLevenshtein->getRelativeDistance();
247
-        $expected = 0.66666666666667;
248
-        $this->assertEquals($expected, $result, '', $delta);
249
-
250
-        $firstString = 'enV';
251
-        $secondString = 'Ven';
252
-
253
-        $DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
254
-        $result = $DamerauLevenshtein->getRelativeDistance();
255
-        $expected = 0.33333333333333;
256
-        $this->assertEquals($expected, $result, '', $delta);
257
-    }
258
-
259
-    /**
260
-     * Tests `getMatrix`.
261
-     *
262
-     * @return void
263
-     */
264
-    public function testGetMatrix()
265
-    {
266
-        list($firstString, $secondString) = $this->getDefaultStrings();
267
-
268
-        $DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
269
-        $actual = $DamerauLevenshtein->getMatrix();
270
-        $expected = [
271
-            [0, 1, 2, 3],
272
-            [1, 1, 2, 3],
273
-            [2, 2, 2, 3],
274
-            [3, 3, 3, 3]
275
-        ];
276
-        $this->assertSame($expected, $actual);
277
-    }
278
-
279
-    /**
280
-     * Tests `displayMatrix`.
281
-     *
282
-     * @return void
283
-     */
284
-    public function testDisplayMatrix()
285
-    {
286
-        list($firstString, $secondString) = $this->getDefaultStrings();
287
-
288
-        $DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
289
-        $actual = $DamerauLevenshtein->displayMatrix();
290
-        $expected = implode('', [
291
-            "  foo\n",
292
-            " 0123\n",
293
-            "b1123\n",
294
-            "a2223\n",
295
-            "r3333\n",
296
-        ]);
297
-        $this->assertSame($expected, $actual);
298
-    }
299
-
300
-    /**
301
-     * Returns the default costs.
302
-     *
303
-     * @return array Costs (insert, delete, substitution, transposition)
304
-     */
305
-    protected function getDefaultCosts()
306
-    {
307
-        $insCost = 1;
308
-        $delCost = 1;
309
-        $subCost = 1;
310
-        $transCost = 1;
311
-
312
-        return [$insCost, $delCost, $subCost, $transCost];
313
-    }
314
-
315
-    /**
316
-     * Returns the default strings.
317
-     *
318
-     * @return array Strings (foo, bar)
319
-     */
320
-    protected function getDefaultStrings()
321
-    {
322
-        $firstString = 'foo';
323
-        $secondString = 'bar';
324
-
325
-        return [$firstString, $secondString];
326
-    }
10
+	/**
11
+	 * Tests `getSimilarity`.
12
+	 *
13
+	 * @return void
14
+	 */
15
+	public function testGetSimilarity()
16
+	{
17
+		$inputs = [
18
+			['foo', 'foo'],
19
+			['foo', 'fooo'],
20
+			['foo', 'bar'],
21
+
22
+			['123', '12'],
23
+			['qwe', 'qwa'],
24
+			['awe', 'qwe'],
25
+			['фыв', 'фыа'],
26
+			['vvvqw', 'vvvwq'],
27
+			['qw', 'wq'],
28
+			['qq', 'ww'],
29
+			['qw', 'qw'],
30
+			['пионер', 'плеер'],
31
+			['пионер', 'пионеер'],
32
+			['пионер', 'поинер'],
33
+			['pioner', 'poner'],
34
+			['пионер', 'понер'],
35
+		];
36
+		$outputs = [
37
+			0,
38
+			1,
39
+			3,
40
+
41
+			1,
42
+			1,
43
+			1,
44
+			1,
45
+			1,
46
+			1,
47
+			2,
48
+			0,
49
+			3,
50
+			1,
51
+			1,
52
+			1,
53
+			1,
54
+		];
55
+
56
+		foreach ($inputs as $i => $input) {
57
+			$DamerauLevenshtein = new DamerauLevenshtein($input[0], $input[1]);
58
+			$result = $DamerauLevenshtein->getSimilarity();
59
+			$expected = $outputs[$i];
60
+
61
+			$this->assertSame($expected, $result);
62
+		}
63
+	}
64
+
65
+	/**
66
+	 * Tests `getInsCost`.
67
+	 *
68
+	 * @return void
69
+	 */
70
+	public function testGetInsCost()
71
+	{
72
+		list($firstString, $secondString) = $this->getDefaultStrings();
73
+		list($insCost, $delCost, $subCost, $transCost) = $this->getDefaultCosts();
74
+
75
+		// Default insert cost
76
+
77
+		$DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
78
+		$result = $DamerauLevenshtein->getInsCost();
79
+		$expected = $insCost;
80
+
81
+		$this->assertSame($expected, $result);
82
+
83
+		// Non-default insert cost
84
+
85
+		$insCost = 2;
86
+
87
+		$DamerauLevenshtein = new DamerauLevenshtein(
88
+			$firstString,
89
+			$secondString,
90
+			$insCost,
91
+			$delCost,
92
+			$subCost,
93
+			$transCost
94
+		);
95
+		$result = $DamerauLevenshtein->getInsCost();
96
+		$expected = $insCost;
97
+
98
+		$this->assertSame($expected, $result);
99
+	}
100
+
101
+	/**
102
+	 * Tests `getDelCost`.
103
+	 *
104
+	 * @return void
105
+	 */
106
+	public function testGetDelCost()
107
+	{
108
+		list($firstString, $secondString) = $this->getDefaultStrings();
109
+		list($insCost, $delCost, $subCost, $transCost) = $this->getDefaultCosts();
110
+
111
+		// Default delete cost
112
+
113
+		$DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
114
+		$result = $DamerauLevenshtein->getDelCost();
115
+		$expected = $delCost;
116
+
117
+		$this->assertSame($expected, $result);
118
+
119
+		// Non-default delete cost
120
+
121
+		$delCost = 2;
122
+
123
+		$DamerauLevenshtein = new DamerauLevenshtein(
124
+			$firstString,
125
+			$secondString,
126
+			$insCost,
127
+			$delCost,
128
+			$subCost,
129
+			$transCost
130
+		);
131
+		$result = $DamerauLevenshtein->getDelCost();
132
+		$expected = $delCost;
133
+
134
+		$this->assertSame($expected, $result);
135
+	}
136
+
137
+	/**
138
+	 * Tests `getSubCost`.
139
+	 *
140
+	 * @return void
141
+	 */
142
+	public function testGetSubCost()
143
+	{
144
+		list($firstString, $secondString) = $this->getDefaultStrings();
145
+		list($insCost, $delCost, $subCost, $transCost) = $this->getDefaultCosts();
146
+
147
+		// Default substitution cost
148
+
149
+		$DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
150
+		$result = $DamerauLevenshtein->getSubCost();
151
+		$expected = $subCost;
152
+
153
+		$this->assertSame($expected, $result);
154
+
155
+		// Non-default substitution cost
156
+
157
+		$subCost = 2;
158
+
159
+		$DamerauLevenshtein = new DamerauLevenshtein(
160
+			$firstString,
161
+			$secondString,
162
+			$insCost,
163
+			$delCost,
164
+			$subCost,
165
+			$transCost
166
+		);
167
+		$result = $DamerauLevenshtein->getSubCost();
168
+		$expected = $subCost;
169
+
170
+		$this->assertSame($expected, $result);
171
+	}
172
+
173
+	/**
174
+	 * Tests `getTransCost`.
175
+	 *
176
+	 * @return void
177
+	 */
178
+	public function testGetTransCost()
179
+	{
180
+		list($firstString, $secondString) = $this->getDefaultStrings();
181
+		list($insCost, $delCost, $subCost, $transCost) = $this->getDefaultCosts();
182
+
183
+		// Default transposition cost
184
+
185
+		$DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
186
+		$result = $DamerauLevenshtein->getTransCost();
187
+		$expected = $transCost;
188
+
189
+		$this->assertSame($expected, $result);
190
+
191
+		// Non-default transposition cost
192
+
193
+		$transCost = 2;
194
+
195
+		$DamerauLevenshtein = new DamerauLevenshtein(
196
+			$firstString,
197
+			$secondString,
198
+			$insCost,
199
+			$delCost,
200
+			$subCost,
201
+			$transCost
202
+		);
203
+		$result = $DamerauLevenshtein->getTransCost();
204
+		$expected = $transCost;
205
+
206
+		$this->assertSame($expected, $result);
207
+	}
208
+
209
+	/**
210
+	 * Tests `getRelativeDistance`.
211
+	 *
212
+	 * @return void
213
+	 */
214
+	public function testGetRelativeDistance()
215
+	{
216
+		$delta = pow(10, -4);
217
+
218
+		$firstString = 'O\'Callaghan';
219
+		$secondString = 'OCallaghan';
220
+
221
+		$DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
222
+		$result = $DamerauLevenshtein->getRelativeDistance();
223
+		$expected = 0.90909090909091;
224
+		$this->assertEquals($expected, $result, '', $delta);
225
+
226
+		$firstString = 'Thom';
227
+		$secondString = 'Mira';
228
+
229
+		$DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
230
+		$result = $DamerauLevenshtein->getRelativeDistance();
231
+		$expected = 0.0;
232
+		$this->assertEquals($expected, $result, '', $delta);
233
+
234
+		$firstString = 'Oldeboom';
235
+		$secondString = 'Ven';
236
+
237
+		$DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
238
+		$result = $DamerauLevenshtein->getRelativeDistance();
239
+		$expected = 0.125;
240
+		$this->assertEquals($expected, $result, '', $delta);
241
+
242
+		$firstString = 'ven';
243
+		$secondString = 'Ven';
244
+
245
+		$DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
246
+		$result = $DamerauLevenshtein->getRelativeDistance();
247
+		$expected = 0.66666666666667;
248
+		$this->assertEquals($expected, $result, '', $delta);
249
+
250
+		$firstString = 'enV';
251
+		$secondString = 'Ven';
252
+
253
+		$DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
254
+		$result = $DamerauLevenshtein->getRelativeDistance();
255
+		$expected = 0.33333333333333;
256
+		$this->assertEquals($expected, $result, '', $delta);
257
+	}
258
+
259
+	/**
260
+	 * Tests `getMatrix`.
261
+	 *
262
+	 * @return void
263
+	 */
264
+	public function testGetMatrix()
265
+	{
266
+		list($firstString, $secondString) = $this->getDefaultStrings();
267
+
268
+		$DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
269
+		$actual = $DamerauLevenshtein->getMatrix();
270
+		$expected = [
271
+			[0, 1, 2, 3],
272
+			[1, 1, 2, 3],
273
+			[2, 2, 2, 3],
274
+			[3, 3, 3, 3]
275
+		];
276
+		$this->assertSame($expected, $actual);
277
+	}
278
+
279
+	/**
280
+	 * Tests `displayMatrix`.
281
+	 *
282
+	 * @return void
283
+	 */
284
+	public function testDisplayMatrix()
285
+	{
286
+		list($firstString, $secondString) = $this->getDefaultStrings();
287
+
288
+		$DamerauLevenshtein = new DamerauLevenshtein($firstString, $secondString);
289
+		$actual = $DamerauLevenshtein->displayMatrix();
290
+		$expected = implode('', [
291
+			"  foo\n",
292
+			" 0123\n",
293
+			"b1123\n",
294
+			"a2223\n",
295
+			"r3333\n",
296
+		]);
297
+		$this->assertSame($expected, $actual);
298
+	}
299
+
300
+	/**
301
+	 * Returns the default costs.
302
+	 *
303
+	 * @return array Costs (insert, delete, substitution, transposition)
304
+	 */
305
+	protected function getDefaultCosts()
306
+	{
307
+		$insCost = 1;
308
+		$delCost = 1;
309
+		$subCost = 1;
310
+		$transCost = 1;
311
+
312
+		return [$insCost, $delCost, $subCost, $transCost];
313
+	}
314
+
315
+	/**
316
+	 * Returns the default strings.
317
+	 *
318
+	 * @return array Strings (foo, bar)
319
+	 */
320
+	protected function getDefaultStrings()
321
+	{
322
+		$firstString = 'foo';
323
+		$secondString = 'bar';
324
+
325
+		return [$firstString, $secondString];
326
+	}
327 327
 }
Please login to merge, or discard this patch.