Completed
Branch master (87ccc1)
by Chris
08:42
created

tests.phonetic.test_phonetic_nrl.NRLTestCases.test_nrl()   B

Complexity

Conditions 1

Size

Total Lines 312
Code Lines 306

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 306
nop 1
dl 0
loc 312
rs 7
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
# -*- coding: utf-8 -*-
2
3
# Copyright 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_nrl.
20
21
This module contains unit tests for abydos.phonetic.nrl
22
"""
23
24
from __future__ import unicode_literals
25
26
import unittest
27
28
from abydos.phonetic.nrl import nrl
29
30
31
class NRLTestCases(unittest.TestCase):
32
    """Test Naval Research Laboratory phonetic encoding functions.
33
34
    test cases for abydos.phonetic.nrl
35
    """
36
37
    def test_nrl(self):
38
        """Test abydos.phonetic.nrl."""
39
        # Base case
40
        self.assertEqual(nrl(''), '')
41
42
        # common English words
43
        self.assertEqual(nrl('the'), 'DHAX')
44
        self.assertEqual(nrl('of'), 'AXv')
45
        self.assertEqual(nrl('and'), 'AEnd')
46
        self.assertEqual(nrl('a'), 'AX')
47
        self.assertEqual(nrl('to'), 'tUW')
48
        self.assertEqual(nrl('in'), 'IHn')
49
        self.assertEqual(nrl('is'), 'IHz')
50
        self.assertEqual(nrl('you'), 'yUW')
51
        self.assertEqual(nrl('that'), 'DHAEt')
52
        self.assertEqual(nrl('it'), 'IHt')
53
        self.assertEqual(nrl('he'), 'hIY')
54
        self.assertEqual(nrl('was'), 'wAAz')
55
        self.assertEqual(nrl('for'), 'fAOr')
56
        self.assertEqual(nrl('on'), 'AAn')
57
        self.assertEqual(nrl('are'), 'AAr')
58
        self.assertEqual(nrl('as'), 'AEz')
59
        self.assertEqual(nrl('with'), 'wIHTH')
60
        self.assertEqual(nrl('his'), 'hIHz')
61
        self.assertEqual(nrl('they'), 'DHEY')
62
        self.assertEqual(nrl('I'), 'AY')
63
        self.assertEqual(nrl('at'), 'AEt')
64
        self.assertEqual(nrl('be'), 'bIY')
65
        self.assertEqual(nrl('this'), 'DHIHs')
66
        self.assertEqual(nrl('have'), 'hAEv')
67
        self.assertEqual(nrl('from'), 'frAAm')
68
        self.assertEqual(nrl('or'), 'AOr')
69
        self.assertEqual(nrl('one'), 'wAHn')
70
        self.assertEqual(nrl('had'), 'hAEd')
71
        self.assertEqual(nrl('by'), 'bAY')
72
        self.assertEqual(nrl('word'), 'wERd')
73
        self.assertEqual(nrl('but'), 'bAHt')
74
        self.assertEqual(nrl('not'), 'nAAt')
75
        self.assertEqual(nrl('what'), 'WHAAt')
76
        self.assertEqual(nrl('all'), 'AOl')
77
        self.assertEqual(nrl('were'), 'wER')
78
        self.assertEqual(nrl('we'), 'wIY')
79
        self.assertEqual(nrl('when'), 'WHEHn')
80
        self.assertEqual(nrl('your'), 'yUWr')
81
        self.assertEqual(nrl('can'), 'kAEn')
82
        self.assertEqual(nrl('said'), 'sEHd')
83
        self.assertEqual(nrl('there'), 'DHEHr')
84
        self.assertEqual(nrl('use'), 'yUWz')
85
        self.assertEqual(nrl('an'), 'AEn')
86
        self.assertEqual(nrl('each'), 'IYCH')
87
        self.assertEqual(nrl('which'), 'WHIHCH')
88
        self.assertEqual(nrl('she'), 'SHIY')
89
        self.assertEqual(nrl('do'), 'dUW')
90
        self.assertEqual(nrl('how'), 'hAW')
91
        self.assertEqual(nrl('their'), 'DHEHr')
92
        self.assertEqual(nrl('if'), 'IHf')
93
        self.assertEqual(nrl('will'), 'wIHl')
94
        self.assertEqual(nrl('up'), 'AHp')
95
        self.assertEqual(nrl('other'), 'AHDHER')
96
        self.assertEqual(nrl('about'), 'AEbAWt')
97
        self.assertEqual(nrl('out'), 'AWt')
98
        self.assertEqual(nrl('many'), 'mEHnIY')
99
        self.assertEqual(nrl('then'), 'DHEHn')
100
        self.assertEqual(nrl('them'), 'DHEHm')
101
        self.assertEqual(nrl('these'), 'DHIYz')
102
        self.assertEqual(nrl('so'), 'sOW')
103
        self.assertEqual(nrl('some'), 'sAHm')
104
        self.assertEqual(nrl('her'), 'hER')
105
        self.assertEqual(nrl('would'), 'wUHd')
106
        self.assertEqual(nrl('make'), 'mEYk')
107
        self.assertEqual(nrl('like'), 'lAYk')
108
        self.assertEqual(nrl('him'), 'hIHm')
109
        self.assertEqual(nrl('into'), 'IHntUW')
110
        self.assertEqual(nrl('time'), 'tAYm')
111
        self.assertEqual(nrl('has'), 'hAEz')
112
        self.assertEqual(nrl('look'), 'lUHk')
113
        self.assertEqual(nrl('two'), 'tUW')
114
        self.assertEqual(nrl('more'), 'mAOr')
115
        self.assertEqual(nrl('write'), 'rAYt')
116
        self.assertEqual(nrl('go'), 'gOW')
117
        self.assertEqual(nrl('see'), 'sIY')
118
        self.assertEqual(nrl('number'), 'nAHmbER')
119
        self.assertEqual(nrl('no'), 'nOW')
120
        self.assertEqual(nrl('way'), 'wEY')
121
        self.assertEqual(nrl('could'), 'kUHd')
122
        self.assertEqual(nrl('people'), 'pIYpl')
123
        self.assertEqual(nrl('my'), 'mAY')
124
        self.assertEqual(nrl('than'), 'DHAEn')
125
        self.assertEqual(nrl('first'), 'fERst')
126
        self.assertEqual(nrl('water'), 'wAAtER')
127
        self.assertEqual(nrl('been'), 'bIYn')
128
        self.assertEqual(nrl('call'), 'kAOl')
129
        self.assertEqual(nrl('who'), 'hUW')
130
        self.assertEqual(nrl('oil'), 'OYl')
131
        self.assertEqual(nrl('its'), 'IHtz')
132
        self.assertEqual(nrl('now'), 'nAW')
133
        self.assertEqual(nrl('find'), 'fAYnd')
134
        self.assertEqual(nrl('long'), 'lAONG')
135
        self.assertEqual(nrl('down'), 'dAWn')
136
        self.assertEqual(nrl('day'), 'dEY')
137
        self.assertEqual(nrl('did'), 'dIHd')
138
        self.assertEqual(nrl('get'), 'gEHt')
139
        self.assertEqual(nrl('come'), 'kAHm')
140
        self.assertEqual(nrl('made'), 'mEYd')
141
        self.assertEqual(nrl('may'), 'mEY')
142
        self.assertEqual(nrl('part'), 'pAArt')
143
        self.assertEqual(nrl('supply'), 'sAHpplIH')
144
        self.assertEqual(nrl('corner'), 'kAOrnER')
145
        self.assertEqual(nrl('electric'), 'IYlEHktrIHk')
146
        self.assertEqual(nrl('insects'), 'IHnsEHktz')
147
        self.assertEqual(nrl('crops'), 'krAAps')
148
        self.assertEqual(nrl('tone'), 'tOWn')
149
        self.assertEqual(nrl('hit'), 'hIHt')
150
        self.assertEqual(nrl('sand'), 'sAEnd')
151
        self.assertEqual(nrl('doctor'), 'dAAktER')
152
        self.assertEqual(nrl('provide'), 'prAHvAYd')
153
        self.assertEqual(nrl('thus'), 'DHAHs')
154
        self.assertEqual(nrl('won\'t'), 'wOWnt')
155
        self.assertEqual(nrl('cook'), 'kUHk')
156
        self.assertEqual(nrl('bones'), 'bOWnz')
157
        self.assertEqual(nrl('tail'), 'tEYl')
158
        self.assertEqual(nrl('board'), 'bOWrd')
159
        self.assertEqual(nrl('modern'), 'mOWdERn')
160
        self.assertEqual(nrl('compound'), 'kAAmpAWnd')
161
        self.assertEqual(nrl('mine'), 'mAYn')
162
        self.assertEqual(nrl('wasn\'t'), 'wAAzAXnt')
163
        self.assertEqual(nrl('fit'), 'fIHt')
164
        self.assertEqual(nrl('addition'), 'AEddIHSHAXn')
165
        self.assertEqual(nrl('belong'), 'bIHlAONG')
166
        self.assertEqual(nrl('safe'), 'sEYf')
167
        self.assertEqual(nrl('soldiers'), 'sOWldIYERs')
168
        self.assertEqual(nrl('guess'), 'gEHs')
169
        self.assertEqual(nrl('silent'), 'sAYlEHnt')
170
        self.assertEqual(nrl('trade'), 'trEYd')
171
        self.assertEqual(nrl('rather'), 'rAEDHER')
172
        self.assertEqual(nrl('compare'), 'kAAmpEHr')
173
        self.assertEqual(nrl('crowd'), 'krOWd')
174
        self.assertEqual(nrl('poem'), 'pOWEHm')
175
        self.assertEqual(nrl('enjoy'), 'EHnjOY')
176
        self.assertEqual(nrl('elements'), 'IYlIYmEHntz')
177
        self.assertEqual(nrl('indicate'), 'IHndIHkEYt')
178
        self.assertEqual(nrl('except'), 'EHkssEHpt')
179
        self.assertEqual(nrl('expect'), 'EHkspEHkt')
180
        self.assertEqual(nrl('flat'), 'flAEt')
181
        self.assertEqual(nrl('seven'), 'sIYvEHn')
182
        self.assertEqual(nrl('interest'), 'IHntIYrEHst')
183
        self.assertEqual(nrl('sense'), 'sEHns')
184
        self.assertEqual(nrl('string'), 'strIHNG')
185
        self.assertEqual(nrl('blow'), 'blOW')
186
        self.assertEqual(nrl('famous'), 'fAEmAXs')
187
        self.assertEqual(nrl('value'), 'vAElUW')
188
        self.assertEqual(nrl('wings'), 'wIHNGz')
189
        self.assertEqual(nrl('movement'), 'mUWvIYmEHnt')
190
        self.assertEqual(nrl('pole'), 'pOWl')
191
        self.assertEqual(nrl('exciting'), 'EHkssAYtIHNG')
192
        self.assertEqual(nrl('branches'), 'brAEnCHIHz')
193
        self.assertEqual(nrl('thick'), 'THIHk')
194
        self.assertEqual(nrl('blood'), 'blUHd')
195
        self.assertEqual(nrl('lie'), 'lAY')
196
        self.assertEqual(nrl('spot'), 'spAAt')
197
        self.assertEqual(nrl('bell'), 'bEHl')
198
        self.assertEqual(nrl('fun'), 'fAHn')
199
        self.assertEqual(nrl('loud'), 'lAWd')
200
        self.assertEqual(nrl('consider'), 'kAAnsAYdER')
201
        self.assertEqual(nrl('suggested'), 'sAHgjEHstIHd')
202
        self.assertEqual(nrl('thin'), 'THIHn')
203
        self.assertEqual(nrl('position'), 'pAAzIHSHAXn')
204
        self.assertEqual(nrl('entered'), 'EHntIYrd')
205
        self.assertEqual(nrl('fruit'), 'frUWIHt')
206
        self.assertEqual(nrl('tied'), 'tAYd')
207
        self.assertEqual(nrl('rich'), 'rIHCH')
208
        self.assertEqual(nrl('dollars'), 'dAAlAArs')
209
        self.assertEqual(nrl('send'), 'sEHnd')
210
        self.assertEqual(nrl('sight'), 'sAYt')
211
        self.assertEqual(nrl('chief'), 'CHAYEHf')
212
        self.assertEqual(nrl('Japanese'), 'jAEpAEnIYz')
213
        self.assertEqual(nrl('stream'), 'strIYm')
214
        self.assertEqual(nrl('plants'), 'plAEntz')
215
        self.assertEqual(nrl('rhythm'), 'rIHTHm')
216
        self.assertEqual(nrl('eight'), 'EYt')
217
        self.assertEqual(nrl('science'), 'sAYEHns')
218
        self.assertEqual(nrl('major'), 'mAEjER')
219
        self.assertEqual(nrl('observe'), 'AAbsERv')
220
        self.assertEqual(nrl('tube'), 'tUWb')
221
        self.assertEqual(nrl('necessary'), 'nIYsEHsAArIH')
222
        self.assertEqual(nrl('weight'), 'wEYt')
223
        self.assertEqual(nrl('meat'), 'mIYt')
224
        self.assertEqual(nrl('lifted'), 'lIHftIHd')
225
        self.assertEqual(nrl('process'), 'prOWsEHs')
226
        self.assertEqual(nrl('army'), 'AArmIY')
227
        self.assertEqual(nrl('hat'), 'hAEt')
228
        self.assertEqual(nrl('property'), 'prOWpERtIH')
229
        self.assertEqual(nrl('particular'), 'pAArtIHkyUWlER')
230
        self.assertEqual(nrl('swim'), 'swIHm')
231
        self.assertEqual(nrl('terms'), 'tERmz')
232
        self.assertEqual(nrl('current'), 'kERrEHnt')
233
        self.assertEqual(nrl('park'), 'pAArk')
234
        self.assertEqual(nrl('sell'), 'sEHl')
235
        self.assertEqual(nrl('shoulder'), 'SHUHdER')
236
        self.assertEqual(nrl('industry'), 'IHndAHstrIH')
237
        self.assertEqual(nrl('wash'), 'wAASH')
238
        self.assertEqual(nrl('block'), 'blAAk')
239
        self.assertEqual(nrl('spread'), 'sprEHd')
240
        self.assertEqual(nrl('cattle'), 'kAEttl')
241
        self.assertEqual(nrl('wife'), 'wAYf')
242
        self.assertEqual(nrl('sharp'), 'SHAArp')
243
        self.assertEqual(nrl('company'), 'kAAmpAEnIH')
244
        self.assertEqual(nrl('radio'), 'rEYdIHOW')
245
        self.assertEqual(nrl('we\'ll'), 'wEHl')
246
        self.assertEqual(nrl('action'), 'AEkSHAXn')
247
        self.assertEqual(nrl('capital'), 'kAEpIHtAXl')
248
        self.assertEqual(nrl('factories'), 'fAEktAOrIYs')
249
        self.assertEqual(nrl('settled'), 'sEHttld')
250
        self.assertEqual(nrl('yellow'), 'yEHlOW')
251
        self.assertEqual(nrl('isn\'t'), 'IHzAXnt')
252
        self.assertEqual(nrl('southern'), 'sAWDHERn')
253
        self.assertEqual(nrl('truck'), 'trAHk')
254
        self.assertEqual(nrl('train'), 'trEYn')
255
        self.assertEqual(nrl('printed'), 'prIHntIHd')
256
        self.assertEqual(nrl('wouldn\'t'), 'wUHdnt')
257
        self.assertEqual(nrl('ahead'), 'EYhEHd')
258
        self.assertEqual(nrl('chance'), 'CHAEns')
259
        self.assertEqual(nrl('born'), 'bAOrn')
260
        self.assertEqual(nrl('level'), 'lIYvEHl')
261
        self.assertEqual(nrl('triangle'), 'trIHAENGgAXl')
262
        self.assertEqual(nrl('molecules'), 'mOWlEHkyUWlz')
263
        self.assertEqual(nrl('France'), 'frAEns')
264
        self.assertEqual(nrl('repeated'), 'rIYpIYtIHd')
265
        self.assertEqual(nrl('column'), 'kAAlAHmn')
266
        self.assertEqual(nrl('western'), 'wEHstERn')
267
        self.assertEqual(nrl('church'), 'CHERCH')
268
        self.assertEqual(nrl('sister'), 'sIHstER')
269
        self.assertEqual(nrl('oxygen'), 'AAksIHjEHn')
270
        self.assertEqual(nrl('plural'), 'plUHrAXl')
271
        self.assertEqual(nrl('various'), 'vEHrIHAXs')
272
        self.assertEqual(nrl('agreed'), 'AEgrIYd')
273
        self.assertEqual(nrl('opposite'), 'AAppAAzAYt')
274
        self.assertEqual(nrl('wrong'), 'rAONG')
275
        self.assertEqual(nrl('chart'), 'CHAArt')
276
        self.assertEqual(nrl('prepared'), 'prEHpEHrd')
277
        self.assertEqual(nrl('pretty'), 'prEHttIH')
278
        self.assertEqual(nrl('solution'), 'sAAlUWSHAXn')
279
        self.assertEqual(nrl('fresh'), 'frEHSH')
280
        self.assertEqual(nrl('shop'), 'SHAAp')
281
        self.assertEqual(nrl('suffix'), 'sAHffIHks')
282
        self.assertEqual(nrl('especially'), 'EHspEHSHAXlIY')
283
        self.assertEqual(nrl('shoes'), 'SHOWz')
284
        self.assertEqual(nrl('actually'), 'AEkCHUWAXlIY')
285
        self.assertEqual(nrl('nose'), 'nOWz')
286
        self.assertEqual(nrl('afraid'), 'AEfrEYd')
287
        self.assertEqual(nrl('dead'), 'dEHd')
288
        self.assertEqual(nrl('sugar'), 'sUWgER')
289
        self.assertEqual(nrl('adjective'), 'AEdjEHktAYv')
290
        self.assertEqual(nrl('fig'), 'fIHg')
291
        self.assertEqual(nrl('office'), 'AOffIHs')
292
        self.assertEqual(nrl('huge'), 'hyUWj')
293
        self.assertEqual(nrl('gun'), 'gAHn')
294
        self.assertEqual(nrl('similar'), 'sIHmIHlER')
295
        self.assertEqual(nrl('death'), 'dIYTH')
296
        self.assertEqual(nrl('score'), 'skAOr')
297
        self.assertEqual(nrl('forward'), 'fAOrwAOrd')
298
        self.assertEqual(nrl('stretched'), 'strEHtCHd')
299
        self.assertEqual(nrl('experience'), 'EHkspIYrIYEHns')
300
        self.assertEqual(nrl('rose'), 'rOWz')
301
        self.assertEqual(nrl('allow'), 'AOlOW')
302
        self.assertEqual(nrl('fear'), 'fIYr')
303
        self.assertEqual(nrl('workers'), 'wERkERs')
304
        self.assertEqual(nrl('Washington'), 'wAASHIHNGtAXn')
305
        self.assertEqual(nrl('Greek'), 'grIYk')
306
        self.assertEqual(nrl('women'), 'wOWmEHn')
307
        self.assertEqual(nrl('brought'), 'brAOt')
308
        self.assertEqual(nrl('led'), 'lEHd')
309
        self.assertEqual(nrl('march'), 'mAArCH')
310
        self.assertEqual(nrl('northern'), 'nAOrDHERn')
311
        self.assertEqual(nrl('create'), 'krIYt')
312
        self.assertEqual(nrl('British'), 'brAYtIHSH')
313
        self.assertEqual(nrl('difficult'), 'dIHffIHkAHlt')
314
        self.assertEqual(nrl('match'), 'mAEtCH')
315
        self.assertEqual(nrl('win'), 'wIHn')
316
        self.assertEqual(nrl('doesn\'t'), 'dAHznt')
317
        self.assertEqual(nrl('steel'), 'stIYl')
318
        self.assertEqual(nrl('total'), 'tAAtAXl')
319
        self.assertEqual(nrl('deal'), 'dIYl')
320
        self.assertEqual(nrl('determine'), 'dIHtERmAYn')
321
        self.assertEqual(nrl('evening'), 'IYvIYnIHNG')
322
        self.assertEqual(nrl('nor'), 'nAOr')
323
        self.assertEqual(nrl('rope'), 'rOWp')
324
        self.assertEqual(nrl('cotton'), 'kAAttAXn')
325
        self.assertEqual(nrl('apple'), 'AEppAXl')
326
        self.assertEqual(nrl('details'), 'dIHtEYlz')
327
        self.assertEqual(nrl('entire'), 'EHntAYr')
328
        self.assertEqual(nrl('corn'), 'kAOrn')
329
        self.assertEqual(nrl('substances'), 'sAHbstAEnsIHz')
330
        self.assertEqual(nrl('smell'), 'smEHl')
331
        self.assertEqual(nrl('tools'), 'tUWlz')
332
        self.assertEqual(nrl('conditions'), 'kAAndIHSHAXnz')
333
        self.assertEqual(nrl('cows'), 'kOWz')
334
        self.assertEqual(nrl('track'), 'trAEk')
335
        self.assertEqual(nrl('arrived'), 'AXrIHvd')
336
        self.assertEqual(nrl('located'), 'lOWkEYtIHd')
337
        self.assertEqual(nrl('sir'), 'sER')
338
        self.assertEqual(nrl('seat'), 'sIYt')
339
        self.assertEqual(nrl('division'), 'dIHvIHZHAXn')
340
        self.assertEqual(nrl('effect'), 'EHffEHkt')
341
        self.assertEqual(nrl('underline'), 'AHndERlAYn')
342
        self.assertEqual(nrl('view'), 'vyUW')
343
344
        # non-English words (with letters not used in English)
345
        self.assertEqual(nrl('garçon'), 'gAArÇAAn')
346
        self.assertEqual(nrl('ðæt'), 'ÐÆt')
347
        self.assertEqual(nrl('wünschen'), 'wÜnsCHEHn')
348
        self.assertEqual(nrl('øl'), 'Øl')
349
350
351
if __name__ == '__main__':
352
    unittest.main()
353