diff --git a/tests/test_Configuration.py b/tests/test_Configuration.py index 00d5ddf7f76ca08f6a46e8719f77b03f56c70d57..b59d3c012747ba13ca39fdbb59175242f3210fdd 100644 --- a/tests/test_Configuration.py +++ b/tests/test_Configuration.py @@ -1,3 +1,4 @@ +import decimal import os import pytest @@ -42,3 +43,36 @@ def test_historical_default_base(ini_filename, expected_currency, use_switch, an arglist.append(any_date.isoformat()) config = config_from(ini_filename, arglist) assert config.args.base == expected_currency + +@pytest.mark.parametrize('amount,from_curr,preposition,to_curr', [ + (None, 'JPY', None, None), + (decimal.Decimal('1000'), 'chf', None, None), + (decimal.Decimal('999'), 'Eur', None, 'Chf'), + (decimal.Decimal('12.34'), 'gbp', 'IN', 'eur'), +]) +def test_historical_argparsing_success(amount, from_curr, preposition, to_curr, any_date): + arglist = ['historical', any_date.isoformat()] + arglist.extend(str(s) for s in [amount, from_curr, preposition, to_curr] + if s is not None) + config = config_from(os.devnull, arglist) + assert config.args.amount == amount + assert config.args.from_currency == from_curr.upper() + if to_curr is not None: + assert config.args.to_currency == to_curr.upper() + +@pytest.mark.parametrize('arglist', [ + ['100'], + ['120', 'dollars'], + ['to', '42', 'usd'], + ['99', 'usd', 'minus', 'jpy'], + ['usdjpy'], + ['44', 'eur', 'in', 'chf', 'pronto'], +]) +def test_historical_argparsing_failure(arglist, any_date): + arglist = ['historical', any_date.isoformat()] + arglist + try: + config = config_from(os.devnull, arglist) + except SystemExit: + pass + else: + assert not vars(config.args), "bad arglist succeeded"