def testHihgest(self): arr = [1, 2, 3, 4, 5] elem = 5 index = binary_search(arr, elem) self.assertEqual(index, 4)
def testLowest(self): arr = [1, 2, 3, 4, 5] elem = 1 index = binary_search(arr, elem) self.assertEqual(index, 0)
def testNotInList(self): arr = [1, 2, 3, 4, 5] elem = 6 index = binary_search(arr, elem) self.assertEqual(index, -1)
def testMiddle(self): arr = [1, 2, 3, 4, 5] elem = 3 index = binary_search(arr, elem) self.assertEqual(index, 2)
def test_binary_search(self): arr = ['aaa', 'bbb', 'ccc', 'ddd', 'eee'] self.assertEqual(-1, binary_search(' ', arr)) self.assertEqual(-1, binary_search('a', arr)) self.assertEqual(-1, binary_search('ab', arr)) self.assertEqual(-1, binary_search('bc', arr)) self.assertEqual(-1, binary_search('cd', arr)) self.assertEqual(-1, binary_search('de', arr)) self.assertEqual(-1, binary_search('ef', arr)) self.assertEqual(0, binary_search('aaa', arr)) self.assertEqual(1, binary_search('bbb', arr)) self.assertEqual(2, binary_search('ccc', arr)) self.assertEqual(3, binary_search('ddd', arr)) self.assertEqual(4, binary_search('eee', arr)) # needle exists in haystack for _ in range(1000): arr1 = random_int_array(20, 1000) if arr1: arr1 = list(set(arr1)) arr1.sort() needle = choice(arr1) print(arr1, needle) self.assertEqual(arr1.index(needle), binary_search(needle, arr1)) # random needle value in haystack for _ in range(1000): arr1 = random_int_array(20, 1000) if arr1: arr1 = list(set(arr1)) arr1.sort() needle = randrange(1000) print(arr1, needle) try: index_val = arr1.index(needle) except ValueError: index_val = -1 print(binary_search(needle, arr1), index_val) self.assertEqual(index_val, binary_search(needle, arr1))
def testEmpty(self): arr = [] elem = 1 self.assertEqual(binary_search(arr, elem), -1)