util2.format_elapsed_hr(): add rel_now, show_secs params; add test
This commit is contained in:
parent
b6acf87916
commit
d6dba0d7f1
2 changed files with 75 additions and 12 deletions
|
|
@ -132,18 +132,30 @@ def format_elapsed_days_hr(t,now=None,cached={}):
|
|||
cached[e] = f'{days} day{suf(days)} ' + ('ago' if e > 0 else 'in the future')
|
||||
return cached[e]
|
||||
|
||||
def format_elapsed_hr(t,now=None,cached={}):
|
||||
def format_elapsed_hr(t, now=None, cached={}, rel_now=True, show_secs=False):
|
||||
e = int((now or time.time()) - t)
|
||||
if not e in cached:
|
||||
key = f'{e}:{rel_now}:{show_secs}'
|
||||
if not key in cached:
|
||||
def add_suffix():
|
||||
return (
|
||||
((' ago' if rel_now else '') if e > 0 else
|
||||
(' in the future' if rel_now else ' (negative elapsed)'))
|
||||
if (abs_e if show_secs else abs_e // 60) else
|
||||
('just now' if rel_now else ('0 ' + ('seconds' if show_secs else 'minutes')))
|
||||
)
|
||||
abs_e = abs(e)
|
||||
cached[e] = ' '.join(
|
||||
f'{n} {desc}{suf(n)}' for desc,n in (
|
||||
('day', abs_e // 86400),
|
||||
('hour', abs_e // 3600 % 24),
|
||||
('minute', abs_e // 60 % 60),
|
||||
) if n
|
||||
) + (' ago' if e > 0 else ' in the future') if abs_e // 60 else 'just now'
|
||||
return cached[e]
|
||||
data = (
|
||||
('day', abs_e // 86400),
|
||||
('hour', abs_e // 3600 % 24),
|
||||
('minute', abs_e // 60 % 60),
|
||||
('second', abs_e % 60),
|
||||
) if show_secs else (
|
||||
('day', abs_e // 86400),
|
||||
('hour', abs_e // 3600 % 24),
|
||||
('minute', abs_e // 60 % 60),
|
||||
)
|
||||
cached[key] = ' '.join(f'{n} {desc}{suf(n)}' for desc, n in data if n) + add_suffix()
|
||||
return cached[key]
|
||||
|
||||
def pretty_format(s,width=80,pfx=''):
|
||||
out = []
|
||||
|
|
|
|||
|
|
@ -4,14 +4,65 @@
|
|||
test.unit_tests_d.ut_misc: miscellaneous unit tests for the MMGen suite
|
||||
"""
|
||||
|
||||
import re
|
||||
import re, time
|
||||
from collections import namedtuple
|
||||
|
||||
from mmgen.color import yellow, blue
|
||||
from mmgen.color import yellow, blue, brown
|
||||
from ..include.common import vmsg
|
||||
|
||||
class unit_tests:
|
||||
|
||||
def format_elapsed_hr(self, name, ut):
|
||||
from mmgen.util2 import format_elapsed_hr
|
||||
|
||||
vectors = (
|
||||
# t now rel_now show_secs out
|
||||
(1, 1, False, False, '0 minutes'),
|
||||
(1, 1, True, False, 'just now'),
|
||||
(0, -2, True, False, 'just now'),
|
||||
(0, -62, True, False, '1 minute in the future'),
|
||||
(0, -62, False, False, '1 minute (negative elapsed)'),
|
||||
(0, 7, False, False, '0 minutes'),
|
||||
(0, 7, True, False, 'just now'),
|
||||
(0, 60, True, False, '1 minute ago'),
|
||||
(0, 67, True, False, '1 minute ago'),
|
||||
(0, 7200, True, False, '2 hours ago'),
|
||||
(0, 3600 + 180 + 1, True, False, '1 hour 3 minutes ago'),
|
||||
(0, 3600*27 + 180 + 7, True, False, '1 day 3 hours 3 minutes ago'),
|
||||
(0, 3600*24*367 + 180 + 7, True, False, '367 days 3 minutes ago'),
|
||||
|
||||
(1, 1, False, True, '0 seconds'),
|
||||
(1, 1, True, True, 'just now'),
|
||||
(0, -2, True, True, '2 seconds in the future'),
|
||||
(0, -62, True, True, '1 minute 2 seconds in the future'),
|
||||
(0, -62, False, True, '1 minute 2 seconds (negative elapsed)'),
|
||||
(0, 7, False, True, '7 seconds'),
|
||||
(0, 7, True, True, '7 seconds ago'),
|
||||
(0, 60, False, True, '1 minute'),
|
||||
(0, 67, False, True, '1 minute 7 seconds'),
|
||||
(0, 7200, False, True, '2 hours'),
|
||||
(0, 3600 + 180 + 1, False, True, '1 hour 3 minutes 1 second'),
|
||||
(0, 3600*27 + 180 + 7, False, True, '1 day 3 hours 3 minutes 7 seconds'),
|
||||
(0, 3600*24*367 + 180 + 7, True, True, '367 days 3 minutes 7 seconds ago'),
|
||||
)
|
||||
|
||||
fs = ' {:7} {:9} {:<8} {}'
|
||||
vmsg(brown(' vectors:'))
|
||||
vmsg(fs.format('REL_NOW', 'SHOW_SECS', 'ELAPSED', 'OUTPUT'))
|
||||
for (t, now, rel_now, show_secs, out_chk) in vectors:
|
||||
out = format_elapsed_hr(t, now, rel_now=rel_now, show_secs=show_secs)
|
||||
assert out == out_chk, f'{out} != {out_chk}'
|
||||
vmsg(fs.format(repr(rel_now), repr(show_secs), now-t, out))
|
||||
|
||||
vmsg(brown(' real time:'))
|
||||
start = time.time() - 3600 - 127
|
||||
ret = format_elapsed_hr(start) # test old default behavior
|
||||
vmsg(f' {3600 - 127:<8} {ret}')
|
||||
ret = format_elapsed_hr(start, show_secs=True)
|
||||
vmsg(f' {3600 - 127:<8} {ret}')
|
||||
|
||||
return True
|
||||
|
||||
def xmrwallet_uarg_info(self,name,ut): # WIP
|
||||
from mmgen.xmrwallet import xmrwallet_uarg_info as uarg_info
|
||||
vs = namedtuple('vector_data', ['text', 'groups'])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue