From d09f47e6db7097f069c4a68d93660033e6f4af6a Mon Sep 17 00:00:00 2001 From: Patrick Jackson Date: Wed, 7 Sep 2016 21:33:20 -0700 Subject: [PATCH] binary-search: clean up --- .../binary-search/.cache/v/cache/lastfailed | 1 - exercises/binary-search/.cache/v/pep8/mtimes | 10 ----- exercises/binary-search/binary_search_test.py | 40 +++++++++++++------ exercises/binary-search/example.py | 14 +------ 4 files changed, 28 insertions(+), 37 deletions(-) delete mode 100644 exercises/binary-search/.cache/v/cache/lastfailed delete mode 100644 exercises/binary-search/.cache/v/pep8/mtimes diff --git a/exercises/binary-search/.cache/v/cache/lastfailed b/exercises/binary-search/.cache/v/cache/lastfailed deleted file mode 100644 index 9e26dfeeb6..0000000000 --- a/exercises/binary-search/.cache/v/cache/lastfailed +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/exercises/binary-search/.cache/v/pep8/mtimes b/exercises/binary-search/.cache/v/pep8/mtimes deleted file mode 100644 index 5667234fce..0000000000 --- a/exercises/binary-search/.cache/v/pep8/mtimes +++ /dev/null @@ -1,10 +0,0 @@ -{ - "/Users/michaelkunc/Desktop/xpython/exercises/binary-search/binary_search_test.py": [ - 1472913663.0, - [] - ], - "/Users/michaelkunc/Desktop/xpython/exercises/binary-search/example.py": [ - 1472914065.0, - [] - ] -} \ No newline at end of file diff --git a/exercises/binary-search/binary_search_test.py b/exercises/binary-search/binary_search_test.py index df0b9fd063..66782a6923 100644 --- a/exercises/binary-search/binary_search_test.py +++ b/exercises/binary-search/binary_search_test.py @@ -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() diff --git a/exercises/binary-search/example.py b/exercises/binary-search/example.py index 5d7c505f42..0b8f73a3c7 100644 --- a/exercises/binary-search/example.py +++ b/exercises/binary-search/example.py @@ -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: @@ -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.")