Test Failed
Push — master ( 87774f...87ccc1 )
by Chris
16:19 queued 03:01
created

tests.distance.test_distance_editex   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 53
dl 0
loc 94
rs 10
c 0
b 0
f 0
wmc 4
1
# -*- coding: utf-8 -*-
2
3
# Copyright 2014-2018 by Christopher C. Little.
4
# This file is part of Abydos.
5
#
6
# Abydos is free software: you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License as published by
8
# the Free Software Foundation, either version 3 of the License, or
9
# (at your option) any later version.
10
#
11
# Abydos is distributed in the hope that it will be useful,
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
# GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with Abydos. If not, see <http://www.gnu.org/licenses/>.
18
19
"""abydos.tests.test_distance.editex.
20
21
This module contains unit tests for abydos.distance.editex
22
"""
23
24
from __future__ import division, unicode_literals
25
26
import unittest
27
28
from abydos.distance.editex import dist_editex, editex, sim_editex
29
30
31
class EditexTestCases(unittest.TestCase):
32
    """Test Editex functions.
33
34
    abydos.distance.editex, .sim_editex & .dist_editex
35
    """
36
37
    def test_editex(self):
38
        """Test abydos.distance.editex."""
39
        self.assertEqual(editex('', ''), 0)
40
        self.assertEqual(editex('nelson', ''), 12)
41
        self.assertEqual(editex('', 'neilsen'), 14)
42
        self.assertEqual(editex('ab', 'a'), 2)
43
        self.assertEqual(editex('ab', 'c'), 4)
44
        self.assertEqual(editex('nelson', 'neilsen'), 2)
45
        self.assertEqual(editex('neilsen', 'nelson'), 2)
46
        self.assertEqual(editex('niall', 'neal'), 1)
47
        self.assertEqual(editex('neal', 'niall'), 1)
48
        self.assertEqual(editex('niall', 'nihal'), 2)
49
        self.assertEqual(editex('nihal', 'niall'), 2)
50
        self.assertEqual(editex('neal', 'nihl'), 3)
51
        self.assertEqual(editex('nihl', 'neal'), 3)
52
53
    def test_editex_local(self):
54
        """Test abydos.distance.editex (local variant)."""
55
        self.assertEqual(editex('', '', local=True), 0)
56
        self.assertEqual(editex('nelson', '', local=True), 12)
57
        self.assertEqual(editex('', 'neilsen', local=True), 14)
58
        self.assertEqual(editex('ab', 'a', local=True), 2)
59
        self.assertEqual(editex('ab', 'c', local=True), 2)
60
        self.assertEqual(editex('nelson', 'neilsen', local=True), 2)
61
        self.assertEqual(editex('neilsen', 'nelson', local=True), 2)
62
        self.assertEqual(editex('niall', 'neal', local=True), 1)
63
        self.assertEqual(editex('neal', 'niall', local=True), 1)
64
        self.assertEqual(editex('niall', 'nihal', local=True), 2)
65
        self.assertEqual(editex('nihal', 'niall', local=True), 2)
66
        self.assertEqual(editex('neal', 'nihl', local=True), 3)
67
        self.assertEqual(editex('nihl', 'neal', local=True), 3)
68
69
    def test_sim_editex(self):
70
        """Test abydos.distance.sim_editex."""
71
        self.assertEqual(sim_editex('', ''), 1)
72
        self.assertEqual(sim_editex('nelson', ''), 0)
73
        self.assertEqual(sim_editex('', 'neilsen'), 0)
74
        self.assertEqual(sim_editex('ab', 'a'), 0.5)
75
        self.assertEqual(sim_editex('ab', 'c'), 0)
76
        self.assertAlmostEqual(sim_editex('nelson', 'neilsen'), 12/14)
77
        self.assertAlmostEqual(sim_editex('neilsen', 'nelson'), 12/14)
78
        self.assertEqual(sim_editex('niall', 'neal'), 0.9)
79
80
    def test_dist_editex(self):
81
        """Test abydos.distance.dist_editex."""
82
        self.assertEqual(dist_editex('', ''), 0)
83
        self.assertEqual(dist_editex('nelson', ''), 1)
84
        self.assertEqual(dist_editex('', 'neilsen'), 1)
85
        self.assertEqual(dist_editex('ab', 'a'), 0.5)
86
        self.assertEqual(dist_editex('ab', 'c'), 1)
87
        self.assertAlmostEqual(dist_editex('nelson', 'neilsen'), 2/14)
88
        self.assertAlmostEqual(dist_editex('neilsen', 'nelson'), 2/14)
89
        self.assertEqual(dist_editex('niall', 'neal'), 0.1)
90
91
92
if __name__ == '__main__':
93
    unittest.main()
94