from cpl.core.utils.number import Number def test_is_number(): assert Number.is_number(10) is True assert Number.is_number(3.14) is True assert Number.is_number("42") is True assert Number.is_number("3.14") is True assert Number.is_number("-10") is True assert Number.is_number("+5.5") is True assert Number.is_number("abc") is False assert Number.is_number("") is False assert Number.is_number(None) is False assert Number.is_number(True) is False def test_to_number(): assert Number.to_number("42") == 42 assert Number.to_number("3.14") == 3.14 assert Number.to_number(10) == 10 assert Number.to_number(3.14) == 3.14 assert Number.to_number("-7") == -7 assert Number.to_number("+8.2") == 8.2 # Optional: define how errors behave try: Number.to_number("abc") except ValueError: pass else: assert False, "Expected ValueError for non-numeric input" try: Number.to_number(None) except (TypeError, ValueError): pass else: assert False, "Expected exception for None input"