|
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
|
|
|
|