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

tests.phonetic.test_phonetic_dm   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 112
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 63
dl 0
loc 112
rs 10
c 0
b 0
f 0
wmc 1
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_phonetic_dm.
20
21
This module contains unit tests for abydos.phonetic.dm
22
"""
23
24
from __future__ import unicode_literals
25
26
import unittest
27
28
from abydos.phonetic.dm import dm_soundex
29
30
31
class DMSoundexTestCases(unittest.TestCase):
32
    """Test Daitch-Mokotoff Soundex functions.
33
34
    test cases for abydos.phonetic.dm_soundex
35
    """
36
37
    def test_dm_soundex(self):
38
        """Test abydos.phonetic.dm_soundex (Daitch-Mokotoff Soundex)."""
39
        # D-M tests
40
        self.assertEqual(dm_soundex(''), {'000000'})
41
42
        # http://www.avotaynu.com/soundex.htm
43
        self.assertEqual(dm_soundex('Augsburg'), {'054795'})
44
        self.assertEqual(dm_soundex('Breuer'), {'791900'})
45
        self.assertEqual(dm_soundex('Halberstadt'), {'587943', '587433'})
46
        self.assertEqual(dm_soundex('Mannheim'), {'665600'})
47
        self.assertEqual(dm_soundex('Chernowitz'), {'496740', '596740'})
48
        self.assertEqual(dm_soundex('Cherkassy'), {'495400', '595400'})
49
        self.assertEqual(dm_soundex('Kleinman'), {'586660'})
50
        self.assertEqual(dm_soundex('Berlin'), {'798600'})
51
52
        self.assertEqual(dm_soundex('Ceniow'), {'467000', '567000'})
53
        self.assertEqual(dm_soundex('Tsenyuv'), {'467000'})
54
        self.assertEqual(dm_soundex('Holubica'), {'587400', '587500'})
55
        self.assertEqual(dm_soundex('Golubitsa'), {'587400'})
56
        self.assertEqual(dm_soundex('Przemysl'), {'746480', '794648'})
57
        self.assertEqual(dm_soundex('Pshemeshil'), {'746480'})
58
        self.assertEqual(dm_soundex('Rosochowaciec'),
59
                         {'944744', '945744', '944755', '944754', '944745',
60
                          '945745', '945754', '945755'})
61
        self.assertEqual(dm_soundex('Rosokhovatsets'), {'945744'})
62
63
        # https://en.wikipedia.org/wiki/Daitch%E2%80%93Mokotoff_Soundex
64
        self.assertEqual(dm_soundex('Peters'), {'739400', '734000'})
65
        self.assertEqual(dm_soundex('Peterson'), {'739460', '734600'})
66
        self.assertEqual(dm_soundex('Moskowitz'), {'645740'})
67
        self.assertEqual(dm_soundex('Moskovitz'), {'645740'})
68
        self.assertEqual(dm_soundex('Auerbach'), {'097500', '097400'})
69
        self.assertEqual(dm_soundex('Uhrbach'), {'097500', '097400'})
70
        self.assertEqual(dm_soundex('Jackson'),
71
                         {'154600', '454600', '145460', '445460'})
72
        self.assertEqual(dm_soundex('Jackson-Jackson'),
73
                         {'154654', '454654', '145465', '445465',
74
                          '154645', '454645', '145464', '445464',
75
                          '154644', '454644'})
76
77
        # http://www.jewishgen.org/infofiles/soundex.html
78
        self.assertEqual(dm_soundex('OHRBACH'), {'097500', '097400'})
79
        self.assertEqual(dm_soundex('LIPSHITZ'), {'874400'})
80
        self.assertEqual(dm_soundex('LIPPSZYC'), {'874400', '874500'})
81
        self.assertEqual(dm_soundex('LEWINSKY'), {'876450'})
82
        self.assertEqual(dm_soundex('LEVINSKI'), {'876450'})
83
        self.assertEqual(dm_soundex('SZLAMAWICZ'), {'486740'})
84
        self.assertEqual(dm_soundex('SHLAMOVITZ'), {'486740'})
85
86
        # http://community.actian.com/wiki/OME_soundex_dm()
87
        self.assertEqual(dm_soundex('Schwarzenegger'),
88
                         {'479465', '474659'})
89
        self.assertEqual(dm_soundex('Shwarzenegger'),
90
                         {'479465', '474659'})
91
        self.assertEqual(dm_soundex('Schwartsenegger'), {'479465'})
92
93
        # max_length bounds tests
94
        self.assertEqual(dm_soundex('Niall', max_length=-1), {'68'+'0'*62})
95
        self.assertEqual(dm_soundex('Niall', max_length=0), {'680000'})
96
97
        # zero_pad tests
98
        self.assertEqual(dm_soundex('Niall', max_length=-1, zero_pad=False),
99
                         {'68'})
100
        self.assertEqual(dm_soundex('Niall', max_length=0, zero_pad=False),
101
                         {'68'})
102
        self.assertEqual(dm_soundex('Niall', max_length=0, zero_pad=True),
103
                         {'680000'})
104
        self.assertEqual(dm_soundex('', max_length=6, zero_pad=False),
105
                         {'0'})
106
        self.assertEqual(dm_soundex('', max_length=6, zero_pad=True),
107
                         {'000000'})
108
109
110
if __name__ == '__main__':
111
    unittest.main()
112