diff --git a/app/test_split_integer.py b/app/test_split_integer.py index ef3aa668a..ec4d5d08a 100644 --- a/app/test_split_integer.py +++ b/app/test_split_integer.py @@ -1,21 +1,63 @@ -from app.split_integer import split_integer +import pytest +from app import split_integer -def test_sum_of_the_parts_should_be_equal_to_value() -> None: - pass +def test_basic_case() -> None: + assert split_integer.split_integer(8, 1) == [8] -def test_should_split_into_equal_parts_when_value_divisible_by_parts() -> None: - pass +def test_split_integer_6_2() -> None: + assert split_integer.split_integer(6, 2) == [3, 3] -def test_should_return_part_equals_to_value_when_split_into_one_part() -> None: - pass +def test_split_on_equal_part() -> None: + assert split_integer.split_integer(17, 4) == [4, 4, 4, 5] -def test_parts_should_be_sorted_when_they_are_not_equal() -> None: - pass +def test_split_and_increment_the_last_number() -> None: + assert split_integer.split_integer(32, 6) == [5, 5, 5, 5, 6, 6] -def test_should_add_zeros_when_value_is_less_than_number_of_parts() -> None: - pass +def test_split_on_incorrect_parts() -> None: + assert split_integer.split_integer(8, 2) == [4, 4] + assert split_integer.split_integer(10, 3) == [3, 3, 4] + + +def test_split_on_different_parts() -> None: + assert split_integer.split_integer(2, 5) == [0, 0, 0, 1, 1] + assert split_integer.split_integer(100, 10) == [10] * 10 + + +@pytest.mark.parametrize( + "value, number_of_parts, expected", + [ + (10, 1, [10]), + (8, 2, [4, 4]), + (17, 4, [4, 4, 4, 5]), + (32, 6, [5, 5, 5, 5, 6, 6]), + (2, 5, [0, 0, 0, 1, 1]), + (10, 3, [3, 3, 4]), + (100, 10, [10] * 10), + ] +) +def test_split_integer_exact( + value: int, + number_of_parts: int, + expected: list +) -> None: + assert split_integer.split_integer(value, number_of_parts) == expected + + +def test_sorted_ascending() -> None: + assert ( + sorted(split_integer.split_integer(17, 4)) + == split_integer.split_integer(17, 4) + ) + + +def test_max_min_difference() -> None: + assert ( + max(split_integer.split_integer(32, 6)) + - min(split_integer.split_integer(32, 6)) + <= 1 + )