Convert to single codebase for py2 and py3

No more 2to3. Also, added tox config for easy cross-python testing.
This commit is contained in:
Virgil Dupras
2016-11-22 09:13:18 -05:00
parent 0e06eb81dd
commit 20f634028d
15 changed files with 256 additions and 206 deletions

3
.gitignore vendored
View File

@@ -1,4 +1,5 @@
*.pyc
build
dist
*.egg-info
*.egg-info
/.tox

View File

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

26
num2words/compat.py Normal file
View File

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

View File

@@ -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()

View File

@@ -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__":

View File

@@ -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()

View File

@@ -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()

View File

@@ -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()

View File

@@ -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__":

View File

@@ -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__":

View File

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

View File

@@ -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()

View File

@@ -29,5 +29,4 @@ setup(
url='https://github.com/savoirfairelinux/num2words',
packages=find_packages(exclude=['tests']),
test_suite='tests',
use_2to3=True,
)

View File

@@ -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')

5
tox.ini Normal file
View File

@@ -0,0 +1,5 @@
[tox]
envlist = py27,py34
[testenv]
commands = python -m unittest discover