from advent22_api.core.helpers import spread def test_easy() -> None: assert spread([1, 4], 0) == [] assert spread([1, 4], 1) == [2] assert spread([1, 4], 2) == [2, 3] assert spread([1, 4], 5) == [2, 3, 1, 2, 3] assert spread([1, 4], 10) == [2, 3, 1, 2, 3, 4, 1, 2, 3, 4] def test_tight() -> None: assert spread([1, 2], 0) == [] assert spread([1, 2], 1) == [1] assert spread([1, 2], 2) == [1, 2] assert spread([1, 2], 5) == [1, 2, 1, 2, 1] assert spread([1, 2], 10) == [1, 2, 1, 2, 1, 2, 1, 2, 1, 2] assert spread([1, 2, 3, 4, 5], 0) == [] assert spread([1, 2, 3, 4, 5], 1) == [1] assert spread([1, 2, 3, 4, 5], 2) == [1, 2] assert spread([1, 2, 3, 4, 5], 5) == [1, 2, 3, 4, 5] assert spread([1, 2, 3, 4, 5], 10) == [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] def test_more_given() -> None: assert spread([0, 5, 10], 0) == [] assert spread([0, 5, 10], 1) == [1] assert spread([0, 5, 10], 2) == [1, 2] assert spread([0, 5, 10], 5) == [1, 2, 3, 4, 6] assert spread([0, 5, 10], 10) == [1, 2, 3, 4, 6, 7, 8, 9, 0, 1] assert spread([0, 1, 2, 5, 10], 0) == [] assert spread([0, 1, 2, 5, 10], 1) == [3] assert spread([0, 1, 2, 5, 10], 2) == [3, 4] assert spread([0, 1, 2, 5, 10], 5) == [3, 4, 6, 7, 8] assert spread([0, 1, 2, 5, 10], 10) == [3, 4, 6, 7, 8, 9, 0, 1, 2, 3] def test_one_given() -> None: assert spread([0], 0) == [] assert spread([0], 1) == [1] assert spread([0], 2) == [1, 2] assert spread([0], 5) == [1, 2, 3, 4, 5] assert spread([0], 10) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] assert spread([1], 0) == [] assert spread([1], 1) == [1] assert spread([1], 2) == [1, 1] assert spread([1], 5) == [1, 1, 1, 1, 1] assert spread([1], 10) == [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] assert spread([2], 0) == [] assert spread([2], 1) == [1] assert spread([2], 2) == [1, 1] assert spread([2], 5) == [1, 1, 2, 1, 2] assert spread([2], 10) == [1, 1, 2, 1, 2, 1, 2, 1, 2, 1] assert spread([5], 0) == [] assert spread([5], 1) == [1] assert spread([5], 2) == [1, 2] assert spread([5], 5) == [1, 2, 3, 4, 1] assert spread([5], 10) == [1, 2, 3, 4, 1, 2, 3, 4, 5, 1] assert spread([10], 0) == [] assert spread([10], 1) == [1] assert spread([10], 2) == [1, 2] assert spread([10], 5) == [1, 2, 3, 4, 5] assert spread([10], 10) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 1] def test_none_given() -> None: assert spread([], 0) == [] assert spread([], 1) == [1] assert spread([], 2) == [1, 2] assert spread([], 5) == [1, 2, 3, 4, 5] assert spread([], 10) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]