Completed
Branch master (87ccc1)
by Chris
10:18
created

tests.phonetic.test_phonetic_de   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 219
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 135
dl 0
loc 219
rs 10
c 0
b 0
f 0
wmc 6
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_de.
20
21
This module contains unit tests for abydos.phonetic.de
22
"""
23
24
from __future__ import unicode_literals
25
26
import unittest
27
28
from abydos.phonetic.de import haase_phonetik, koelner_phonetik, \
29
    koelner_phonetik_alpha, koelner_phonetik_num_to_alpha, phonem, \
30
    reth_schek_phonetik
31
32
33
class KoelnerPhonetikTestCases(unittest.TestCase):
34
    """Test Koelner Phonetic functions.
35
36
    test cases for abydos.phonetic.koelner_phonetik,
37
    .koelner_phonetik_num_to_alpha, & .koelner_phonetik_alpha
38
    """
39
40
    def test_koelner_phonetik(self):
41
        """Test abydos.phonetic.koelner_phonetik."""
42
        self.assertEqual(koelner_phonetik(''), '')
43
44
        # https://de.wikipedia.org/wiki/K%C3%B6lner_Phonetik
45
        self.assertEqual(koelner_phonetik('Müller-Lüdenscheidt'), '65752682')
46
        self.assertEqual(koelner_phonetik('Wikipedia'), '3412')
47
        self.assertEqual(koelner_phonetik('Breschnew'), '17863')
48
49
        # http://search.cpan.org/~maros/Text-Phonetic/lib/Text/Phonetic/Koeln.pm
50
        self.assertEqual(koelner_phonetik('Müller'), '657')
51
        self.assertEqual(koelner_phonetik('schmidt'), '862')
52
        self.assertEqual(koelner_phonetik('schneider'), '8627')
53
        self.assertEqual(koelner_phonetik('fischer'), '387')
54
        self.assertEqual(koelner_phonetik('weber'), '317')
55
        self.assertEqual(koelner_phonetik('meyer'), '67')
56
        self.assertEqual(koelner_phonetik('wagner'), '3467')
57
        self.assertEqual(koelner_phonetik('schulz'), '858')
58
        self.assertEqual(koelner_phonetik('becker'), '147')
59
        self.assertEqual(koelner_phonetik('hoffmann'), '0366')
60
        self.assertEqual(koelner_phonetik('schäfer'), '837')
61
        self.assertEqual(koelner_phonetik('cater'), '427')
62
        self.assertEqual(koelner_phonetik('axel'), '0485')
63
64
        # etc. (for code coverage)
65
        self.assertEqual(koelner_phonetik('Akxel'), '0485')
66
        self.assertEqual(koelner_phonetik('Adz'), '08')
67
        self.assertEqual(koelner_phonetik('Alpharades'), '053728')
68
        self.assertEqual(koelner_phonetik('Cent'), '862')
69
        self.assertEqual(koelner_phonetik('Acre'), '087')
70
        self.assertEqual(koelner_phonetik('H'), '')
71
72
    def test_koelner_phonetik_n2a(self):
73
        """Test abydos.phonetic.koelner_phonetik_num_to_alpha."""
74
        self.assertEqual(koelner_phonetik_num_to_alpha('0123456789'),
75
                         'APTFKLNRS')
76
77
    def test_koelner_phonetik_alpha(self):
78
        """Test abydos.phonetic.koelner_phonetik_alpha."""
79
        self.assertEqual(koelner_phonetik_alpha('Müller-Lüdenscheidt'),
80
                         'NLRLTNST')
81
        self.assertEqual(koelner_phonetik_alpha('Wikipedia'), 'FKPT')
82
        self.assertEqual(koelner_phonetik_alpha('Breschnew'), 'PRSNF')
83
        self.assertEqual(koelner_phonetik_alpha('Müller'), 'NLR')
84
        self.assertEqual(koelner_phonetik_alpha('schmidt'), 'SNT')
85
        self.assertEqual(koelner_phonetik_alpha('schneider'), 'SNTR')
86
        self.assertEqual(koelner_phonetik_alpha('fischer'), 'FSR')
87
        self.assertEqual(koelner_phonetik_alpha('weber'), 'FPR')
88
        self.assertEqual(koelner_phonetik_alpha('meyer'), 'NR')
89
        self.assertEqual(koelner_phonetik_alpha('wagner'), 'FKNR')
90
        self.assertEqual(koelner_phonetik_alpha('schulz'), 'SLS')
91
        self.assertEqual(koelner_phonetik_alpha('becker'), 'PKR')
92
        self.assertEqual(koelner_phonetik_alpha('hoffmann'), 'AFNN')
93
        self.assertEqual(koelner_phonetik_alpha('schäfer'), 'SFR')
94
        self.assertEqual(koelner_phonetik_alpha('cater'), 'KTR')
95
        self.assertEqual(koelner_phonetik_alpha('axel'), 'AKSL')
96
97
98
class PhonemTestCases(unittest.TestCase):
99
    """Test Phonem functions.
