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

tests.phonetic.test_phonetic_es.SpanishMetaphoneTestCases.test_spanish_metaphone()   B

Complexity

Conditions 1

Size

Total Lines 139
Code Lines 127

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 127
nop 1
dl 0
loc 139
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_es.
20
21
This module contains unit tests for abydos.phonetic.es
22
"""
23
24
from __future__ import unicode_literals
25
26
import unittest
27
28
from abydos.phonetic.es import phonetic_spanish, spanish_metaphone
29
30
31
class PhoneticSpanishTestCases(unittest.TestCase):
32
    """Test PhoneticSpanish functions.
33
34
    test cases for abydos.phonetic.phonetic_spanish
35
    """
36
37
    def test_phonetic_spanish(self):
38
        """Test abydos.phonetic.phonetic_spanish."""
39
        # Base case
40
        self.assertEqual(phonetic_spanish(''), '')
41
42
        # Examples given in
43
        self.assertEqual(phonetic_spanish('Giraldo'), '8953')
44
        self.assertEqual(phonetic_spanish('Jiraldo'), '8953')
45
        self.assertEqual(phonetic_spanish('Halla'), '25')
46
        self.assertEqual(phonetic_spanish('Haya'), '25')
47
        self.assertEqual(phonetic_spanish('Cielo'), '45')
48
        self.assertEqual(phonetic_spanish('Sielo'), '45')
49
50
        # Test to maximize coverage
51
        self.assertEqual(phonetic_spanish('Giraldo', max_length=2), '89')
52
53
54
class SpanishMetaphoneTestCases(unittest.TestCase):
55
    """Test Spanish Metaphone functions.
56
57
    test cases for abydos.phonetic.spanish_metaphone
