previous string_handling located datetime and timestamp files have been moved to the datetime handling folder Update readme file with more information about currently covered areas
93 lines
3.4 KiB
Python
93 lines
3.4 KiB
Python
#!/usr/bin/env python3
|
|
|
|
"""
|
|
timestamp string checks
|
|
"""
|
|
|
|
from corelibs.datetime_handling.timestamp_convert import (
|
|
convert_timestamp, seconds_to_string, convert_to_seconds, TimeParseError, TimeUnitError
|
|
)
|
|
|
|
|
|
def main() -> None:
|
|
"""
|
|
Comment
|
|
"""
|
|
print("\n--- Testing convert_to_seconds ---\n")
|
|
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
|
|
"-45s", # -45 seconds
|
|
"-1h", # -1 hour
|
|
"-30m", # -30 minutes
|
|
"-2h 30m 45s", # -2 hours, 30 minutes, 45 seconds
|
|
"-1d 12h", # -1 day, 12 hours
|
|
"-3M 2d 4h", # -3 months, 2 days, 4 hours
|
|
"-1Y 2M 3d", # -1 year, 2 months, 3 days
|
|
"-2 hours 15 minutes", # -2 hours, 15 minutes
|
|
"-1 year 2 months", # -1 year, 2 months
|
|
"-2Y 6M 15d 8h 30m 45s", # Complex negative example
|
|
"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}")
|
|
|
|
print("\n--- Testing seconds_to_string and convert_timestamp ---\n")
|
|
|
|
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)
|
|
result_alt = convert_timestamp(time_value, show_microseconds=True)
|
|
print(f"Seconds to human readable: {time_value} => {result} / {result_alt}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|
|
# __END__
|