mirror of
https://github.com/bblaz/num2words.git
synced 2025-12-06 06:42:25 +00:00
Refactor and fix some issues with to_currency. Reduce code duplication. (#129)
* Refactor and fix some issues with to_currency. Reduce code duplication. * Use unicode literals in uk testcase.
This commit is contained in:
committed by
Ernesto Rodriguez Ortiz
parent
abae0b56a2
commit
f9d8868794
28
tests/test_currency.py
Normal file
28
tests/test_currency.py
Normal file
@@ -0,0 +1,28 @@
|
||||
from decimal import Decimal
|
||||
from unittest import TestCase
|
||||
|
||||
from num2words.currency import parse_currency_parts
|
||||
|
||||
|
||||
class CurrencyTestCase(TestCase):
|
||||
def test_parse_currency_parts(self):
|
||||
# integer cents
|
||||
self.assertEqual(parse_currency_parts(101), (1, 1, False))
|
||||
self.assertEqual(parse_currency_parts(-123), (1, 23, True))
|
||||
|
||||
# decimal
|
||||
self.assertEqual(parse_currency_parts(Decimal("1.01")), (1, 1, False))
|
||||
self.assertEqual(parse_currency_parts(Decimal("-1.23")), (1, 23, True))
|
||||
self.assertEqual(parse_currency_parts(Decimal("-1.233")),
|
||||
(1, 23, True))
|
||||
|
||||
# string
|
||||
self.assertEqual(parse_currency_parts("1.01"), (1, 1, False))
|
||||
self.assertEqual(parse_currency_parts("-1.23"), (1, 23, True))
|
||||
self.assertEqual(parse_currency_parts("-1.2"), (1, 20, True))
|
||||
self.assertEqual(parse_currency_parts("1"), (1, 0, False))
|
||||
|
||||
# float
|
||||
self.assertEqual(parse_currency_parts(1.01), (1, 1, False))
|
||||
self.assertEqual(parse_currency_parts(-1.23), (1, 23, True))
|
||||
self.assertEqual(parse_currency_parts(-1.2), (1, 20, True))
|
||||
15
tests/test_lv.py
Normal file
15
tests/test_lv.py
Normal file
@@ -0,0 +1,15 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from unittest import TestCase
|
||||
|
||||
from num2words import num2words
|
||||
|
||||
|
||||
class Num2WordsLVTest(TestCase):
|
||||
def test_to_currency(self):
|
||||
self.assertEqual(
|
||||
num2words('38.4', lang='lv', to='currency', seperator=' un',
|
||||
cents=False, currency='EUR'),
|
||||
"trīsdesmit astoņi eiro un 40 centi"
|
||||
)
|
||||
@@ -13,6 +13,7 @@
|
||||
# License along with this library; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from unittest import TestCase
|
||||
|
||||
@@ -22,23 +23,30 @@ from num2words import num2words
|
||||
class Num2WordsRUTest(TestCase):
|
||||
|
||||
def test_cardinal(self):
|
||||
self.assertEqual(num2words(5, lang='ru'), u"пять")
|
||||
self.assertEqual(num2words(15, lang='ru'), u"пятнадцать")
|
||||
self.assertEqual(num2words(154, lang='ru'), u"сто пятьдесят четыре")
|
||||
self.assertEqual(num2words(5, lang='ru'), "пять")
|
||||
self.assertEqual(num2words(15, lang='ru'), "пятнадцать")
|
||||
self.assertEqual(num2words(154, lang='ru'), "сто пятьдесят четыре")
|
||||
self.assertEqual(
|
||||
num2words(1135, lang='ru'), u"одна тысяча сто тридцать пять"
|
||||
num2words(1135, lang='ru'), "одна тысяча сто тридцать пять"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(418531, lang='ru'),
|
||||
u"четыреста восемнадцать тысяч пятьсот тридцать один"
|
||||
"четыреста восемнадцать тысяч пятьсот тридцать один"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(1000139, lang='ru'), u"один миллион сто тридцать девять"
|
||||
num2words(1000139, lang='ru'), "один миллион сто тридцать девять"
|
||||
)
|
||||
|
||||
def test_floating_point(self):
|
||||
self.assertEqual(num2words(5.2, lang='ru'), u"пять запятая два")
|
||||
self.assertEqual(num2words(5.2, lang='ru'), "пять запятая два")
|
||||
self.assertEqual(
|
||||
num2words(561.42, lang='ru'),
|
||||
u"пятьсот шестьдесят один запятая сорок два"
|
||||
"пятьсот шестьдесят один запятая сорок два"
|
||||
)
|
||||
|
||||
def test_to_currency(self):
|
||||
self.assertEqual(
|
||||
num2words('38.4', lang='ru', to='currency', seperator=' и',
|
||||
cents=False, currency='EUR'),
|
||||
"тридцать восемь евро и 40 центов"
|
||||
)
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
# License along with this library; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from unittest import TestCase
|
||||
|
||||
@@ -21,18 +22,25 @@ from num2words import num2words
|
||||
|
||||
class Num2WordsUKTest(TestCase):
|
||||
def test_and_join_199(self):
|
||||
self.assertEqual(num2words(187, lang='uk'), u"сто вiсiмдесят сiм")
|
||||
self.assertEqual(num2words(187, lang='uk'), "сто вiсiмдесят сiм")
|
||||
|
||||
def test_cardinal_for_float_number(self):
|
||||
self.assertEqual(
|
||||
num2words(12.40, lang='uk'), u"дванадцять кома чотири"
|
||||
num2words(12.40, lang='uk'), "дванадцять кома чотири"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(17.31, lang='uk'), u"сiмнадцять кома тридцять одна"
|
||||
num2words(17.31, lang='uk'), "сiмнадцять кома тридцять одна"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(14.13, lang='uk'), u"чотирнадцять кома тринадцять"
|
||||
num2words(14.13, lang='uk'), "чотирнадцять кома тринадцять"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(12.31, lang='uk'), u"дванадцять кома тридцять одна"
|
||||
num2words(12.31, lang='uk'), "дванадцять кома тридцять одна"
|
||||
)
|
||||
|
||||
def test_to_currency(self):
|
||||
self.assertEqual(
|
||||
num2words('38.4', lang='uk', to='currency', seperator=' и',
|
||||
cents=False, currency='EUR'),
|
||||
"тридцять вiсiм евро и 40 центiв"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user