jw-python/test/cast/main.py
Jan Lindemann a0234e7d54 Add module jwutils.cast
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-01-16 12:39:20 +01:00

44 lines
1.4 KiB
Python

from jwutils.cast import *
from jwutils.log import *
set_level(DEBUG)
set_flags('console,color,position,prio')
test_data = [
(bool, 'true', True, True),
(bool, 'False', True, False),
(bool, 'yes', True, True),
(bool, 'nah', None, None),
(bool, 'duh', None, None),
(bool, '11', 11, None),
(bool, '22', 22, None),
(bool, '0', False,False),
(bool, '', None, None),
(bool, None, Exception(), Exception()),
(bool, '-1', -1, None),
(bool, '1.6', None, None),
(int, '1', 1, None),
(int, '22', 22, 22),
(int, '0', 0, 0),
(int, '-1', -1, -1),
(int, '-32', -32, -32),
(int, 123, 132, 132),
(str, '', '', ''),
(str, None, Exception(), Exception()),
(str, 'This is a string', 'This is a string', 'This is a string')
]
status = 0
for tp, s, guessed_val, cast_val in test_data:
try:
slog(INFO, f'guessed type of "{s}" = "{guess_type(s)}", should be "{tp}"')
slog(INFO, f'cast_str("{s}") = "{cast_str(s)}"')
slog(INFO, f'cast_str("{s}, {tp}") = "{cast_str(s, target_type=tp)}"')
except Exception as e:
if s is None:
slog(INFO, f'guessed type of "{s}" = Exception, should be "Exception"')
continue
slog(ERR, f'Test failed for "{s}": ({e})')
status = 1
exit(status)