mirror of
https://github.com/bblaz/num2words.git
synced 2025-12-06 06:42:25 +00:00
Punt string handling to python Decimal object, this correctly represents both integers and floats (except with regards to trailing zeros) Change command line tests to reflect handling of ints
97 lines
2.8 KiB
Python
97 lines
2.8 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
import os
|
|
import unittest
|
|
|
|
import delegator
|
|
import num2words
|
|
|
|
|
|
class CliCaller(object):
|
|
|
|
def __init__(self):
|
|
self.cmd = os.path.realpath(os.path.join(os.path.dirname(__file__),
|
|
"..", "bin", "num2words"))
|
|
self.cmd_list = ["python", self.cmd]
|
|
|
|
def run_cmd(self, *args):
|
|
cmd_list = self.cmd_list + [str(arg) for arg in args]
|
|
cmd = " ".join(cmd_list)
|
|
return delegator.run(cmd)
|
|
|
|
|
|
class CliTestCase(unittest.TestCase):
|
|
"""Test the command line app"""
|
|
|
|
def setUp(self):
|
|
self.cli = CliCaller()
|
|
|
|
def test_cli_help(self):
|
|
"""num2words without arguments should exit with status 1
|
|
and show docopt's default short usage message
|
|
"""
|
|
output = self.cli.run_cmd()
|
|
self.assertEqual(output.return_code, 1)
|
|
self.assertTrue(output.err.startswith('Usage:'))
|
|
|
|
def test_cli_list_langs(self):
|
|
"""You should be able to list all availabe languages
|
|
"""
|
|
output = self.cli.run_cmd('--list-languages')
|
|
self.assertEqual(
|
|
sorted(list(num2words.CONVERTER_CLASSES.keys())),
|
|
output.out.strip().split(os.linesep)
|
|
)
|
|
output = self.cli.run_cmd('-L')
|
|
self.assertEqual(
|
|
sorted(list(num2words.CONVERTER_CLASSES.keys())),
|
|
output.out.strip().split(os.linesep)
|
|
)
|
|
|
|
def test_cli_list_converters(self):
|
|
"""You should be able to list all available converters
|
|
"""
|
|
output = self.cli.run_cmd('--list-converters')
|
|
self.assertEqual(
|
|
sorted(list(num2words.CONVERTES_TYPES)),
|
|
output.out.strip().split(os.linesep)
|
|
)
|
|
output = self.cli.run_cmd('-C')
|
|
self.assertEqual(
|
|
sorted(list(num2words.CONVERTES_TYPES)),
|
|
output.out.strip().split(os.linesep)
|
|
)
|
|
|
|
def test_cli_default_lang(self):
|
|
"""Default to english
|
|
"""
|
|
output = self.cli.run_cmd(150)
|
|
self.assertEqual(output.return_code, 0)
|
|
self.assertEqual(
|
|
output.out.strip(),
|
|
"one hundred and fifty"
|
|
)
|
|
|
|
def test_cli_with_lang(self):
|
|
"""You should be able to specify a language
|
|
"""
|
|
output = self.cli.run_cmd(150, '--lang', 'es')
|
|
self.assertEqual(output.return_code, 0)
|
|
self.assertEqual(
|
|
output.out.strip(),
|
|
"ciento cincuenta"
|
|
)
|
|
|
|
def test_cli_with_lang_to(self):
|
|
"""You should be able to specify a language
|
|
"""
|
|
output = self.cli.run_cmd(150.55, '--lang', 'es', '--to', 'currency')
|
|
self.assertEqual(output.return_code, 0)
|
|
self.assertEqual(
|
|
output.out.strip(),
|
|
"ciento cincuenta euros con cincuenta y cinco centimos"
|
|
)
|