diff --git a/src/random_number.py b/src/random_number.py index 4a1dffe4..a1bba566 100644 --- a/src/random_number.py +++ b/src/random_number.py @@ -4,3 +4,43 @@ # Output: # The random number is: 4 # +import random +import sys + + +def random_positive_int() -> int: + return random.randint(0, sys.maxsize) + + +# maybe limited_random... is a better name? +def random_limited_positive_int(upper_limit): + assert isinstance(upper_limit, int) + try: + assert upper_limit > 0 and upper_limit <= sys.maxsize + except AssertionError as e: + raise ValueError("input a positive non-zero number") from e + return random.randint(0, upper_limit) + + +def main(): + print(random_positive_int()) + + user_input = None + while user_input is None: + try: + user_input = int( + input( + "Inserisci un limite superiore INTERO e POSITIVO per il range di generazione: " + ) + ) + print(random_limited_positive_int(user_input)) + except KeyboardInterrupt: + print(" ") + sys.exit(1) + except Exception as e: + print(e) + user_input = None + + +if __name__ == "__main__": + main() diff --git a/tests/test_random_number.py b/tests/test_random_number.py new file mode 100644 index 00000000..89cbb2fb --- /dev/null +++ b/tests/test_random_number.py @@ -0,0 +1,21 @@ +from src.random_number import random_positive_int, random_limited_positive_int +import sys +import pytest + + +def test_random_number(): + random_int = random_positive_int() + assert isinstance(random_int, int) + assert random_int >= 0 + assert random_int <= sys.maxsize + + +@pytest.mark.parametrize("upper_limit", [0, -3, sys.maxsize, "a", 4.5, 5000, 1]) +def test_random_limited(upper_limit): + try: + random_limited_int = random_limited_positive_int(upper_limit) + assert isinstance(random_limited_int, int) + assert random_limited_int >= 0 and random_limited_int <= upper_limit + + except Exception: + assert True