from tasks import * from typing import List, Callable def internal_test_transform(func: Callable[[List[int], int, int], List[int]]): assert func([], -1, 1) == [] assert func([-3, -2, -1, 0, 1, 2, 3], -2, 2) == [4, 1, 0, 1, 4] def test_transform_simple(): internal_test_transform(transform_simple) def test_transform_list_comprehensions(): internal_test_transform(transform_list_comprehensions) def test_transform_generators(): internal_test_transform(transform_generators) def internal_test_conditional_sum(func: Callable[[List[List[int]]], int]): assert func([ [1, 2], [3, 4] ]) == 20 assert func([ [0, -2], [-2, 4] ]) == 24 def test_conditional_sum_2d_simple(): internal_test_conditional_sum(conditional_sum_2d_simple) def test_conditional_sum_2d(): internal_test_conditional_sum(conditional_sum_2d) def test_reverse_array(): assert reverse_array([], 0, 0) == [] assert reverse_array([1, 2, 3], 0, 2) == [3, 2, 1] assert reverse_array([1, 2, 3, 4, 5], 1, 3) == [4, 3, 2] def test_verbing(): assert verbing('read') == 'reading' assert verbing('reading') == 'readingly' assert verbing('aa') == 'aa' assert verbing('') == '' def test_front_back(): assert front_back([1, 2, 3, 4], [5, 6]) == [1, 2, 5, 3, 4, 6] assert front_back([1, 2, 3, 4, 5], [6, 7]) == [1, 2, 3, 6, 4, 5, 7] assert front_back([1, 2, 3, 4, 5], [6, 7, 8]) == [1, 2, 3, 6, 7, 4, 5, 8] assert front_back([1, 2, 3], []) == [1, 2, 3] assert front_back([], [1, 2, 3]) == [1, 2, 3] assert front_back([], []) == [] def test_remove_adjacent(): assert remove_adjacent([]) == [] assert remove_adjacent([1]) == [1] assert remove_adjacent([1, 2]) == [1, 2] assert remove_adjacent([1, 1]) == [1] assert remove_adjacent([1, 1, 1]) == [1] assert remove_adjacent([1, 2, 2, 3]) == [1, 2, 3] assert remove_adjacent([1, 2, 2, 3, 3]) == [1, 2, 3] assert remove_adjacent([1, 2, 3]) == [1, 2, 3] assert remove_adjacent([1, 2, 3, 2]) == [1, 2, 3, 2]