79 lines
2.7 KiB
Python
79 lines
2.7 KiB
Python
#!/usr/bin/env python3
|
|
|
|
"""
|
|
timestamp string checks
|
|
"""
|
|
|
|
from corelibs.string_handling.timestamp_strings import (
|
|
seconds_to_string, convert_to_seconds, TimeParseError, TimeUnitError
|
|
)
|
|
|
|
|
|
def main() -> None:
|
|
"""
|
|
Comment
|
|
"""
|
|
test_cases = [
|
|
"5M 6d", # 5 months, 6 days
|
|
"2h 30m 45s", # 2 hours, 30 minutes, 45 seconds
|
|
"1Y 2M 3d", # 1 year, 2 months, 3 days
|
|
"1h", # 1 hour
|
|
"30m", # 30 minutes
|
|
"2 hours 15 minutes", # 2 hours, 15 minutes
|
|
"1d 12h", # 1 day, 12 hours
|
|
"3M 2d 4h", # 3 months, 2 days, 4 hours
|
|
"45s", # 45 seconds
|
|
"1 year 2 months", # 1 year, 2 months
|
|
"2Y 6M 15d 8h 30m 45s", # Complex example
|
|
# invalid tests
|
|
"5M 6d 2M", # months appears twice
|
|
"2h 30m 45s 1h", # hours appears twice
|
|
"1d 2 days", # days appears twice (short and long form)
|
|
"30m 45 minutes", # minutes appears twice
|
|
"1Y 2 years", # years appears twice
|
|
"1x 2 yrs", # invalid names
|
|
|
|
123, # int
|
|
789.12, # float
|
|
456.56, # float, high
|
|
"4566", # int as string
|
|
"5551.12", # float as string
|
|
"5551.56", # float, high as string
|
|
]
|
|
|
|
for time_string in test_cases:
|
|
try:
|
|
result = convert_to_seconds(time_string)
|
|
print(f"Human readable to seconds: {time_string} => {result}")
|
|
except (TimeParseError, TimeUnitError) as e:
|
|
print(f"Error encountered for {time_string}: {type(e).__name__}: {e}")
|
|
|
|
test_values = [
|
|
'as is string',
|
|
-172800.001234, # -2 days, -0.001234 seconds
|
|
-90061.789, # -1 day, -1 hour, -1 minute, -1.789 seconds
|
|
-3661.456, # -1 hour, -1 minute, -1.456 seconds
|
|
-65.123, # -1 minute, -5.123 seconds
|
|
-1.5, # -1.5 seconds
|
|
-0.001, # -1 millisecond
|
|
-0.000001, # -1 microsecond
|
|
0, # 0 seconds
|
|
0.000001, # 1 microsecond
|
|
0.001, # 1 millisecond
|
|
1.5, # 1.5 seconds
|
|
65.123, # 1 minute, 5.123 seconds
|
|
3661.456, # 1 hour, 1 minute, 1.456 seconds
|
|
90061.789, # 1 day, 1 hour, 1 minute, 1.789 seconds
|
|
172800.001234 # 2 days, 0.001234 seconds
|
|
]
|
|
|
|
for time_value in test_values:
|
|
result = seconds_to_string(time_value, show_microseconds=True)
|
|
print(f"Seconds to human readable: {time_value} => {result}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|
|
# __END__
|