Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion exercises/binary-search/.cache/v/cache/lastfailed

This file was deleted.

10 changes: 0 additions & 10 deletions exercises/binary-search/.cache/v/pep8/mtimes

This file was deleted.

40 changes: 27 additions & 13 deletions exercises/binary-search/binary_search_test.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,41 @@
import unittest

from example import binary_search
from binary_search import binary_search


class BinarySearchTests(unittest.TestCase):

def test_raises_error_if_list_is_not_sorted(self):
self.assertRaises(ValueError, binary_search, [44, 5, 2, 1, 4], 6)
def test_finds_value_in_array_with_one_element(self):
self.assertEqual(0, binary_search([6], 6))

def test_raises_error_if_list_is_empty(self):
self.assertRaises(ValueError, binary_search, [], 1)
def test_finds_value_in_middle_of_array(self):
self.assertEqual(3, binary_search([1, 3, 4, 6, 8, 9, 11], 6))

def test_finds_value_at_beginning_of_array(self):
self.assertEqual(0, binary_search([1, 3, 4, 6, 8, 9, 11], 1))

def test_finds_value_at_end_of_array(self):
self.assertEqual(6, binary_search([1, 3, 4, 6, 8, 9, 11], 11))

def test_list_item_not_found(self):
self.assertEqual("Item not found.",
binary_search([1, 2, 3, 4, 5, 6], 23))
def test_finds_value_in_array_of_odd_length(self):
self.assertEqual(9, binary_search(
[1, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 634], 144))

def test_list_item_found(self):
self.assertEqual(3, binary_search([1, 2, 3, 4, 5, 6, 7, 8], 4))
def test_finds_value_in_array_of_even_length(self):
self.assertEqual(5, binary_search(
[1, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377], 21))

def test_list_item_found_larger_list(self):
self.assertEqual(7, binary_search(
[1, 5, 6, 7, 8, 9, 12, 14, 16, 22, 47, 100, 123], 14))
def test_identifies_value_missing(self):
self.assertRaises(ValueError, binary_search, [1, 3, 4, 6, 8, 9, 11], 7)

def test_value_smaller_than_arrays_minimum(self):
self.assertRaises(ValueError, binary_search, [1, 3, 4, 6, 8, 9, 11], 0)

def test_value_larger_than_arrays_maximum(self):
self.assertRaises(ValueError, binary_search, [1, 3, 4, 6, 8, 9, 11], 13)

def test_empty_array(self):
self.assertRaises(ValueError, binary_search, [], 1)

if __name__ == '__main__':
unittest.main()
14 changes: 1 addition & 13 deletions exercises/binary-search/example.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
def binary_search(search_list, value):
list_empty(search_list)
list_sorted(search_list)
low = 0
high = len(search_list) - 1
while low <= high:
Expand All @@ -11,14 +9,4 @@ def binary_search(search_list, value):
low = middle + 1
else:
return middle
return "Item not found."


def list_sorted(search_list):
if not sorted(search_list) == search_list:
raise ValueError("This list must be sorted.")


def list_empty(search_list):
if not search_list:
raise ValueError('This list has no items.')
raise ValueError("Value not found.")