2018-12-05 09:43:45 -05:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
# Copyright (c) 2003, Taro Ogawa. All Rights Reserved.
|
|
|
|
|
# Copyright (c) 2013, Savoir-faire Linux inc. All Rights Reserved.
|
2017-02-27 17:18:06 +01:00
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
|
|
|
|
|
from unittest import TestCase
|
|
|
|
|
|
|
|
|
|
from num2words import num2words
|
|
|
|
|
|
2017-10-30 14:06:46 -04:00
|
|
|
|
2017-02-27 17:18:06 +01:00
|
|
|
class Num2WordsPLTest(TestCase):
|
2017-09-05 22:36:37 +02:00
|
|
|
def test_cardinal(self):
|
|
|
|
|
self.assertEqual(num2words(100, lang='pl'), "sto")
|
|
|
|
|
self.assertEqual(num2words(101, lang='pl'), "sto jeden")
|
|
|
|
|
self.assertEqual(num2words(110, lang='pl'), "sto dziesięć")
|
|
|
|
|
self.assertEqual(num2words(115, lang='pl'), "sto piętnaście")
|
|
|
|
|
self.assertEqual(num2words(123, lang='pl'), "sto dwadzieścia trzy")
|
|
|
|
|
self.assertEqual(num2words(1000, lang='pl'), "tysiąc")
|
|
|
|
|
self.assertEqual(num2words(1001, lang='pl'), "tysiąc jeden")
|
|
|
|
|
self.assertEqual(num2words(2012, lang='pl'), "dwa tysiące dwanaście")
|
Improve Ukrainian support and minor fixes in CZ, KZ, LT, LV, PL, RU, SR languages (#400)
* Fix English char 'i' in Ukrainian words
* Fix the feminine currency processing for UAH in lang_UK.py
* Fix test_ua.py
* Fix the feminine currency processing for UAH in lang_RU.py
* Add tests for UAH in test_ru.py
* Add world currencies to lang_UK.py; Add test cases to test_uk.py for world currencies
* Fix incorrect handling of zeros after decimal point for CZ, KZ, LT, LV, PL, RU, SR and UK languages
* Add ukrainian ordinal numbers
* Fix too long lines of code
* Add test for negative cardinal number
2021-06-30 20:23:46 +03:00
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(10.02, lang='pl'),
|
|
|
|
|
"dziesięć przecinek zero dwa"
|
|
|
|
|
)
|
|
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(15.007, lang='pl'),
|
|
|
|
|
"piętnaście przecinek zero zero siedem"
|
|
|
|
|
)
|
2017-10-30 14:06:46 -04:00
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(12519.85, lang='pl'),
|
|
|
|
|
"dwanaście tysięcy pięćset dziewiętnaście przecinek "
|
|
|
|
|
"osiemdziesiąt pięć"
|
|
|
|
|
)
|
|
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(123.50, lang='pl'),
|
|
|
|
|
"sto dwadzieścia trzy przecinek pięć"
|
|
|
|
|
)
|
|
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(1234567890, lang='pl'),
|
|
|
|
|
"miliard dwieście trzydzieści cztery miliony pięćset "
|
|
|
|
|
"sześćdziesiąt siedem tysięcy osiemset dziewięćdzisiąt"
|
|
|
|
|
)
|
2018-12-03 12:03:16 +01:00
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(10000000001000000100000, lang='pl'),
|
|
|
|
|
"dziesięć tryliardów bilion sto tysięcy"
|
|
|
|
|
)
|
2017-10-30 14:06:46 -04:00
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(215461407892039002157189883901676, lang='pl'),
|
|
|
|
|
"dwieście piętnaście kwintylionów czterysta sześćdziesiąt jeden "
|
|
|
|
|
"kwadryliardów czterysta siedem kwadrylionów osiemset "
|
|
|
|
|
"dziewięćdzisiąt dwa tryliardy trzydzieści dziewięć trylionów "
|
|
|
|
|
"dwa biliardy sto pięćdziesiąt siedem bilionów sto osiemdziesiąt "
|
|
|
|
|
"dziewięć miliardów osiemset osiemdziesiąt trzy miliony "
|
2018-12-03 12:40:04 +01:00
|
|
|
"dziewięćset jeden tysięcy sześćset siedemdziesiąt sześć"
|
2017-10-30 14:06:46 -04:00
|
|
|
)
|
|
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(719094234693663034822824384220291, lang='pl'),
|
|
|
|
|
"siedemset dziewiętnaście kwintylionów dziewięćdzisiąt cztery "
|
|
|
|
|
"kwadryliardy dwieście trzydzieści cztery kwadryliony sześćset "
|
|
|
|
|
"dziewięćdzisiąt trzy tryliardy sześćset sześćdziesiąt trzy "
|
|
|
|
|
"tryliony trzydzieści cztery biliardy osiemset dwadzieścia dwa "
|
|
|
|
|
"biliony osiemset dwadzieścia cztery miliardy trzysta "
|
|
|
|
|
"osiemdziesiąt cztery miliony dwieście dwadzieścia "
|
|
|
|
|
"tysięcy dwieście dziewięćdzisiąt jeden"
|
|
|
|
|
)
|
2018-12-03 11:14:55 +01:00
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(
|
2018-12-05 10:40:43 +01:00
|
|
|
963301000001918264129471001047146102 * 10**30 + 1007,
|
2018-12-03 11:14:55 +01:00
|
|
|
lang='pl'
|
|
|
|
|
),
|
|
|
|
|
"dziewięćset sześćdziesiąt trzy decyliardy trzysta jeden "
|
|
|
|
|
"decylionów nonylion dziewięćset osiemnaście oktyliardów dwieście "
|
|
|
|
|
"sześćdziesiąt cztery oktyliony sto dwadzieścia dziewięć "
|
|
|
|
|
"septyliardów czterysta siedemdziesiąt jeden septylionów "
|
2018-12-05 10:40:43 +01:00
|
|
|
"sekstyliard czterdzieści siedem sekstylionów sto czterdzieści "
|
|
|
|
|
"sześć kwintyliardów sto dwa kwintyliony tysiąc siedem"
|
2018-12-03 11:14:55 +01:00
|
|
|
)
|
2017-02-27 17:18:06 +01:00
|
|
|
|
2017-11-09 17:13:01 +02:00
|
|
|
def test_to_ordinal(self):
|
2021-04-23 21:27:47 +02:00
|
|
|
self.assertEqual(num2words(100, lang='pl', to='ordinal'), "setny")
|
|
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(101, lang='pl', to='ordinal'), "sto pierwszy")
|
|
|
|
|
self.assertEqual(num2words(121, lang='pl', to='ordinal'),
|
|
|
|
|
"sto dwudziesty pierwszy")
|
|
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(115, lang='pl', to='ordinal'), "sto piętnasty")
|
|
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(25, lang='pl', to='ordinal'), "dwudziesty piąty")
|
|
|
|
|
self.assertEqual(num2words(1021, lang='pl', to='ordinal'),
|
|
|
|
|
"tysiąc dwudziesty pierwszy")
|
|
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(120, lang='pl', to='ordinal'), "sto dwudziesty")
|
|
|
|
|
self.assertEqual(num2words(1000021, lang='pl',
|
|
|
|
|
to='ordinal'), "milion dwudziesty pierwszy")
|
|
|
|
|
self.assertEqual(num2words(1000, lang='pl', to='ordinal'), "tysięczny")
|
|
|
|
|
self.assertEqual(num2words(10000, lang='pl',
|
|
|
|
|
to='ordinal'), "dziesięciotysięczny")
|
|
|
|
|
self.assertEqual(num2words(100000000, lang='pl',
|
|
|
|
|
to='ordinal'), "stumilionowy")
|
|
|
|
|
self.assertEqual(num2words(1002000, lang='pl',
|
|
|
|
|
to='ordinal'), "milion dwutysięczny")
|
|
|
|
|
self.assertEqual(num2words(1001000, lang='pl',
|
|
|
|
|
to='ordinal'), "milion tysięczny")
|
|
|
|
|
self.assertEqual(num2words(1000000, lang='pl',
|
|
|
|
|
to='ordinal'), "milionowy")
|
2017-11-09 17:13:01 +02:00
|
|
|
|
2017-09-05 22:36:37 +02:00
|
|
|
def test_currency(self):
|
2017-10-30 14:06:46 -04:00
|
|
|
self.assertEqual(
|
2017-11-09 17:13:01 +02:00
|
|
|
num2words(1.0, lang='pl', to='currency', currency='EUR'),
|
|
|
|
|
"jeden euro, zero centów")
|
|
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(1.0, lang='pl', to='currency', currency='PLN'),
|
|
|
|
|
"jeden złoty, zero groszy")
|
|
|
|
|
self.assertEqual(
|
|
|
|
|
num2words(1234.56, lang='pl', to='currency', currency='EUR'),
|
2017-10-30 14:06:46 -04:00
|
|
|
"tysiąc dwieście trzydzieści cztery euro, pięćdziesiąt sześć "
|
|
|
|
|
"centów"
|
|
|
|
|
)
|
|
|
|
|
self.assertEqual(
|
2017-11-09 17:13:01 +02:00
|
|
|
num2words(1234.56, lang='pl', to='currency', currency='PLN'),
|
2017-10-30 14:06:46 -04:00
|
|
|
"tysiąc dwieście trzydzieści cztery złote, pięćdziesiąt sześć "
|
|
|
|
|
"groszy"
|
|
|
|
|
)
|
|
|
|
|
self.assertEqual(
|
2017-11-09 17:13:01 +02:00
|
|
|
num2words(10111, lang='pl', to='currency', currency='EUR',
|
2019-01-19 16:53:07 -05:00
|
|
|
separator=' i'),
|
2017-10-30 14:06:46 -04:00
|
|
|
"sto jeden euro i jedenaście centów"
|
|
|
|
|
)
|
|
|
|
|
self.assertEqual(
|
2017-11-09 17:13:01 +02:00
|
|
|
num2words(10121, lang='pl', to='currency', currency='PLN',
|
2019-01-19 16:53:07 -05:00
|
|
|
separator=' i'),
|
2017-10-30 14:06:46 -04:00
|
|
|
"sto jeden złotych i dwadzieścia jeden groszy"
|
|
|
|
|
)
|
|
|
|
|
self.assertEqual(
|
2017-11-09 17:13:01 +02:00
|
|
|
num2words(-1251985, lang='pl', to='currency', cents=False),
|
2017-10-30 14:06:46 -04:00
|
|
|
"minus dwanaście tysięcy pięćset dziewiętnaście euro, 85 centów"
|
|
|
|
|
)
|
|
|
|
|
self.assertEqual(
|
2017-11-09 17:13:01 +02:00
|
|
|
num2words(123.50, lang='pl', to='currency', currency='PLN',
|
2019-01-19 16:53:07 -05:00
|
|
|
separator=' i'),
|
2017-10-30 14:06:46 -04:00
|
|
|
"sto dwadzieścia trzy złote i pięćdziesiąt groszy"
|
|
|
|
|
)
|
|
|
|
|
self.assertEqual(
|
2017-11-09 17:13:01 +02:00
|
|
|
num2words(1950, lang='pl', to='currency', cents=False),
|
2017-10-30 14:06:46 -04:00
|
|
|
"dziewiętnaście euro, 50 centów"
|
|
|
|
|
)
|