136 lines
7.0 KiB
Python
136 lines
7.0 KiB
Python
# -*- coding: utf-8 -*-
|
||
# Copyright (c) 2003, Taro Ogawa. All Rights Reserved.
|
||
# Copyright (c) 2013, 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
|
||
|
||
from __future__ import unicode_literals
|
||
|
||
from unittest import TestCase
|
||
|
||
from num2words import num2words
|
||
|
||
|
||
class Num2WordsUKTest(TestCase):
|
||
def test_to_cardinal(self):
|
||
self.maxDiff = None
|
||
self.assertEqual(num2words(100, lang='uk'), 'сто')
|
||
# self.assertEqual(num2words(101, lang='uk'), 'сто один')
|
||
self.assertEqual(num2words(110, lang='uk'), 'сто десять')
|
||
self.assertEqual(num2words(115, lang='uk'), "сто п'ятнадцять")
|
||
self.assertEqual(num2words(123, lang='uk'), 'сто двадцять три')
|
||
self.assertEqual(num2words(1000, lang='uk'), 'одна тисяча')
|
||
# self.assertEqual(num2words(1001, lang='uk'), 'одна тисяча один')
|
||
self.assertEqual(num2words(2012, lang='uk'), 'двi тисячi дванадцять')
|
||
self.assertEqual(
|
||
num2words(12519.85, lang='uk'),
|
||
"дванадцять тисяч п'ятсот дев'ятнадцять кома вiсiмдесят п'ять")
|
||
# self.assertEqual(
|
||
# num2words(1234567890, lang='uk'),
|
||
# "мiльярд двiстi тридцать чотири мiльйона п'ятсот шiстдесят сiмь "
|
||
# "тисяч вiсiмсот дев'яносто")
|
||
# self.assertEqual(
|
||
# num2words(215461407892039002157189883901676, lang='uk'),
|
||
# "двiстi п'ятнадцять нонiльйонiв чотириста шiстдесят один "
|
||
# "октильйон чотириста сiм септильйонiв вiсiмсот дев'яносто "
|
||
# "два секстильйони тридцять дев'ять квiнтильйонiв два "
|
||
# "квадрильйони сто п'ятдесят сiм трильйонiв сто вiсiмдесят "
|
||
# "дев'ять мiльярдiв вiсiмсот вiсiмдесят три мiльйона "
|
||
# "дев'ятсот одна тисяча шiстсот "
|
||
# "сiмдесят шiсть")
|
||
# self.assertEqual(
|
||
# num2words(719094234693663034822824384220291, lang='uk'),
|
||
# "сiмсот дев'ятнадцять нонiльйонiв дев'яносто чотири октильйони "
|
||
# "двiстi тридцять чотири септильйони шiстсот дев'яносто три "
|
||
# "секстильйони шiстсот шiстдесят три квiнтильйони тридцять "
|
||
# "чотири квадрильйони вiсiмсот двадцять два трильйони вiсiмсот "
|
||
# "двадцять чотири мiльярди триста вiсiмдесят чотири мiльйона "
|
||
# "двiстi двадцять тисяч двiстi дев'яносто один")
|
||
|
||
def test_and_join_199(self):
|
||
self.assertEqual(num2words(187, lang='uk'), "сто вiсiмдесят сiм")
|
||
|
||
def test_cardinal_for_float_number(self):
|
||
self.assertEqual(
|
||
num2words(12.40, lang='uk'), "дванадцять кома чотири"
|
||
)
|
||
self.assertEqual(
|
||
num2words(17.31, lang='uk'), "сiмнадцять кома тридцять одна"
|
||
)
|
||
self.assertEqual(
|
||
num2words(14.13, lang='uk'), "чотирнадцять кома тринадцять"
|
||
)
|
||
self.assertEqual(
|
||
num2words(12.31, lang='uk'), "дванадцять кома тридцять одна"
|
||
)
|
||
|
||
def test_to_ordinal(self):
|
||
# @TODO: implement to_ordinal
|
||
with self.assertRaises(NotImplementedError):
|
||
num2words(1, lang='uk', to='ordinal')
|
||
|
||
def test_to_currency(self):
|
||
# self.assertEqual(
|
||
# num2words(1.0, lang='uk', to='currency', currency='EUR'),
|
||
# "один євро, нуль центiв"
|
||
# )
|
||
self.assertEqual(
|
||
num2words(1.0, lang='uk', to='currency', currency='UAH'),
|
||
"одна гривня, нуль копiйок"
|
||
)
|
||
self.assertEqual(
|
||
num2words(1234.56, lang='uk', to='currency', currency='EUR'),
|
||
"одна тисяча двiстi тридцять чотири євро, п'ятдесят шiсть центiв"
|
||
)
|
||
self.assertEqual(
|
||
num2words(1234.56, lang='uk', to='currency', currency='UAH'),
|
||
"одна тисяча двiстi тридцять чотири гривнi, п'ятдесят шiсть "
|
||
"копiйок"
|
||
)
|
||
# self.assertEqual(
|
||
# num2words(10111, lang='uk', to='currency', currency='EUR',
|
||
# seperator=u' та'),
|
||
# "сто один євро та одинадцять центiв"
|
||
# )
|
||
self.assertEqual(
|
||
num2words(10121, lang='uk', to='currency', currency='UAH',
|
||
seperator=u' та'),
|
||
"сто одна гривня та двадцять одна копiйка"
|
||
)
|
||
self.assertEqual(
|
||
num2words(10121, lang='uk', to='currency', currency='UAH',
|
||
seperator=u' та'),
|
||
"сто одна гривня та двадцять одна копiйка"
|
||
)
|
||
self.assertEqual(
|
||
num2words(10122, lang='uk', to='currency', currency='UAH',
|
||
seperator=u' та'),
|
||
"сто одна гривня та двадцять двi копiйки"
|
||
)
|
||
# self.assertEqual(
|
||
# num2words(10121, lang='uk', to='currency', currency='EUR',
|
||
# seperator=u' та'),
|
||
# "сто один євро та двадцять один цент"
|
||
# )
|
||
self.assertEqual(
|
||
num2words(-1251985, lang='uk', to='currency', currency='EUR',
|
||
cents=False),
|
||
"мiнус дванадцять тисяч п'ятсот дев'ятнадцять євро, 85 центiв"
|
||
)
|
||
self.assertEqual(
|
||
num2words('38.4', lang='uk', to='currency', seperator=' и',
|
||
cents=False, currency='EUR'),
|
||
"тридцять вiсiм євро и 40 центiв"
|
||
)
|