100
101
    test cases for abydos.phonetic.phonem
102
    """
103
104
    def test_phonem(self):
105
        """Test abydos.phonetic.phonem."""
106
        self.assertEqual(phonem(''), '')
107
108
        # http://phonetik.phil-fak.uni-koeln.de/fileadmin/home/ritters/Allgemeine_Dateien/Martin_Wilz.pdf
109
        self.assertEqual(phonem('müller'), 'MYLR')
110
        self.assertEqual(phonem('schmidt'), 'CMYD')
111
        self.assertEqual(phonem('schneider'), 'CNAYDR')
112
        self.assertEqual(phonem('fischer'), 'VYCR')
113
        self.assertEqual(phonem('weber'), 'VBR')
114
        self.assertEqual(phonem('meyer'), 'MAYR')
115
        self.assertEqual(phonem('wagner'), 'VACNR')
116
        self.assertEqual(phonem('schulz'), 'CULC')
117
        self.assertEqual(phonem('becker'), 'BCR')
118
        self.assertEqual(phonem('hoffmann'), 'OVMAN')
119
        self.assertEqual(phonem('schäfer'), 'CVR')
120
121
        # http://cpansearch.perl.org/src/MAROS/Text-Phonetic-2.05/t/008_phonem.t
122
        self.assertEqual(phonem('mair'), 'MAYR')
123
        self.assertEqual(phonem('bäker'), 'BCR')
124
        self.assertEqual(phonem('schaeffer'), 'CVR')
125
        self.assertEqual(phonem('computer'), 'COMBUDR')
126
        self.assertEqual(phonem('pfeifer'), 'VAYVR')
127
        self.assertEqual(phonem('pfeiffer'), 'VAYVR')
128
129
130
class HaasePhonetikTestCases(unittest.TestCase):
131
    """Test Haase Phonetik functions.
132
133
    test cases for abydos.phonetic.haase_phonetik
134
    """
135
136
    def test_haase_phonetik(self):
137
        """Test abydos.phonetic.haase_phonetik."""
138
        # Base cases
139
        self.assertEqual(haase_phonetik(''), ('',))
140
141
        # equivalents
142
        self.assertEqual(haase_phonetik('Häschen'), haase_phonetik('Haeschen'))
143
        self.assertEqual(haase_phonetik('Schloß'), haase_phonetik('Schloss'))
144
        self.assertEqual(haase_phonetik('üben'), haase_phonetik('ueben'))
145
        self.assertEqual(haase_phonetik('Eichörnchen'),
146
                         haase_phonetik('Eichoernchen'))
147
148
        # coverage completion
149
        self.assertEqual(haase_phonetik('Häschen'), ('9896', '9496'))
150
        self.assertEqual(haase_phonetik('Häschen', primary_only=True),
151
                         ('9896',))
152
        self.assertEqual(haase_phonetik('Eichörnchen'), ('94976496',))
153
        self.assertEqual(haase_phonetik('Hexe'), ('9489',))
154
        self.assertEqual(haase_phonetik('Chemie'), ('4969', '8969'))
155
156
        self.assertEqual(haase_phonetik('Brille'), ('17959', '179'))
157
        self.assertEqual(haase_phonetik('Brilleille'),
158
                         ('1795959', '17959', '179'))
159
        self.assertEqual(haase_phonetik('Niveau'), ('6939',))
160
        self.assertEqual(haase_phonetik('Korb'), ('4971', '4973'))
161
        self.assertEqual(haase_phonetik('Heino'), ('969', '9693'))
162
        self.assertEqual(haase_phonetik('Nekka'), ('6949', '69497'))
163
        self.assertEqual(haase_phonetik('Aleph'), ('9593',))
164
        self.assertEqual(haase_phonetik('Aleppo'), ('95919', '959193'))
165
        self.assertEqual(haase_phonetik('Endzipfel'), ('96891395',))
166
        self.assertEqual(haase_phonetik('verbrandt'), ('39717962', '39737962'))
167
        self.assertEqual(haase_phonetik('Cent'), ('8962',))
168
        self.assertEqual(haase_phonetik('addiscendae'), ('92989629',))
169
        self.assertEqual(haase_phonetik('kickx'), ('4948',))
170
        self.assertEqual(haase_phonetik('sanctionen'), ('896829696',))
171
172
173
class RethSchekTestCases(unittest.TestCase):
174
    """Test Reth-Schek Phonetik functions.
