def test_binary_search_reversed(): # Test a basic case haystack = list(reversed(range(100))) assert binary_search(50, haystack, decreasing=True) == (50, 50) # Test a case with odd len haystack = list(reversed(range(99))) assert binary_search(50, haystack, decreasing=True) == (49, 49) # Range test case assert binary_search(3.1, haystack, decreasing=True) == (95, 96) assert binary_search(97.9, haystack, decreasing=True) == (1, 2) assert binary_search(0.1, haystack, decreasing=True) == (98, 99) # Test the case with needle outside the haystack range assert binary_search(-1, haystack, decreasing=True) == (99, 99) assert binary_search(99, haystack, decreasing=True) == (1, 1) # Corner cases assert binary_search(0, haystack, decreasing=True) == (99, 99) assert binary_search(98, haystack, decreasing=True) == (1, 1)
def test_binary_search(): # Test a basic case haystack = list(range(100)) assert binary_search(50, haystack) == (51, 51) # Test a case with odd len haystack = list(range(99)) assert binary_search(50, haystack) == (51, 51) # Range test case assert binary_search(3.1, haystack) == (4, 5) assert binary_search(97.9, haystack) == (98, 99) assert binary_search(0.1, haystack) == (1, 2) # Test the case with needle outside the haystack range assert binary_search(-1, haystack) == (1, 1) assert binary_search(99, haystack) == (99, 99) # Corner cases assert binary_search(0, haystack) == (1, 1) assert binary_search(98, haystack) == (99, 99)