58
    """
59
60
    def test_spanish_metaphone(self):
61
        """Test abydos.phonetic.spanish_metaphone."""
62
        # Base case
63
        self.assertEqual(spanish_metaphone(''), '')
64
65
        # Examples given in
66
        # https://github.com/amsqr/Spanish-Metaphone/blob/master/phonetic_algorithms_es.py
67
        self.assertEqual(spanish_metaphone('X'), 'X')
68
        self.assertEqual(spanish_metaphone('xplosion'), 'EXPLSN')
69
        self.assertEqual(spanish_metaphone('escalera'), 'ESKLR')
70
        self.assertEqual(spanish_metaphone('scalera'), 'ESKLR')
71
        self.assertEqual(spanish_metaphone('mi'), 'M')
72
        self.assertEqual(spanish_metaphone('tu'), 'T')
73
        self.assertEqual(spanish_metaphone('su'), 'S')
74
        self.assertEqual(spanish_metaphone('te'), 'T')
75
        self.assertEqual(spanish_metaphone('ochooomiiiillllllll'), 'OXMYY')
76
        self.assertEqual(spanish_metaphone('complicado'), 'KMPLKD')
77
        self.assertEqual(spanish_metaphone('ácaro'), 'AKR')
78
        self.assertEqual(spanish_metaphone('ácido'), 'AZD')
79
        self.assertEqual(spanish_metaphone('clown'), 'KLUN')
80
        self.assertEqual(spanish_metaphone('down'), 'DUN')
81
        self.assertEqual(spanish_metaphone('col'), 'KL')
82
        self.assertEqual(spanish_metaphone('clon'), 'KLN')
83
        self.assertEqual(spanish_metaphone('waterpolo'), 'UTRPL')
84
        self.assertEqual(spanish_metaphone('aquino'), 'AKN')
85
        self.assertEqual(spanish_metaphone('rebosar'), 'RVSR')
86
        self.assertEqual(spanish_metaphone('rebozar'), 'RVZR')
87
        self.assertEqual(spanish_metaphone('grajea'), 'GRJ')
88
        self.assertEqual(spanish_metaphone('gragea'), 'GRJ')
89
        self.assertEqual(spanish_metaphone('encima'), 'ENZM')
90
        self.assertEqual(spanish_metaphone('enzima'), 'ENZM')
91
        self.assertEqual(spanish_metaphone('alhamar'), 'ALAMR')
92
        self.assertEqual(spanish_metaphone('abollar'), 'AVYR')
93
        self.assertEqual(spanish_metaphone('aboyar'), 'AVYR')
94
        self.assertEqual(spanish_metaphone('huevo'), 'UV')
95
        self.assertEqual(spanish_metaphone('webo'), 'UV')
96
        self.assertEqual(spanish_metaphone('macho'), 'MX')
97
        self.assertEqual(spanish_metaphone('xocolate'), 'XKLT')
98
        self.assertEqual(spanish_metaphone('chocolate'), 'XKLT')
99
        self.assertEqual(spanish_metaphone('axioma'), 'AXM')
100
        self.assertEqual(spanish_metaphone('abedul'), 'AVDL')
101
        self.assertEqual(spanish_metaphone('a'), 'A')
102
        self.assertEqual(spanish_metaphone('gengibre'), 'JNJVR')
103
        self.assertEqual(spanish_metaphone('yema'), 'YM')
104
        self.assertEqual(spanish_metaphone('wHISKY'), 'UISKY')
105
        self.assertEqual(spanish_metaphone('google'), 'GGL')
106
        self.assertEqual(spanish_metaphone('xilófono'), 'XLFN')
107
        self.assertEqual(spanish_metaphone('web'), 'UV')
108
        self.assertEqual(spanish_metaphone('guerra'), 'GRR')
109
        self.assertEqual(spanish_metaphone('pingüino'), 'PNUN')
110
        self.assertEqual(spanish_metaphone('si'), 'S')
111
        self.assertEqual(spanish_metaphone('ke'), 'K')
112
        self.assertEqual(spanish_metaphone('que'), 'K')
113
        self.assertEqual(spanish_metaphone('tu'), 'T')
114
        self.assertEqual(spanish_metaphone('gato'), 'GT')
115
        self.assertEqual(spanish_metaphone('gitano'), 'JTN')
116
        self.assertEqual(spanish_metaphone('queso'), 'KS')
117
        self.assertEqual(spanish_metaphone('paquete'), 'PKT')
118
        self.assertEqual(spanish_metaphone('cuco'), 'KK')
119
        self.assertEqual(spanish_metaphone('perro'), 'PRR')
120
        self.assertEqual(spanish_metaphone('pero'), 'PR')
121
        self.assertEqual(spanish_metaphone('arrebato'), 'ARRVT')
122
        self.assertEqual(spanish_metaphone('hola'), 'OL')
123
        self.assertEqual(spanish_metaphone('zapato'), 'ZPT')
124
        self.assertEqual(spanish_metaphone('españa'), 'ESPNY')
125
        self.assertEqual(spanish_metaphone('garrulo'), 'GRRL')
126
        self.assertEqual(spanish_metaphone('expansión'), 'EXPNSN')
127
        self.assertEqual(spanish_metaphone('membrillo'), 'MMVRY')
128
        self.assertEqual(spanish_metaphone('jamón'), 'JMN')
129
        self.assertEqual(spanish_metaphone('risa'), 'RS')
130
        self.assertEqual(spanish_metaphone('caricia'), 'KRZ')
131
        self.assertEqual(spanish_metaphone('llaves'), 'YVS')
132
        self.assertEqual(spanish_metaphone('paella'), 'PY')
133
        self.assertEqual(spanish_metaphone('cerilla'), 'ZRY')
134
135
        # tests from file:///home/chrislit/Downloads/ICTRS_2016_12.pdf
136
        # including of the modified version of the algorithm
137
        self.assertEqual(spanish_metaphone('Caricia'), 'KRZ')
138
        self.assertEqual(spanish_metaphone('Caricia', modified=True), 'KRZ')
139
        self.assertEqual(spanish_metaphone('Llaves'), 'YVS')
140
        self.assertEqual(spanish_metaphone('Llaves', modified=True), 'YVZ')
141
        self.assertEqual(spanish_metaphone('Paella'), 'PY')
142
        self.assertEqual(spanish_metaphone('Paella', modified=True), 'PY')
143
        self.assertEqual(spanish_metaphone('Cerilla'), 'ZRY')
144
        self.assertEqual(spanish_metaphone('Cerilla', modified=True), 'ZRY')
145
        self.assertEqual(spanish_metaphone('Empeorar'), 'EMPRR')
146
        self.assertEqual(spanish_metaphone('Empeorar', modified=True), 'ENPRR')
147
        self.assertEqual(spanish_metaphone('Embotellar'), 'EMVTYR')
148
        self.assertEqual(spanish_metaphone('Embotellar', modified=True),
149
                         'ENVTYR')
150
        self.assertEqual(spanish_metaphone('Hoy'), 'OY')
151
        self.assertEqual(spanish_metaphone('Hoy', modified=True), 'OY')
152
        self.assertEqual(spanish_metaphone('Xochimilco'), 'XXMLK')
153
        self.assertEqual(spanish_metaphone('Xochimilco', modified=True),
154
                         'XXMLK')
155
        self.assertEqual(spanish_metaphone('Psiquiatra'), 'PSKTR')
156
        self.assertEqual(spanish_metaphone('Psiquiatra', modified=True),
157
                         'ZKTR')
158
        self.assertEqual(spanish_metaphone('siquiatra'), 'SKTR')
159
        self.assertEqual(spanish_metaphone('siquiatra', modified=True), 'ZKTR')
160
        self.assertEqual(spanish_metaphone('Obscuro'), 'OVSKR')
161
        self.assertEqual(spanish_metaphone('Obscuro', modified=True), 'OZKR')
162
        self.assertEqual(spanish_metaphone('Oscuro'), 'OSKR')
163
        self.assertEqual(spanish_metaphone('Oscuro', modified=True), 'OZKR')
164
        self.assertEqual(spanish_metaphone('Combate'), 'KMVT')
165
        self.assertEqual(spanish_metaphone('Combate', modified=True), 'KNVT')
166
        self.assertEqual(spanish_metaphone('Convate'), 'KNVT')
167
        self.assertEqual(spanish_metaphone('Convate', modified=True), 'KNVT')
168
        self.assertEqual(spanish_metaphone('Conbate'), 'KNVT')
169
        self.assertEqual(spanish_metaphone('Conbate', modified=True), 'KNVT')
170
        self.assertEqual(spanish_metaphone('Comportar'), 'KMPRTR')
171
        self.assertEqual(spanish_metaphone('Comportar', modified=True),
172
                         'KNPRTR')
173
        self.assertEqual(spanish_metaphone('Conportar'), 'KNPRTR')
174
        self.assertEqual(spanish_metaphone('Conportar', modified=True),
175
                         'KNPRTR')
176
        self.assertEqual(spanish_metaphone('Zapato'), 'ZPT')
177
        self.assertEqual(spanish_metaphone('Zapato', modified=True), 'ZPT')
178
        self.assertEqual(spanish_metaphone('Sapato'), 'SPT')
179
        self.assertEqual(spanish_metaphone('Sapato', modified=True), 'ZPT')
180
        self.assertEqual(spanish_metaphone('Escalera'), 'ESKLR')
181
        self.assertEqual(spanish_metaphone('Escalera', modified=True), 'EZKLR')
182
        self.assertEqual(spanish_metaphone('scalera'), 'ESKLR')
183
        self.assertEqual(spanish_metaphone('scalera', modified=True), 'EZKLR')
184
185
        # terms from algorithm/source
186
        self.assertEqual(spanish_metaphone('acción'), 'AXN')
187
        self.assertEqual(spanish_metaphone('reacción'), 'RXN')
188
        self.assertEqual(spanish_metaphone('cesar'), 'ZSR')
189
        self.assertEqual(spanish_metaphone('cien'), 'ZN')
190
        self.assertEqual(spanish_metaphone('cid'), 'ZD')
191
        self.assertEqual(spanish_metaphone('conciencia'), 'KNZNZ')
192
        self.assertEqual(spanish_metaphone('gente'), 'JNT')
193
        self.assertEqual(spanish_metaphone('ecologia'), 'EKLJ')
194
195
        # completing coverage
196
        self.assertEqual(spanish_metaphone('hola'), 'OL')
197
        self.assertEqual(spanish_metaphone('aqi'), 'AK')
198
        self.assertEqual(spanish_metaphone('hjordis'), 'HJRDS')
199
200
201
if __name__ == '__main__':
202
    unittest.main()
203