175
176
    test cases for abydos.phonetic.reth_schek_phonetik
177
    """
178
179
    def test_reth_schek_phonetik(self):
180
        """Test abydos.phonetic.reth_schek_phonetik."""
181
        # Base cases
182
        self.assertEqual(reth_schek_phonetik(''), '')
183
184
        # equivalents
185
        self.assertEqual(reth_schek_phonetik('Häschen'),
186
                         reth_schek_phonetik('Haeschen'))
187
        self.assertEqual(reth_schek_phonetik('Schloß'),
188
                         reth_schek_phonetik('Schloss'))
189
        self.assertEqual(reth_schek_phonetik('üben'),
190
                         reth_schek_phonetik('ueben'))
191
        self.assertEqual(reth_schek_phonetik('Eichörnchen'),
192
                         reth_schek_phonetik('Eichoernchen'))
193
194
        self.assertEqual(reth_schek_phonetik('Häschen'), 'HESCHEN')
195
        self.assertEqual(reth_schek_phonetik('Eichörnchen'), 'AIGHOERNGHEN')
196
        self.assertEqual(reth_schek_phonetik('Hexe'), 'HEXE')
197
        self.assertEqual(reth_schek_phonetik('Chemie'), 'GHEMI')
198
        self.assertEqual(reth_schek_phonetik('Brille'), 'BRILE')
199
        self.assertEqual(reth_schek_phonetik('Brilleille'), 'BRILAILE')
200
        self.assertEqual(reth_schek_phonetik('Niveau'), 'NIFEAU')
201
        self.assertEqual(reth_schek_phonetik('Korb'), 'GORB')
202
        self.assertEqual(reth_schek_phonetik('Heino'), 'HAINO')
203
        self.assertEqual(reth_schek_phonetik('Nekka'), 'NEKA')
204
        self.assertEqual(reth_schek_phonetik('Aleph'), 'ALEF')
205
        self.assertEqual(reth_schek_phonetik('Aleppo'), 'ALEBO')
206
        self.assertEqual(reth_schek_phonetik('Endzipfel'), 'ENDZIBFL')
207
        self.assertEqual(reth_schek_phonetik('verbrandt'), 'FERBRAND')
208
        self.assertEqual(reth_schek_phonetik('Cent'), 'GEND')
209
        self.assertEqual(reth_schek_phonetik('addiscendae'), 'ADISGENDE')
210
        self.assertEqual(reth_schek_phonetik('kickx'), 'GIGX')
211
        self.assertEqual(reth_schek_phonetik('sanctionen'), 'SANGDIONEN')
212
        self.assertEqual(reth_schek_phonetik('Kuh'), 'GU')
213
        self.assertEqual(reth_schek_phonetik('lecker'), 'LEGR')
214
        self.assertEqual(reth_schek_phonetik('rödlich'), 'ROEDLIG')
215
216
217
if __name__ == '__main__':
218
    unittest.main()
219