|
from combine import combine |
|
|
|
|
|
def test_empty_list(): |
|
assert combine([], lambda x, y: x + y) == [] |
|
|
|
def test_single_item(): |
|
assert combine(["hello"], lambda x, y: x + y) == ["hello"] |
|
|
|
def test_two_items(): |
|
assert combine(["hello", "world"], lambda x, y: x + y) == ["helloworld"] |
|
|
|
def test_sum(): |
|
assert combine([1, 2, 3, 4], lambda x, y: x + y) == [10] |
|
|
|
|
|
def test_add_if_even(): |
|
def add_if_even(x: int, y: int) -> int | None: |
|
if (x + y) % 2 == 0: |
|
return x + y |
|
return None |
|
|
|
assert combine([1, 3, 1, 4], add_if_even) == [4, 1, 4] |
|
assert combine([1, 3, 2, 4], add_if_even) == [10] |
|
|
|
|
|
def test_join_if_same_letter(): |
|
def join_if_same_letter(x: str, y: str) -> str | None: |
|
if x[0] == y[0]: |
|
return x + y |
|
return None |
|
|
|
assert combine(["hello", "hi", "home", "world", "welcome"], join_if_same_letter) == ["hellohihome", "worldwelcome"] |
|
|
|
|
|
def test_no_combinations(): |
|
def never_combine(x: int, y: int) -> None: |
|
return None |
|
|
|
input_list = [1, 2, 3, 4] |
|
assert combine(input_list, never_combine) == input_list |
|
|