mirror of
https://github.com/bblaz/num2words.git
synced 2025-12-06 06:42:25 +00:00
add Thai Language from Thailand (#139)
* add Thai * change splitby3 to splitbyx * change lang_th to use function from currency * make Num2Word_TH inherit from Num2Word_Base * comment out test failed in 2.7 env * fix python2.7 error * add USD EUR for Thai * pep8 fix * added Thai
This commit is contained in:
committed by
Ernesto Rodriguez Ortiz
parent
efce631944
commit
ab54bed93a
@@ -6,23 +6,41 @@ from num2words.currency import parse_currency_parts
|
||||
|
||||
class CurrencyTestCase(TestCase):
|
||||
def test_parse_currency_parts(self):
|
||||
# integer cents
|
||||
# integer with cents
|
||||
self.assertEqual(parse_currency_parts(101), (1, 1, False))
|
||||
self.assertEqual(parse_currency_parts(-123), (1, 23, True))
|
||||
|
||||
# integer without cents
|
||||
self.assertEqual(parse_currency_parts(101, is_int_with_cents=False),
|
||||
(101, 0, False))
|
||||
self.assertEqual(parse_currency_parts(-123, is_int_with_cents=False),
|
||||
(123, 0, True))
|
||||
|
||||
# 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))
|
||||
self.assertEqual(parse_currency_parts(0.004), (0, 0, False))
|
||||
self.assertEqual(parse_currency_parts(0.005), (0, 1, False))
|
||||
self.assertEqual(parse_currency_parts(0.006), (0, 1, False))
|
||||
self.assertEqual(parse_currency_parts(0.0005), (0, 0, False))
|
||||
self.assertEqual(parse_currency_parts(0.984), (0, 98, False))
|
||||
self.assertEqual(parse_currency_parts(0.989), (0, 99, False))
|
||||
self.assertEqual(parse_currency_parts(0.994), (0, 99, False))
|
||||
self.assertEqual(parse_currency_parts(0.999), (1, 0, False))
|
||||
# self.assertEqual(parse_currency_parts(0.985), (0, 99, False))
|
||||
# self.assertEqual(parse_currency_parts(0.995), (1, 0, False))
|
||||
|
||||
# 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))
|
||||
self.assertEqual(parse_currency_parts(Decimal("-1.989")),
|
||||
(1, 99, 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))
|
||||
|
||||
193
tests/test_th.py
Normal file
193
tests/test_th.py
Normal file
@@ -0,0 +1,193 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from unittest import TestCase
|
||||
|
||||
from num2words import num2words
|
||||
from num2words.lang_TH import Num2Word_TH
|
||||
|
||||
|
||||
class TestNumWord(TestCase):
|
||||
|
||||
def test_0(self):
|
||||
self.assertEqual(num2words(0, lang='th'), "ศูนย์")
|
||||
|
||||
def test_end_with_1(self):
|
||||
self.assertEqual(num2words(21, lang='th'), "ยี่สิบเอ็ด")
|
||||
self.assertEqual(num2words(11, lang='th'), "สิบเอ็ด")
|
||||
self.assertEqual(num2words(101, lang='th'), "หนึ่งร้อยเอ็ด")
|
||||
self.assertEqual(num2words(1201, lang='th'), "หนึ่งพันสองร้อยเอ็ด")
|
||||
|
||||
def test_start_20(self):
|
||||
self.assertEqual(num2words(22, lang='th'), "ยี่สิบสอง")
|
||||
self.assertEqual(num2words(27, lang='th'), "ยี่สิบเจ็ด")
|
||||
|
||||
def test_start_10(self):
|
||||
self.assertEqual(num2words(10, lang='th'), "สิบ")
|
||||
self.assertEqual(num2words(18, lang='th'), "สิบแปด")
|
||||
|
||||
def test_1_to_9(self):
|
||||
self.assertEqual(num2words(1, lang='th'), "หนึ่ง")
|
||||
self.assertEqual(num2words(5, lang='th'), "ห้า")
|
||||
self.assertEqual(num2words(9, lang='th'), "เก้า")
|
||||
|
||||
def test_31_to_99(self):
|
||||
self.assertEqual(num2words(31, lang='th'), "สามสิบเอ็ด")
|
||||
self.assertEqual(num2words(48, lang='th'), "สี่สิบแปด")
|
||||
self.assertEqual(num2words(76, lang='th'), "เจ็ดสิบหก")
|
||||
|
||||
def test_100_to_999(self):
|
||||
self.assertEqual(num2words(100, lang='th'), "หนึ่งร้อย")
|
||||
self.assertEqual(num2words(123, lang='th'), "หนึ่งร้อยยี่สิบสาม")
|
||||
self.assertEqual(num2words(456, lang='th'), "สี่ร้อยห้าสิบหก")
|
||||
self.assertEqual(num2words(721, lang='th'), "เจ็ดร้อยยี่สิบเอ็ด")
|
||||
|
||||
def test_1000_to_9999(self):
|
||||
self.assertEqual(num2words(1000, lang='th'), "หนึ่งพัน")
|
||||
self.assertEqual(
|
||||
num2words(2175, lang='th'), "สองพันหนึ่งร้อยเจ็ดสิบห้า"
|
||||
)
|
||||
self.assertEqual(num2words(4582, lang='th'), "สี่พันห้าร้อยแปดสิบสอง")
|
||||
self.assertEqual(num2words(9346, lang='th'), "เก้าพันสามร้อยสี่สิบหก")
|
||||
|
||||
def test_10000_to_99999(self):
|
||||
self.assertEqual(
|
||||
num2words(11111, lang='th'), "หนึ่งหมื่นหนึ่งพันหนึ่งร้อยสิบเอ็ด"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(22222, lang='th'), "สองหมื่นสองพันสองร้อยยี่สิบสอง"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(84573, lang='th'), "แปดหมื่นสี่พันห้าร้อยเจ็ดสิบสาม"
|
||||
)
|
||||
|
||||
def test_100000_to_999999(self):
|
||||
self.assertEqual(
|
||||
num2words(153247, lang='th'),
|
||||
"หนึ่งแสนห้าหมื่นสามพันสองร้อยสี่สิบเจ็ด"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(562442, lang='th'),
|
||||
"ห้าแสนหกหมื่นสองพันสี่ร้อยสี่สิบสอง"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(999999, lang='th'),
|
||||
"เก้าแสนเก้าหมื่นเก้าพันเก้าร้อยเก้าสิบเก้า"
|
||||
)
|
||||
|
||||
def test_more_than_million(self):
|
||||
self.assertEqual(
|
||||
num2words(1000000, lang='th'),
|
||||
"หนึ่งล้าน"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(1000001, lang='th'),
|
||||
"หนึ่งล้านเอ็ด"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(42478941, lang='th'),
|
||||
"สี่สิบสองล้านสี่แสนเจ็ดหมื่นแปดพันเก้าร้อยสี่สิบเอ็ด"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(712696969, lang='th'),
|
||||
"เจ็ดร้อยสิบสองล้านหกแสนเก้าหมื่นหกพันเก้าร้อยหกสิบเก้า"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(1000000000000000001, lang='th'),
|
||||
"หนึ่งล้านล้านล้านเอ็ด"
|
||||
)
|
||||
|
||||
def test_decimal(self):
|
||||
self.assertEqual(
|
||||
num2words(0.0, lang='th'), "ศูนย์"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(0.0038, lang='th'), "ศูนย์จุดศูนย์ศูนย์สามแปด"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(0.01, lang='th'), "ศูนย์จุดศูนย์หนึ่ง"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(1.123, lang='th'), "หนึ่งจุดหนึ่งสองสาม"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(35.37, lang='th'), "สามสิบห้าจุดสามเจ็ด"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(1000000.01, lang='th'), "หนึ่งล้านจุดศูนย์หนึ่ง"
|
||||
)
|
||||
|
||||
def test_currency(self):
|
||||
self.assertEqual(
|
||||
num2words(100, lang='th', to='currency', currency='THB'),
|
||||
"หนึ่งร้อยบาทถ้วน"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(100, lang='th', to='currency', currency='USD'),
|
||||
"หนึ่งร้อยดอลลาร์"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(100, lang='th', to='currency', currency='EUR'),
|
||||
"หนึ่งร้อยยูโร"
|
||||
)
|
||||
|
||||
def test_currency_decimal(self):
|
||||
self.assertEqual(
|
||||
num2words(0.00, lang='th', to='currency'), "ศูนย์บาทถ้วน"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(0.05, lang='th', to='currency'), "ห้าสตางค์"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(0.50, lang='th', to='currency'), "ห้าสิบสตางค์"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(0.99, lang='th', to='currency'), "เก้าสิบเก้าสตางค์"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(100.00, lang='th', to='currency'), "หนึ่งร้อยบาทถ้วน"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(100.23, lang='th', to='currency', currency='USD'),
|
||||
"หนึ่งร้อยดอลลาร์ยี่สิบสามเซนต์"
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(100.24, lang='th', to='currency', currency='EUR'),
|
||||
"หนึ่งร้อยยูโรยี่สิบสี่เซนต์"
|
||||
)
|
||||
|
||||
def test_negative(self):
|
||||
self.assertEqual(num2words(-10, lang='th'), "ติดลบสิบ")
|
||||
self.assertEqual(num2words(-10.50, lang='th'), "ติดลบสิบจุดห้า")
|
||||
self.assertEqual(
|
||||
num2words(-100.00, lang='th', to='currency'),
|
||||
"ติดลบหนึ่งร้อยบาทถ้วน"
|
||||
)
|
||||
|
||||
def test_round_2_decimal(self):
|
||||
n2wTH = Num2Word_TH()
|
||||
self.assertEqual(n2wTH.round_2_decimal(0.004), ('0.00', False))
|
||||
self.assertEqual(n2wTH.round_2_decimal(0.005), ('0.01', False))
|
||||
self.assertEqual(n2wTH.round_2_decimal(0.006), ('0.01', False))
|
||||
self.assertEqual(n2wTH.round_2_decimal(0.0005),
|
||||
('0.00', False))
|
||||
self.assertEqual(n2wTH.round_2_decimal(0.984), ('0.98', False))
|
||||
self.assertEqual(n2wTH.round_2_decimal(0.989), ('0.99', False))
|
||||
self.assertEqual(n2wTH.round_2_decimal(0.994), ('0.99', False))
|
||||
self.assertEqual(n2wTH.round_2_decimal(0.999), ('1.00', False))
|
||||
self.assertEqual(n2wTH.round_2_decimal(-0.994), ('0.99', True))
|
||||
self.assertEqual(n2wTH.round_2_decimal(-0.999), ('1.00', True))
|
||||
# self.assertEqual(n2wTH.round_2_decimal(0.985), ('0.99', False))
|
||||
# Expect 0.99 get 0.98
|
||||
# self.assertEqual(n2wTH.round_2_decimal(0.995), ('1.00', False))
|
||||
# Expect 1.00 get 0.99
|
||||
|
||||
def test_split_six(self):
|
||||
n2wTH = Num2Word_TH()
|
||||
self.assertEqual(n2wTH.split_six(str(123456789)),
|
||||
['987654', '321'])
|
||||
self.assertEqual(n2wTH.split_six(str(12345)),
|
||||
['54321'])
|
||||
self.assertEqual(n2wTH.split_six(str(1234567)),
|
||||
['765432', '1'])
|
||||
24
tests/test_utils.py
Normal file
24
tests/test_utils.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from unittest import TestCase
|
||||
|
||||
from num2words.utils import splitbyx
|
||||
|
||||
|
||||
class TestUtils(TestCase):
|
||||
def test_splitbyx(self):
|
||||
self.assertEqual(list(splitbyx(str(12), 3)), [12])
|
||||
self.assertEqual(list(splitbyx(str(1234), 3)), [1, 234])
|
||||
self.assertEqual(list(splitbyx(str(12345678900), 3)),
|
||||
[12, 345, 678, 900]
|
||||
)
|
||||
self.assertEqual(list(splitbyx(str(1000000), 6)), [1, 0])
|
||||
|
||||
self.assertEqual(list(splitbyx(str(12), 3, format_int=False)), ['12'])
|
||||
self.assertEqual(list(splitbyx(str(1234), 3, format_int=False)),
|
||||
['1', '234']
|
||||
)
|
||||
self.assertEqual(list(splitbyx(str(12345678900), 3, format_int=False)),
|
||||
['12', '345', '678', '900']
|
||||
)
|
||||
self.assertEqual(list(splitbyx(str(1000000), 6, format_int=False)),
|
||||
['1', '000000']
|
||||
)
|
||||
Reference in New Issue
Block a user