|
|
@@ -16,20 +16,23 @@ class unit_tests:
|
|
|
|
|
|
def cfg(self, name, ut, desc='Swap configuration'):
|
|
|
|
|
|
- for tl_arg, tl_chk in (
|
|
|
- (None, None),
|
|
|
- ('1', UniAmt('1')),
|
|
|
- ('33', UniAmt('33')),
|
|
|
- ('2%', 0.98),
|
|
|
- ('-2%', 1.02),
|
|
|
- ('3.333%', 0.96667),
|
|
|
- ('-3.333%', 1.03333),
|
|
|
- ('1.2345', UniAmt('1.2345'))):
|
|
|
- cfg_data = {'trade_limit': tl_arg}
|
|
|
+ for tl_arg, tl_chk, si_arg in (
|
|
|
+ (None, None, None),
|
|
|
+ ('1', UniAmt('1'), None),
|
|
|
+ ('33', UniAmt('33'), 7),
|
|
|
+ ('2%', 0.98, 14),
|
|
|
+ ('-2%', 1.02, 1),
|
|
|
+ ('3.333%', 0.96667, 1),
|
|
|
+ ('-3.333%', 1.03333, 3),
|
|
|
+ ('1.2345', UniAmt('1.2345'), 10)):
|
|
|
+ cfg_data = {
|
|
|
+ 'trade_limit': tl_arg,
|
|
|
+ 'stream_interval': None if si_arg is None else str(si_arg)}
|
|
|
sc = SwapCfg(Config(cfg_data))
|
|
|
vmsg(f' trade_limit: {tl_arg} => {sc.trade_limit}')
|
|
|
+ vmsg(f' stream_interval: {si_arg} => {sc.stream_interval}')
|
|
|
assert sc.trade_limit == tl_chk
|
|
|
- assert sc.stream_interval == 3
|
|
|
+ assert sc.stream_interval == sc.si.dfl if si_arg is None else si_arg
|
|
|
assert sc.stream_quantity == 0
|
|
|
|
|
|
vmsg('\n Testing error handling')
|
|
|
@@ -40,9 +43,21 @@ class unit_tests:
|
|
|
def bad2():
|
|
|
SwapCfg(Config({'trade_limit': '1.23x'}))
|
|
|
|
|
|
+ def bad3():
|
|
|
+ SwapCfg(Config({'stream_interval': 30}))
|
|
|
+
|
|
|
+ def bad4():
|
|
|
+ SwapCfg(Config({'stream_interval': 0}))
|
|
|
+
|
|
|
+ def bad5():
|
|
|
+ SwapCfg(Config({'stream_interval': 'x'}))
|
|
|
+
|
|
|
ut.process_bad_data((
|
|
|
('bad1', 'SwapCfgValueError', 'invalid parameter', bad1),
|
|
|
('bad2', 'SwapCfgValueError', 'invalid parameter', bad2),
|
|
|
+ ('bad3', 'SwapCfgValueError', 'invalid parameter', bad3),
|
|
|
+ ('bad4', 'SwapCfgValueError', 'invalid parameter', bad4),
|
|
|
+ ('bad5', 'SwapCfgValueError', 'invalid parameter', bad5),
|
|
|
), pfx='')
|
|
|
|
|
|
return True
|
|
|
@@ -78,15 +93,15 @@ class unit_tests:
|
|
|
|
|
|
vmsg(f'\nTesting asset {cyan(asset_name)}:')
|
|
|
|
|
|
- for limit, limit_chk, suf in (
|
|
|
- ('123.4567', 12340000000, '1234e7/3/0'),
|
|
|
- ('1.234567', 123400000, '1234e5/3/0'),
|
|
|
- ('0.01234567', 1234000, '1234e3/3/0'),
|
|
|
- ('0.00012345', 12345, '12345/3/0'),
|
|
|
- (None, 0, '0/3/0'),
|
|
|
+ for limit, limit_chk, si, suf in (
|
|
|
+ ('123.4567', 12340000000, None, '1234e7/3/0'),
|
|
|
+ ('1.234567', 123400000, 1, '1234e5/1/0'),
|
|
|
+ ('0.01234567', 1234000, 10, '1234e3/10/0'),
|
|
|
+ ('0.00012345', 12345, 20, '12345/20/0'),
|
|
|
+ (None, 0, 3, '0/3/0'),
|
|
|
):
|
|
|
vmsg('\nTesting memo initialization:')
|
|
|
- swap_cfg = SwapCfg(Config({'trade_limit': limit}))
|
|
|
+ swap_cfg = SwapCfg(Config({'trade_limit': limit, 'stream_interval': si}))
|
|
|
m = Memo(
|
|
|
swap_cfg,
|
|
|
proto,
|
|
|
@@ -112,7 +127,7 @@ class unit_tests:
|
|
|
assert p.asset == token or coin.upper()
|
|
|
assert p.address == addr.views[addr.view_pref]
|
|
|
assert p.trade_limit == limit_chk
|
|
|
- assert p.stream_interval == 3
|
|
|
+ assert p.stream_interval == si or swap_cfg.si.dfl, f'{p.stream_interval} != {swap_cfg.si.dfl}'
|
|
|
assert p.stream_quantity == 0 # auto
|
|
|
|
|
|
vmsg('\nTesting is_partial_memo():')
|