From 20f634028dd97b29eee4768a70f5230c3e17b7a5 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Tue, 22 Nov 2016 09:13:18 -0500 Subject: [PATCH] Convert to single codebase for py2 and py3 No more 2to3. Also, added tox config for easy cross-python testing. --- .gitignore | 3 +- num2words/base.py | 29 ++-- num2words/compat.py | 26 ++++ num2words/lang_DE.py | 10 +- num2words/lang_DK.py | 6 +- num2words/lang_EN.py | 16 ++- num2words/lang_EN_GB.py | 10 +- num2words/lang_ES.py | 8 +- num2words/lang_FR.py | 6 +- num2words/lang_FR_CH.py | 6 +- num2words/lang_ID.py | 8 +- num2words/lang_NO.py | 16 ++- setup.py | 1 - tests/test_pt_BR.py | 312 ++++++++++++++++++++-------------------- tox.ini | 5 + 15 files changed, 256 insertions(+), 206 deletions(-) create mode 100644 num2words/compat.py create mode 100644 tox.ini diff --git a/.gitignore b/.gitignore index f3a9967..d578da0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.pyc build dist -*.egg-info \ No newline at end of file +*.egg-info +/.tox diff --git a/num2words/base.py b/num2words/base.py index 72577b3..272d5bb 100644 --- a/num2words/base.py +++ b/num2words/base.py @@ -15,7 +15,11 @@ # MA 02110-1301 USA from __future__ import unicode_literals + +import math + from .orderedmapping import OrderedMapping +from .compat import to_s class Num2Word_Base(object): @@ -88,7 +92,7 @@ class Num2Word_Base(object): def to_cardinal(self, value): try: - assert long(value) == value + assert int(value) == value except (ValueError, TypeError, AssertionError): return self.to_cardinal_float(value) @@ -113,9 +117,18 @@ class Num2Word_Base(object): except (ValueError, TypeError, AssertionError): raise TypeError(self.errmsg_nonnum % value) + value = float(value) pre = int(value) - post = str(abs(value - pre) * 10**self.precision) - post = '0' * (self.precision - len(post.split('.')[0])) + post + post = abs(value - pre) * 10**self.precision + if abs(round(post) - post) < 0.01: + # We generally floor all values beyond our precision (rather than rounding), but in + # cases where we have something like 1.239999999, which is probably due to python's + # handling of floats, we actually want to consider it as 1.24 instead of 1.23 + post = int(round(post)) + else: + post = int(math.floor(post)) + post = str(post) + post = '0' * (self.precision - len(post)) + post out = [self.to_cardinal(pre)] if self.precision: @@ -123,7 +136,7 @@ class Num2Word_Base(object): for i in range(self.precision): curr = int(post[i]) - out.append(unicode(self.to_cardinal(curr))) + out.append(to_s(self.to_cardinal(curr))) return " ".join(out) @@ -168,10 +181,10 @@ class Num2Word_Base(object): def verify_ordinal(self, value): - if not value == long(value): - raise TypeError, self.errmsg_floatord %(value) + if not value == int(value): + raise TypeError(self.errmsg_floatord % value) if not abs(value) == value: - raise TypeError, self.errmsg_negord %(value) + raise TypeError(self.errmsg_negord % value) def verify_num(self, value): @@ -181,7 +194,7 @@ class Num2Word_Base(object): def set_wordnums(self): pass - + def to_ordinal(self, value): return self.to_cardinal(value) diff --git a/num2words/compat.py b/num2words/compat.py new file mode 100644 index 0000000..7395f4c --- /dev/null +++ b/num2words/compat.py @@ -0,0 +1,26 @@ +# Copyright (c) 2003, Taro Ogawa. All Rights Reserved. +# Copyright (c) 2016, Savoir-faire Linux inc. All Rights Reserved. + +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA + +import sys + +PY3 = sys.version_info[0] == 3 + +def to_s(val): + if PY3: + return str(val) + else: + return unicode(val) + diff --git a/num2words/lang_DE.py b/num2words/lang_DE.py index 252ccb7..1c2fa0f 100644 --- a/num2words/lang_DE.py +++ b/num2words/lang_DE.py @@ -15,7 +15,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA -from __future__ import unicode_literals +from __future__ import unicode_literals, print_function from .lang_EU import Num2Word_EU class Num2Word_DE(Num2Word_EU): @@ -133,10 +133,10 @@ def main(): n2w.test(3000000) n2w.test(3000000000001) n2w.test(3000000324566) - print n2w.to_currency(112121) - print n2w.to_year(2000) - print n2w.to_year(1820) - print n2w.to_year(2001) + print(n2w.to_currency(112121)) + print(n2w.to_year(2000)) + print(n2w.to_year(1820)) + print(n2w.to_year(2001)) if __name__ == "__main__": main() diff --git a/num2words/lang_DK.py b/num2words/lang_DK.py index bc88c06..64cf793 100644 --- a/num2words/lang_DK.py +++ b/num2words/lang_DK.py @@ -14,7 +14,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA -from __future__ import division, unicode_literals +from __future__ import division, unicode_literals, print_function from num2words import lang_EU class Num2Word_DK(lang_EU.Num2Word_EU): @@ -146,8 +146,8 @@ def main(): n2w.test(val) n2w.test(1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730) for val in [1,120, 160, 1000,1120,1800, 1976,2000,2010,2099,2171]: - print val, "er", n2w.to_currency(val) - print val, "er", n2w.to_year(val) + print(val, "er", n2w.to_currency(val)) + print(val, "er", n2w.to_year(val)) n2w.test(65132) if __name__ == "__main__": diff --git a/num2words/lang_EN.py b/num2words/lang_EN.py index 54646f5..656abfc 100644 --- a/num2words/lang_EN.py +++ b/num2words/lang_EN.py @@ -14,7 +14,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA -from __future__ import division, unicode_literals +from __future__ import division, unicode_literals, print_function from . import lang_EU class Num2Word_EN(lang_EU.Num2Word_EU): @@ -47,7 +47,9 @@ class Num2Word_EN(lang_EU.Num2Word_EU): "twelve" : "twelfth" } - def merge(self, (ltext, lnum), (rtext, rnum)): + def merge(self, lpair, rpair): + ltext, lnum = lpair + rtext, rnum = rpair if lnum == 1 and rnum < 100: return (rtext, rnum) elif 100 > lnum > rnum : @@ -68,9 +70,9 @@ class Num2Word_EN(lang_EU.Num2Word_EU): lastword = self.ords[lastword] except KeyError: if lastword[-1] == "y": - lastword = lastword[:-1] + "ie" + lastword = lastword[:-1] + "ie" lastword += "th" - lastwords[-1] = self.title(lastword) + lastwords[-1] = self.title(lastword) outwords[-1] = "-".join(lastwords) return " ".join(outwords) @@ -105,9 +107,9 @@ def main(): n2w.test(val) n2w.test(1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730) for val in [1,120,1000,1120,1800, 1976,2000,2010,2099,2171]: - print val, "is", n2w.to_currency(val) - print val, "is", n2w.to_year(val) - + print(val, "is", n2w.to_currency(val)) + print(val, "is", n2w.to_year(val)) + if __name__ == "__main__": main() diff --git a/num2words/lang_EN_GB.py b/num2words/lang_EN_GB.py index 568594d..a01c41a 100644 --- a/num2words/lang_EN_GB.py +++ b/num2words/lang_EN_GB.py @@ -14,10 +14,10 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA -from __future__ import unicode_literals +from __future__ import unicode_literals, print_function from .lang_EN import Num2Word_EN - + class Num2Word_EN_GB(Num2Word_EN): def to_currency(self, val, longval=True): return self.to_splitnum(val, hightxt="pound/s", lowtxt="pence", @@ -38,9 +38,9 @@ def main(): n2w.test(val) n2w.test(1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730) for val in [1,120,1000,1120,1800, 1976,2000,2010,2099,2171]: - print val, "is", n2w.to_currency(val) - print val, "is", n2w.to_year(val) - + print(val, "is", n2w.to_currency(val)) + print(val, "is", n2w.to_year(val)) + if __name__ == "__main__": main() diff --git a/num2words/lang_ES.py b/num2words/lang_ES.py index 71103a8..c010d52 100644 --- a/num2words/lang_ES.py +++ b/num2words/lang_ES.py @@ -16,7 +16,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA -from __future__ import unicode_literals +from __future__ import unicode_literals, print_function from .lang_EU import Num2Word_EU class Num2Word_ES(Num2Word_EU): @@ -173,9 +173,9 @@ def main(): n2w.test(val) n2w.test(1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730) - print n2w.to_currency(1222) - print n2w.to_currency(1222, old=True) - print n2w.to_year(1222) + print(n2w.to_currency(1222)) + print(n2w.to_currency(1222, old=True)) + print(n2w.to_year(1222)) if __name__ == "__main__": main() diff --git a/num2words/lang_FR.py b/num2words/lang_FR.py index a4e0f6a..1209eab 100644 --- a/num2words/lang_FR.py +++ b/num2words/lang_FR.py @@ -15,7 +15,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA -from __future__ import unicode_literals +from __future__ import unicode_literals, print_function from .lang_EU import Num2Word_EU @@ -106,8 +106,8 @@ def main(): n2w.test(val) n2w.test(1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730) - print n2w.to_currency(112121) - print n2w.to_year(1996) + print(n2w.to_currency(112121)) + print(n2w.to_year(1996)) if __name__ == "__main__": diff --git a/num2words/lang_FR_CH.py b/num2words/lang_FR_CH.py index b2130eb..b6d40a0 100644 --- a/num2words/lang_FR_CH.py +++ b/num2words/lang_FR_CH.py @@ -15,7 +15,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA -from __future__ import unicode_literals +from __future__ import unicode_literals, print_function from .lang_EU import Num2Word_EU class Num2Word_FR_CH(Num2Word_EU): @@ -101,8 +101,8 @@ def main(): n2w.test(val) n2w.test(1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730) - print n2w.to_currency(112121) - print n2w.to_year(1996) + print(n2w.to_currency(112121)) + print(n2w.to_year(1996)) if __name__ == "__main__": diff --git a/num2words/lang_ID.py b/num2words/lang_ID.py index ee07065..9437db7 100644 --- a/num2words/lang_ID.py +++ b/num2words/lang_ID.py @@ -14,6 +14,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA +from __future__ import unicode_literals, print_function + class Num2Word_ID(): BASE = {0: [], @@ -188,7 +190,7 @@ class Num2Word_ID(): return self.to_cardinal(value) def verify_ordinal(self, value): - if not value == long(value): - raise TypeError, self.errmsg_floatord %(value) + if not value == int(value): + raise TypeError(self.errmsg_floatord % value) if not abs(value) == value: - raise TypeError, self.errmsg_negord %(value) + raise TypeError(self.errmsg_negord % value) diff --git a/num2words/lang_NO.py b/num2words/lang_NO.py index 273622b..2c744e1 100644 --- a/num2words/lang_NO.py +++ b/num2words/lang_NO.py @@ -14,7 +14,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA -from __future__ import division, unicode_literals +from __future__ import division, unicode_literals, print_function from . import lang_EU class Num2Word_NO(lang_EU.Num2Word_EU): @@ -54,7 +54,9 @@ class Num2Word_NO(lang_EU.Num2Word_EU): "tjue" : "tjuende" } - def merge(self, (ltext, lnum), (rtext, rnum)): + def merge(self, lpair, rpair): + ltext, lnum = lpair + rtext, rnum = rpair if lnum == 1 and rnum < 100: return (rtext, rnum) elif 100 > lnum > rnum : @@ -75,10 +77,10 @@ class Num2Word_NO(lang_EU.Num2Word_EU): lastword = self.ords[lastword] except KeyError: if lastword[-2:] == "ti": - lastword = lastword + "ende" + lastword = lastword + "ende" else: lastword += "de" - lastwords[-1] = self.title(lastword) + lastwords[-1] = self.title(lastword) outwords[-1] = "".join(lastwords) return " ".join(outwords) @@ -113,9 +115,9 @@ def main(): n2w.test(val) n2w.test(1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730) for val in [1,120,1000,1120,1800, 1976,2000,2010,2099,2171]: - print val, "er", n2w.to_currency(val) - print val, "er", n2w.to_year(val) - + print(val, "er", n2w.to_currency(val)) + print(val, "er", n2w.to_year(val)) + if __name__ == "__main__": main() diff --git a/setup.py b/setup.py index b842523..ab6aaf2 100644 --- a/setup.py +++ b/setup.py @@ -29,5 +29,4 @@ setup( url='https://github.com/savoirfairelinux/num2words', packages=find_packages(exclude=['tests']), test_suite='tests', - use_2to3=True, ) diff --git a/tests/test_pt_BR.py b/tests/test_pt_BR.py index 9a82481..a681d91 100644 --- a/tests/test_pt_BR.py +++ b/tests/test_pt_BR.py @@ -29,191 +29,191 @@ class Num2WordsPTBRTest(TestCase): self.n2w = Num2Word_PT_BR() def test_cardinal_integer(self): - self.assertEquals(num2words(1, lang='pt_BR'), 'um') - self.assertEquals(num2words(2, lang='pt_BR'), 'dois') - self.assertEquals(num2words(3, lang='pt_BR'), 'três') - self.assertEquals(num2words(4, lang='pt_BR'), 'quatro') - self.assertEquals(num2words(5, lang='pt_BR'), 'cinco') - self.assertEquals(num2words(6, lang='pt_BR'), 'seis') - self.assertEquals(num2words(7, lang='pt_BR'), 'sete') - self.assertEquals(num2words(8, lang='pt_BR'), 'oito') - self.assertEquals(num2words(9, lang='pt_BR'), 'nove') - self.assertEquals(num2words(10, lang='pt_BR'), 'dez') - self.assertEquals(num2words(11, lang='pt_BR'), 'onze') - self.assertEquals(num2words(12, lang='pt_BR'), 'doze') - self.assertEquals(num2words(13, lang='pt_BR'), 'treze') - self.assertEquals(num2words(14, lang='pt_BR'), 'catorze') - self.assertEquals(num2words(15, lang='pt_BR'), 'quinze') - self.assertEquals(num2words(16, lang='pt_BR'), 'dezesseis') - self.assertEquals(num2words(17, lang='pt_BR'), 'dezessete') - self.assertEquals(num2words(18, lang='pt_BR'), 'dezoito') - self.assertEquals(num2words(19, lang='pt_BR'), 'dezenove') - self.assertEquals(num2words(20, lang='pt_BR'), 'vinte') + self.assertEqual(num2words(1, lang='pt_BR'), 'um') + self.assertEqual(num2words(2, lang='pt_BR'), 'dois') + self.assertEqual(num2words(3, lang='pt_BR'), 'três') + self.assertEqual(num2words(4, lang='pt_BR'), 'quatro') + self.assertEqual(num2words(5, lang='pt_BR'), 'cinco') + self.assertEqual(num2words(6, lang='pt_BR'), 'seis') + self.assertEqual(num2words(7, lang='pt_BR'), 'sete') + self.assertEqual(num2words(8, lang='pt_BR'), 'oito') + self.assertEqual(num2words(9, lang='pt_BR'), 'nove') + self.assertEqual(num2words(10, lang='pt_BR'), 'dez') + self.assertEqual(num2words(11, lang='pt_BR'), 'onze') + self.assertEqual(num2words(12, lang='pt_BR'), 'doze') + self.assertEqual(num2words(13, lang='pt_BR'), 'treze') + self.assertEqual(num2words(14, lang='pt_BR'), 'catorze') + self.assertEqual(num2words(15, lang='pt_BR'), 'quinze') + self.assertEqual(num2words(16, lang='pt_BR'), 'dezesseis') + self.assertEqual(num2words(17, lang='pt_BR'), 'dezessete') + self.assertEqual(num2words(18, lang='pt_BR'), 'dezoito') + self.assertEqual(num2words(19, lang='pt_BR'), 'dezenove') + self.assertEqual(num2words(20, lang='pt_BR'), 'vinte') - self.assertEquals(num2words(21, lang='pt_BR'), 'vinte e um') - self.assertEquals(num2words(22, lang='pt_BR'), 'vinte e dois') - self.assertEquals(num2words(35, lang='pt_BR'), 'trinta e cinco') - self.assertEquals(num2words(99, lang='pt_BR'), 'noventa e nove') + self.assertEqual(num2words(21, lang='pt_BR'), 'vinte e um') + self.assertEqual(num2words(22, lang='pt_BR'), 'vinte e dois') + self.assertEqual(num2words(35, lang='pt_BR'), 'trinta e cinco') + self.assertEqual(num2words(99, lang='pt_BR'), 'noventa e nove') - self.assertEquals(num2words(100, lang='pt_BR'), 'cem') - self.assertEquals(num2words(101, lang='pt_BR'), 'cento e um') - self.assertEquals(num2words(128, lang='pt_BR'), 'cento e vinte e oito') - self.assertEquals(num2words(713, lang='pt_BR'), 'setecentos e treze') + self.assertEqual(num2words(100, lang='pt_BR'), 'cem') + self.assertEqual(num2words(101, lang='pt_BR'), 'cento e um') + self.assertEqual(num2words(128, lang='pt_BR'), 'cento e vinte e oito') + self.assertEqual(num2words(713, lang='pt_BR'), 'setecentos e treze') - self.assertEquals(num2words(1000, lang='pt_BR'), 'mil') - self.assertEquals(num2words(1001, lang='pt_BR'), 'mil e um') - self.assertEquals(num2words(1111, lang='pt_BR'), 'mil, cento e onze') - self.assertEquals(num2words(2114, lang='pt_BR'), 'dois mil, cento e catorze') - self.assertEquals(num2words(73421, lang='pt_BR'), 'setenta e três mil, quatrocentos e vinte e um') + self.assertEqual(num2words(1000, lang='pt_BR'), 'mil') + self.assertEqual(num2words(1001, lang='pt_BR'), 'mil e um') + self.assertEqual(num2words(1111, lang='pt_BR'), 'mil, cento e onze') + self.assertEqual(num2words(2114, lang='pt_BR'), 'dois mil, cento e catorze') + self.assertEqual(num2words(73421, lang='pt_BR'), 'setenta e três mil, quatrocentos e vinte e um') - self.assertEquals(num2words(100000, lang='pt_BR'), 'cem mil') - self.assertEquals(num2words(250050, lang='pt_BR'), 'duzentos e cinquenta mil e cinquenta') - self.assertEquals(num2words(6000000, lang='pt_BR'), 'seis milhões') - self.assertEquals(num2words(19000000000, lang='pt_BR'), 'dezenove bilhões') - self.assertEquals(num2words(145000000002, lang='pt_BR'), 'cento e quarenta e cinco bilhões e dois') + self.assertEqual(num2words(100000, lang='pt_BR'), 'cem mil') + self.assertEqual(num2words(250050, lang='pt_BR'), 'duzentos e cinquenta mil e cinquenta') + self.assertEqual(num2words(6000000, lang='pt_BR'), 'seis milhões') + self.assertEqual(num2words(19000000000, lang='pt_BR'), 'dezenove bilhões') + self.assertEqual(num2words(145000000002, lang='pt_BR'), 'cento e quarenta e cinco bilhões e dois') def test_cardinal_integer_negative(self): - self.assertEquals(num2words(-1, lang='pt_BR'), 'menos um') - self.assertEquals(num2words(-256, lang='pt_BR'), 'menos duzentos e cinquenta e seis') - self.assertEquals(num2words(-1000, lang='pt_BR'), 'menos mil') - self.assertEquals(num2words(-1000000, lang='pt_BR'), 'menos um milhão') - self.assertEquals(num2words(-1234567, lang='pt_BR'), 'menos um milhão, duzentos e trinta e quatro mil, quinhentos e sessenta e sete') + self.assertEqual(num2words(-1, lang='pt_BR'), 'menos um') + self.assertEqual(num2words(-256, lang='pt_BR'), 'menos duzentos e cinquenta e seis') + self.assertEqual(num2words(-1000, lang='pt_BR'), 'menos mil') + self.assertEqual(num2words(-1000000, lang='pt_BR'), 'menos um milhão') + self.assertEqual(num2words(-1234567, lang='pt_BR'), 'menos um milhão, duzentos e trinta e quatro mil, quinhentos e sessenta e sete') def test_cardinal_float(self): - self.assertEquals(num2words(Decimal('1.00'), lang='pt_BR'), 'um') - self.assertEquals(num2words(Decimal('1.01'), lang='pt_BR'), 'um vírgula zero um') - self.assertEquals(num2words(Decimal('1.035'), lang='pt_BR'), 'um vírgula zero três') - self.assertEquals(num2words(Decimal('1.35'), lang='pt_BR'), 'um vírgula três cinco') - self.assertEquals(num2words(Decimal('3.14159'), lang='pt_BR'), 'três vírgula um quatro') - self.assertEquals(num2words(Decimal('101.22'), lang='pt_BR'), 'cento e um vírgula dois dois') - self.assertEquals(num2words(Decimal('2345.75'), lang='pt_BR'), 'dois mil, trezentos e quarenta e cinco vírgula sete cinco') + self.assertEqual(num2words(Decimal('1.00'), lang='pt_BR'), 'um') + self.assertEqual(num2words(Decimal('1.01'), lang='pt_BR'), 'um vírgula zero um') + self.assertEqual(num2words(Decimal('1.035'), lang='pt_BR'), 'um vírgula zero três') + self.assertEqual(num2words(Decimal('1.35'), lang='pt_BR'), 'um vírgula três cinco') + self.assertEqual(num2words(Decimal('3.14159'), lang='pt_BR'), 'três vírgula um quatro') + self.assertEqual(num2words(Decimal('101.22'), lang='pt_BR'), 'cento e um vírgula dois dois') + self.assertEqual(num2words(Decimal('2345.75'), lang='pt_BR'), 'dois mil, trezentos e quarenta e cinco vírgula sete cinco') def test_cardinal_float_negative(self): - self.assertEquals(num2words(Decimal('-2.34'), lang='pt_BR'), 'menos dois vírgula três quatro') - self.assertEquals(num2words(Decimal('-9.99'), lang='pt_BR'), 'menos nove vírgula nove nove') - self.assertEquals(num2words(Decimal('-7.01'), lang='pt_BR'), 'menos sete vírgula zero um') - self.assertEquals(num2words(Decimal('-222.22'), lang='pt_BR'), 'menos duzentos e vinte e dois vírgula dois dois') + self.assertEqual(num2words(Decimal('-2.34'), lang='pt_BR'), 'menos dois vírgula três quatro') + self.assertEqual(num2words(Decimal('-9.99'), lang='pt_BR'), 'menos nove vírgula nove nove') + self.assertEqual(num2words(Decimal('-7.01'), lang='pt_BR'), 'menos sete vírgula zero um') + self.assertEqual(num2words(Decimal('-222.22'), lang='pt_BR'), 'menos duzentos e vinte e dois vírgula dois dois') def test_ordinal(self): - self.assertEquals(num2words(1, lang='pt_BR', ordinal=True), 'primeiro') - self.assertEquals(num2words(2, lang='pt_BR', ordinal=True), 'segundo') - self.assertEquals(num2words(3, lang='pt_BR', ordinal=True), 'terceiro') - self.assertEquals(num2words(4, lang='pt_BR', ordinal=True), 'quarto') - self.assertEquals(num2words(5, lang='pt_BR', ordinal=True), 'quinto') - self.assertEquals(num2words(6, lang='pt_BR', ordinal=True), 'sexto') - self.assertEquals(num2words(7, lang='pt_BR', ordinal=True), 'sétimo') - self.assertEquals(num2words(8, lang='pt_BR', ordinal=True), 'oitavo') - self.assertEquals(num2words(9, lang='pt_BR', ordinal=True), 'nono') - self.assertEquals(num2words(10, lang='pt_BR', ordinal=True), 'décimo') - self.assertEquals(num2words(11, lang='pt_BR', ordinal=True), 'décimo primeiro') - self.assertEquals(num2words(12, lang='pt_BR', ordinal=True), 'décimo segundo') - self.assertEquals(num2words(13, lang='pt_BR', ordinal=True), 'décimo terceiro') - self.assertEquals(num2words(14, lang='pt_BR', ordinal=True), 'décimo quarto') - self.assertEquals(num2words(15, lang='pt_BR', ordinal=True), 'décimo quinto') - self.assertEquals(num2words(16, lang='pt_BR', ordinal=True), 'décimo sexto') - self.assertEquals(num2words(17, lang='pt_BR', ordinal=True), 'décimo sétimo') - self.assertEquals(num2words(18, lang='pt_BR', ordinal=True), 'décimo oitavo') - self.assertEquals(num2words(19, lang='pt_BR', ordinal=True), 'décimo nono') - self.assertEquals(num2words(20, lang='pt_BR', ordinal=True), 'vigésimo') + self.assertEqual(num2words(1, lang='pt_BR', ordinal=True), 'primeiro') + self.assertEqual(num2words(2, lang='pt_BR', ordinal=True), 'segundo') + self.assertEqual(num2words(3, lang='pt_BR', ordinal=True), 'terceiro') + self.assertEqual(num2words(4, lang='pt_BR', ordinal=True), 'quarto') + self.assertEqual(num2words(5, lang='pt_BR', ordinal=True), 'quinto') + self.assertEqual(num2words(6, lang='pt_BR', ordinal=True), 'sexto') + self.assertEqual(num2words(7, lang='pt_BR', ordinal=True), 'sétimo') + self.assertEqual(num2words(8, lang='pt_BR', ordinal=True), 'oitavo') + self.assertEqual(num2words(9, lang='pt_BR', ordinal=True), 'nono') + self.assertEqual(num2words(10, lang='pt_BR', ordinal=True), 'décimo') + self.assertEqual(num2words(11, lang='pt_BR', ordinal=True), 'décimo primeiro') + self.assertEqual(num2words(12, lang='pt_BR', ordinal=True), 'décimo segundo') + self.assertEqual(num2words(13, lang='pt_BR', ordinal=True), 'décimo terceiro') + self.assertEqual(num2words(14, lang='pt_BR', ordinal=True), 'décimo quarto') + self.assertEqual(num2words(15, lang='pt_BR', ordinal=True), 'décimo quinto') + self.assertEqual(num2words(16, lang='pt_BR', ordinal=True), 'décimo sexto') + self.assertEqual(num2words(17, lang='pt_BR', ordinal=True), 'décimo sétimo') + self.assertEqual(num2words(18, lang='pt_BR', ordinal=True), 'décimo oitavo') + self.assertEqual(num2words(19, lang='pt_BR', ordinal=True), 'décimo nono') + self.assertEqual(num2words(20, lang='pt_BR', ordinal=True), 'vigésimo') - self.assertEquals(num2words(21, lang='pt_BR', ordinal=True), 'vigésimo primeiro') - self.assertEquals(num2words(22, lang='pt_BR', ordinal=True), 'vigésimo segundo') - self.assertEquals(num2words(35, lang='pt_BR', ordinal=True), 'trigésimo quinto') - self.assertEquals(num2words(99, lang='pt_BR', ordinal=True), 'nonagésimo nono') + self.assertEqual(num2words(21, lang='pt_BR', ordinal=True), 'vigésimo primeiro') + self.assertEqual(num2words(22, lang='pt_BR', ordinal=True), 'vigésimo segundo') + self.assertEqual(num2words(35, lang='pt_BR', ordinal=True), 'trigésimo quinto') + self.assertEqual(num2words(99, lang='pt_BR', ordinal=True), 'nonagésimo nono') - self.assertEquals(num2words(100, lang='pt_BR', ordinal=True), 'centésimo') - self.assertEquals(num2words(101, lang='pt_BR', ordinal=True), 'centésimo primeiro') - self.assertEquals(num2words(128, lang='pt_BR', ordinal=True), 'centésimo vigésimo oitavo') - self.assertEquals(num2words(713, lang='pt_BR', ordinal=True), 'septigentésimo décimo terceiro') + self.assertEqual(num2words(100, lang='pt_BR', ordinal=True), 'centésimo') + self.assertEqual(num2words(101, lang='pt_BR', ordinal=True), 'centésimo primeiro') + self.assertEqual(num2words(128, lang='pt_BR', ordinal=True), 'centésimo vigésimo oitavo') + self.assertEqual(num2words(713, lang='pt_BR', ordinal=True), 'septigentésimo décimo terceiro') - self.assertEquals(num2words(1000, lang='pt_BR', ordinal=True), 'milésimo') - self.assertEquals(num2words(1001, lang='pt_BR', ordinal=True), 'milésimo primeiro') - self.assertEquals(num2words(1111, lang='pt_BR', ordinal=True), 'milésimo centésimo décimo primeiro') - self.assertEquals(num2words(2114, lang='pt_BR', ordinal=True), 'segundo milésimo centésimo décimo quarto') - self.assertEquals(num2words(73421, lang='pt_BR', ordinal=True), 'septuagésimo terceiro milésimo quadrigentésimo vigésimo primeiro') + self.assertEqual(num2words(1000, lang='pt_BR', ordinal=True), 'milésimo') + self.assertEqual(num2words(1001, lang='pt_BR', ordinal=True), 'milésimo primeiro') + self.assertEqual(num2words(1111, lang='pt_BR', ordinal=True), 'milésimo centésimo décimo primeiro') + self.assertEqual(num2words(2114, lang='pt_BR', ordinal=True), 'segundo milésimo centésimo décimo quarto') + self.assertEqual(num2words(73421, lang='pt_BR', ordinal=True), 'septuagésimo terceiro milésimo quadrigentésimo vigésimo primeiro') - self.assertEquals(num2words(100000, lang='pt_BR', ordinal=True), 'centésimo milésimo') - self.assertEquals(num2words(250050, lang='pt_BR', ordinal=True), 'ducentésimo quinquagésimo milésimo quinquagésimo') - self.assertEquals(num2words(6000000, lang='pt_BR', ordinal=True), 'sexto milionésimo') - self.assertEquals(num2words(19000000000, lang='pt_BR', ordinal=True), 'décimo nono bilionésimo') - self.assertEquals(num2words(145000000002, lang='pt_BR', ordinal=True), 'centésimo quadragésimo quinto bilionésimo segundo') + self.assertEqual(num2words(100000, lang='pt_BR', ordinal=True), 'centésimo milésimo') + self.assertEqual(num2words(250050, lang='pt_BR', ordinal=True), 'ducentésimo quinquagésimo milésimo quinquagésimo') + self.assertEqual(num2words(6000000, lang='pt_BR', ordinal=True), 'sexto milionésimo') + self.assertEqual(num2words(19000000000, lang='pt_BR', ordinal=True), 'décimo nono bilionésimo') + self.assertEqual(num2words(145000000002, lang='pt_BR', ordinal=True), 'centésimo quadragésimo quinto bilionésimo segundo') def test_currency_integer(self): - self.assertEquals(self.n2w.to_currency(1), 'um real') - self.assertEquals(self.n2w.to_currency(2), 'dois reais') - self.assertEquals(self.n2w.to_currency(3), 'três reais') - self.assertEquals(self.n2w.to_currency(4), 'quatro reais') - self.assertEquals(self.n2w.to_currency(5), 'cinco reais') - self.assertEquals(self.n2w.to_currency(6), 'seis reais') - self.assertEquals(self.n2w.to_currency(7), 'sete reais') - self.assertEquals(self.n2w.to_currency(8), 'oito reais') - self.assertEquals(self.n2w.to_currency(9), 'nove reais') - self.assertEquals(self.n2w.to_currency(10), 'dez reais') - self.assertEquals(self.n2w.to_currency(11), 'onze reais') - self.assertEquals(self.n2w.to_currency(12), 'doze reais') - self.assertEquals(self.n2w.to_currency(13), 'treze reais') - self.assertEquals(self.n2w.to_currency(14), 'catorze reais') - self.assertEquals(self.n2w.to_currency(15), 'quinze reais') - self.assertEquals(self.n2w.to_currency(16), 'dezesseis reais') - self.assertEquals(self.n2w.to_currency(17), 'dezessete reais') - self.assertEquals(self.n2w.to_currency(18), 'dezoito reais') - self.assertEquals(self.n2w.to_currency(19), 'dezenove reais') - self.assertEquals(self.n2w.to_currency(20), 'vinte reais') + self.assertEqual(self.n2w.to_currency(1), 'um real') + self.assertEqual(self.n2w.to_currency(2), 'dois reais') + self.assertEqual(self.n2w.to_currency(3), 'três reais') + self.assertEqual(self.n2w.to_currency(4), 'quatro reais') + self.assertEqual(self.n2w.to_currency(5), 'cinco reais') + self.assertEqual(self.n2w.to_currency(6), 'seis reais') + self.assertEqual(self.n2w.to_currency(7), 'sete reais') + self.assertEqual(self.n2w.to_currency(8), 'oito reais') + self.assertEqual(self.n2w.to_currency(9), 'nove reais') + self.assertEqual(self.n2w.to_currency(10), 'dez reais') + self.assertEqual(self.n2w.to_currency(11), 'onze reais') + self.assertEqual(self.n2w.to_currency(12), 'doze reais') + self.assertEqual(self.n2w.to_currency(13), 'treze reais') + self.assertEqual(self.n2w.to_currency(14), 'catorze reais') + self.assertEqual(self.n2w.to_currency(15), 'quinze reais') + self.assertEqual(self.n2w.to_currency(16), 'dezesseis reais') + self.assertEqual(self.n2w.to_currency(17), 'dezessete reais') + self.assertEqual(self.n2w.to_currency(18), 'dezoito reais') + self.assertEqual(self.n2w.to_currency(19), 'dezenove reais') + self.assertEqual(self.n2w.to_currency(20), 'vinte reais') - self.assertEquals(self.n2w.to_currency(21), 'vinte e um reais') - self.assertEquals(self.n2w.to_currency(22), 'vinte e dois reais') - self.assertEquals(self.n2w.to_currency(35), 'trinta e cinco reais') - self.assertEquals(self.n2w.to_currency(99), 'noventa e nove reais') + self.assertEqual(self.n2w.to_currency(21), 'vinte e um reais') + self.assertEqual(self.n2w.to_currency(22), 'vinte e dois reais') + self.assertEqual(self.n2w.to_currency(35), 'trinta e cinco reais') + self.assertEqual(self.n2w.to_currency(99), 'noventa e nove reais') - self.assertEquals(self.n2w.to_currency(100), 'cem reais') - self.assertEquals(self.n2w.to_currency(101), 'cento e um reais') - self.assertEquals(self.n2w.to_currency(128), 'cento e vinte e oito reais') - self.assertEquals(self.n2w.to_currency(713), 'setecentos e treze reais') + self.assertEqual(self.n2w.to_currency(100), 'cem reais') + self.assertEqual(self.n2w.to_currency(101), 'cento e um reais') + self.assertEqual(self.n2w.to_currency(128), 'cento e vinte e oito reais') + self.assertEqual(self.n2w.to_currency(713), 'setecentos e treze reais') - self.assertEquals(self.n2w.to_currency(1000), 'mil reais') - self.assertEquals(self.n2w.to_currency(1001), 'mil e um reais') - self.assertEquals(self.n2w.to_currency(1111), 'mil, cento e onze reais') - self.assertEquals(self.n2w.to_currency(2114), 'dois mil, cento e catorze reais') - self.assertEquals(self.n2w.to_currency(73421), 'setenta e três mil, quatrocentos e vinte e um reais') + self.assertEqual(self.n2w.to_currency(1000), 'mil reais') + self.assertEqual(self.n2w.to_currency(1001), 'mil e um reais') + self.assertEqual(self.n2w.to_currency(1111), 'mil, cento e onze reais') + self.assertEqual(self.n2w.to_currency(2114), 'dois mil, cento e catorze reais') + self.assertEqual(self.n2w.to_currency(73421), 'setenta e três mil, quatrocentos e vinte e um reais') - self.assertEquals(self.n2w.to_currency(100000), 'cem mil reais') - self.assertEquals(self.n2w.to_currency(250050), 'duzentos e cinquenta mil e cinquenta reais') - self.assertEquals(self.n2w.to_currency(6000000), 'seis milhões de reais') - self.assertEquals(self.n2w.to_currency(19000000000), 'dezenove bilhões de reais') - self.assertEquals(self.n2w.to_currency(145000000002), 'cento e quarenta e cinco bilhões e dois reais') + self.assertEqual(self.n2w.to_currency(100000), 'cem mil reais') + self.assertEqual(self.n2w.to_currency(250050), 'duzentos e cinquenta mil e cinquenta reais') + self.assertEqual(self.n2w.to_currency(6000000), 'seis milhões de reais') + self.assertEqual(self.n2w.to_currency(19000000000), 'dezenove bilhões de reais') + self.assertEqual(self.n2w.to_currency(145000000002), 'cento e quarenta e cinco bilhões e dois reais') def test_currency_integer_negative(self): - self.assertEquals(self.n2w.to_currency(-1), 'menos um real') - self.assertEquals(self.n2w.to_currency(-256), 'menos duzentos e cinquenta e seis reais') - self.assertEquals(self.n2w.to_currency(-1000), 'menos mil reais') - self.assertEquals(self.n2w.to_currency(-1000000), 'menos um milhão de reais') - self.assertEquals(self.n2w.to_currency(-1234567), 'menos um milhão, duzentos e trinta e quatro mil, quinhentos e sessenta e sete reais') + self.assertEqual(self.n2w.to_currency(-1), 'menos um real') + self.assertEqual(self.n2w.to_currency(-256), 'menos duzentos e cinquenta e seis reais') + self.assertEqual(self.n2w.to_currency(-1000), 'menos mil reais') + self.assertEqual(self.n2w.to_currency(-1000000), 'menos um milhão de reais') + self.assertEqual(self.n2w.to_currency(-1234567), 'menos um milhão, duzentos e trinta e quatro mil, quinhentos e sessenta e sete reais') def test_currency_float(self): - self.assertEquals(self.n2w.to_currency(Decimal('1.00')), 'um real') - self.assertEquals(self.n2w.to_currency(Decimal('1.01')), 'um real e um centavo') - self.assertEquals(self.n2w.to_currency(Decimal('1.035')), 'um real e três centavos') - self.assertEquals(self.n2w.to_currency(Decimal('1.35')), 'um real e trinta e cinco centavos') - self.assertEquals(self.n2w.to_currency(Decimal('3.14159')), 'três reais e catorze centavos') - self.assertEquals(self.n2w.to_currency(Decimal('101.22')), 'cento e um reais e vinte e dois centavos') - self.assertEquals(self.n2w.to_currency(Decimal('2345.75')), 'dois mil, trezentos e quarenta e cinco reais e setenta e cinco centavos') + self.assertEqual(self.n2w.to_currency(Decimal('1.00')), 'um real') + self.assertEqual(self.n2w.to_currency(Decimal('1.01')), 'um real e um centavo') + self.assertEqual(self.n2w.to_currency(Decimal('1.035')), 'um real e três centavos') + self.assertEqual(self.n2w.to_currency(Decimal('1.35')), 'um real e trinta e cinco centavos') + self.assertEqual(self.n2w.to_currency(Decimal('3.14159')), 'três reais e catorze centavos') + self.assertEqual(self.n2w.to_currency(Decimal('101.22')), 'cento e um reais e vinte e dois centavos') + self.assertEqual(self.n2w.to_currency(Decimal('2345.75')), 'dois mil, trezentos e quarenta e cinco reais e setenta e cinco centavos') def test_currency_float_negative(self): - self.assertEquals(self.n2w.to_currency(Decimal('-2.34')), 'menos dois reais e trinta e quatro centavos') - self.assertEquals(self.n2w.to_currency(Decimal('-9.99')), 'menos nove reais e noventa e nove centavos') - self.assertEquals(self.n2w.to_currency(Decimal('-7.01')), 'menos sete reais e um centavo') - self.assertEquals(self.n2w.to_currency(Decimal('-222.22')), 'menos duzentos e vinte e dois reais e vinte e dois centavos') + self.assertEqual(self.n2w.to_currency(Decimal('-2.34')), 'menos dois reais e trinta e quatro centavos') + self.assertEqual(self.n2w.to_currency(Decimal('-9.99')), 'menos nove reais e noventa e nove centavos') + self.assertEqual(self.n2w.to_currency(Decimal('-7.01')), 'menos sete reais e um centavo') + self.assertEqual(self.n2w.to_currency(Decimal('-222.22')), 'menos duzentos e vinte e dois reais e vinte e dois centavos') def test_year(self): - self.assertEquals(self.n2w.to_year(1001), 'mil e um') - self.assertEquals(self.n2w.to_year(1789), 'mil, setecentos e oitenta e nove') - self.assertEquals(self.n2w.to_year(1942), 'mil, novecentos e quarenta e dois') - self.assertEquals(self.n2w.to_year(1984), 'mil, novecentos e oitenta e quatro') - self.assertEquals(self.n2w.to_year(2000), 'dois mil') - self.assertEquals(self.n2w.to_year(2001), 'dois mil e um') - self.assertEquals(self.n2w.to_year(2016), 'dois mil e dezesseis') + self.assertEqual(self.n2w.to_year(1001), 'mil e um') + self.assertEqual(self.n2w.to_year(1789), 'mil, setecentos e oitenta e nove') + self.assertEqual(self.n2w.to_year(1942), 'mil, novecentos e quarenta e dois') + self.assertEqual(self.n2w.to_year(1984), 'mil, novecentos e oitenta e quatro') + self.assertEqual(self.n2w.to_year(2000), 'dois mil') + self.assertEqual(self.n2w.to_year(2001), 'dois mil e um') + self.assertEqual(self.n2w.to_year(2016), 'dois mil e dezesseis') def test_year_negative(self): - self.assertEquals(self.n2w.to_year(-30), 'trinta antes de Cristo') - self.assertEquals(self.n2w.to_year(-744), 'setecentos e quarenta e quatro antes de Cristo') - self.assertEquals(self.n2w.to_year(-10000), 'dez mil antes de Cristo') + self.assertEqual(self.n2w.to_year(-30), 'trinta antes de Cristo') + self.assertEqual(self.n2w.to_year(-744), 'setecentos e quarenta e quatro antes de Cristo') + self.assertEqual(self.n2w.to_year(-10000), 'dez mil antes de Cristo') diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..13bca3c --- /dev/null +++ b/tox.ini @@ -0,0 +1,5 @@ +[tox] +envlist = py27,py34 + +[testenv] +commands = python -m unittest discover