from random import randint from typing import Iterator from sort import selection_sort, binary_search def get_random_collection(min: int, max: int, size: int) -> Iterator[int]: return [randint(min, max) for _ in range(size)] def test_selection_sort(): xs = [5, 4, 3, 2, 1, 0] assert list(selection_sort(xs)) == sorted(xs) assert xs == [5, 4, 3, 2, 1, 0], "list was modified in `selection_sort` return a copy instead" xs = get_random_collection(0, 100, 100) print(xs) assert list(selection_sort(xs)) == sorted(xs) def test_binary_search(): xs = sorted(set(get_random_collection(0, 10000, 100))) for i, e in enumerate(xs): assert binary_search(xs, e) == i assert binary_search([], 1) == None assert binary_search([2], 1) == None assert binary_search([2, 3], 1) == None