import unittest from utils.thai_word import ThaiWord from collections import deque class TestThaiWord(unittest.TestCase): def setUp(self) -> None: self.thw = ThaiWord() def test_pretty_text_to_numeric(self): tokens = deque(['ฮา','โหล','หนึ่ง','สอง','สาม','สี่']) self.assertEqual(self.thw.pretty(tokens), 'ฮาโหล 1234', 'should convert single word number in thai to numeric') def test_pretty_long_words_to_numeric(self): tokens1 = deque([ 'ปี','นี้','สอง','พัน','ห้า','ร้อย','หก','สิบ','เจ็ด','นะ', ' ', 'ปี','หน้า','ก็','สอง','พัน','ห้า','ร้อย','หก','สิบ','แปด' ]) self.assertEqual(self.thw.pretty(tokens1), 'ปีนี้ 2,567 นะ ปีหน้าก็ 2,568 ', 'should convert full-words number in thai to numeric in long words (case1)') tokens2 = deque([ 'อืม', ' ', 'อยาก', 'ได้', 'ราย', 'ได้', 'ยี่', 'สิบ', 'เอ็ดล้าน', 'แบบ', 'เข้า', 'บ้าง', ' ', 'ทำ', 'ยัง', 'ไง', 'ดี' ]) self.assertEqual(self.thw.pretty(tokens2), 'อืม อยากได้รายได้ 21,000,000 แบบเข้าบ้าง ทำยังไงดี', 'should convert full-words number in thai to numeric in long words (case2)') tokens3 = deque([ 'อืม',' ','อยาก','ได้','ราย','ได้','ยี่สิบ','เอ็ด','ล้าน', 'แบบ', 'ร้าน','พร้อม','ทำ','ยัง','ไง','ดี' ]) self.assertEqual(self.thw.pretty(tokens3), 'อืม อยากได้รายได้ 21,000,000 แบบร้านพร้อมทำยังไงดี', 'should convert full-words number in thai to numeric in long words (case3)') def test_pretty_word11_to_numeric(self): tokens1 = deque(['ซื้อ','มา','สิบ','เอ็ด','บาท']) self.assertEqual(self.thw.pretty(tokens1), 'ซื้อมา 11 บาท', 'should correct specific numeric "สิบ" and "เอ็ด"') tokens2 = deque(['ซื้อ','มา','สิบเอ็ด','บาท']) self.assertEqual(self.thw.pretty(tokens2), 'ซื้อมา 11 บาท', 'should correct specific numeric "สิบเอ็ด"') def test_pretty_word2x_to_numeric(self): tokens1 = deque(['ซื้อ','มา','ยี่','สิบ','ห้า','บาท']) self.assertEqual(self.thw.pretty(tokens1), 'ซื้อมา 25 บาท', 'should correct specific numeric "ยี่" and "สิบ"') token2 = deque(['ซื้อ','มา','ยี่สิบ','ห้า','บาท']) self.assertEqual(self.thw.pretty(token2), 'ซื้อมา 25 บาท', 'should correct specific numeric "ยี่สิบ"') def tearDown(self) -> None: self.thw = None