def test_ne__different_lists_same_length__returns_true() -> None: list1 = List([1, 2, 3]) list2 = List([3, 2, 1]) result = list1 != list2 assert result
def test_eq__equal_lists__returns_true() -> None: list1 = List([1, 2, 3]) list2 = List([1, 2, 3]) result = list1 == list2 assert result
def test_ne__equal_lists_returns__false() -> None: list1 = List([1, 2, 3]) list2 = List([1, 2, 3]) result = list1 != list2 assert not result
def test_eq__different_lists_same_length__returns_false() -> None: list1 = List([1, 2, 3]) list2 = List([3, 2, 1]) result = list1 == list2 assert not result
def test_remove__not_existing_element__returns_same_list() -> None: old_list = List([11, 22, 33]) with raises(ValueError) as e: old_list.remove(99) assert str(e.value) == '99 not in list'
def test_remove__element__not_contain_element() -> None: old_list = List([11, 22, 33]) new_list = old_list.remove(22) assert 22 not in new_list assert len(new_list) == len(old_list) - 1
def test_add__element__contains_new_element() -> None: old_list = List([11, 22, 33]) new_list = old_list.add(44) assert 44 in new_list assert list(new_list).index(44) == 3 assert len(new_list) == len(old_list) + 1
def test_lazy_reduce() -> None: lazy_number_1 = Mock(return_value=11) lazy_number_2 = Mock(return_value=22) lazy_number_3 = Mock(return_value=33) numbers = List([ lazy_number_1, lazy_number_2, lazy_number_3, ]) def lazy_add(number1: int, number2: Callable[[], int]) -> int: return number1 + number2() result = lazy_reduce(lazy_add, numbers) assert result == 66 lazy_number_1.assert_called_once() lazy_number_2.assert_called_once() lazy_number_3.assert_called_once()