summary refs log tree commit diff stats
path: root/c/binary-search/test_binary_search.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/binary-search/test_binary_search.c')
-rw-r--r--c/binary-search/test_binary_search.c107
1 files changed, 107 insertions, 0 deletions
diff --git a/c/binary-search/test_binary_search.c b/c/binary-search/test_binary_search.c
new file mode 100644
index 0000000..6f95a94
--- /dev/null
+++ b/c/binary-search/test_binary_search.c
@@ -0,0 +1,107 @@
+#include "test-framework/unity.h"
+#include "binary_search.h"
+
+void setUp(void)
+{
+}
+
+void tearDown(void)
+{
+}
+
+static void test_finds_a_value_in_an_array_with_one_element(void)
+{
+   int arr[] = { 6 };
+   size_t length = sizeof(arr) / sizeof(arr[0]);
+   TEST_ASSERT(&arr[0] == binary_search(6, arr, length));
+}
+
+static void test_a_value_in_the_middle_of_an_array(void)
+{
+   int arr[] = { 1, 3, 4, 6, 8, 9, 11 };
+   size_t length = sizeof(arr) / sizeof(arr[0]);
+   TEST_ASSERT(&arr[3] == binary_search(6, arr, length));
+}
+
+static void test_finds_a_value_at_the_beginning_of_an_array(void)
+{
+   int arr[] = { 1, 3, 4, 6, 8, 9, 11 };
+   size_t length = sizeof(arr) / sizeof(arr[0]);
+   TEST_ASSERT(&arr[0] == binary_search(1, arr, length));
+}
+
+static void test_finds_a_value_at_the_end_of_an_array(void)
+{
+   int arr[] = { 1, 3, 4, 6, 8, 9, 11 };
+   size_t length = sizeof(arr) / sizeof(arr[0]);
+   TEST_ASSERT(&arr[6] == binary_search(11, arr, length));
+}
+
+static void test_finds_a_value_in_an_array_of_odd_length(void)
+{
+   int arr[] = { 1, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 634 };
+   size_t length = sizeof(arr) / sizeof(arr[0]);
+   TEST_ASSERT(&arr[9] == binary_search(144, arr, length));
+}
+
+static void test_finds_a_value_in_an_array_of_even_length(void)
+{
+   int arr[] = { 1, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377 };
+   size_t length = sizeof(arr) / sizeof(arr[0]);
+   TEST_ASSERT(&arr[5] == binary_search(21, arr, length));
+}
+
+static void test_identifies_that_a_value_is_not_included_in_the_array(void)
+{
+   int arr[] = { 1, 3, 4, 6, 8, 9, 11 };
+   size_t length = sizeof(arr) / sizeof(arr[0]);
+   TEST_ASSERT(NULL == binary_search(7, arr, length));
+}
+
+static void
+test_a_value_smaller_than_the_arrays_smallest_value_is_not_found(void)
+{
+   int arr[] = { 1, 3, 4, 6, 8, 9, 11 };
+   size_t length = sizeof(arr) / sizeof(arr[0]);
+   TEST_ASSERT(NULL == binary_search(0, arr, length));
+}
+
+static void test_a_value_larger_than_the_arrays_largest_value_is_not_found(void)
+{
+   int arr[] = { 1, 3, 4, 6, 8, 9, 11 };
+   size_t length = sizeof(arr) / sizeof(arr[0]);
+   TEST_ASSERT(NULL == binary_search(13, arr, length));
+}
+
+static void test_nothing_is_found_in_an_empty_array(void)
+{
+   int arr[] = { 1 };
+   size_t length = 0;
+   TEST_ASSERT(NULL == binary_search(1, arr, length));
+}
+
+static void test_nothing_is_found_when_the_left_and_right_bounds_cross(void)
+{
+   int arr[] = { 1, 2 };
+   size_t length = sizeof(arr) / sizeof(arr[0]);
+   TEST_ASSERT(NULL == binary_search(0, arr, length));
+}
+
+int main(void)
+{
+   UnityBegin("test_binary_search.c");
+
+   RUN_TEST(test_finds_a_value_in_an_array_with_one_element);
+   RUN_TEST(test_a_value_in_the_middle_of_an_array);
+   RUN_TEST(test_finds_a_value_at_the_beginning_of_an_array);
+   RUN_TEST(test_finds_a_value_at_the_end_of_an_array);
+   RUN_TEST(test_finds_a_value_in_an_array_of_odd_length);
+   RUN_TEST(test_finds_a_value_in_an_array_of_even_length);
+   RUN_TEST(test_identifies_that_a_value_is_not_included_in_the_array);
+   RUN_TEST(test_a_value_smaller_than_the_arrays_smallest_value_is_not_found);
+   RUN_TEST(test_a_value_larger_than_the_arrays_largest_value_is_not_found);
+   RUN_TEST(test_nothing_is_found_in_an_empty_array);
+   RUN_TEST(test_nothing_is_found_when_the_left_and_right_bounds_cross);
+
+   return UnityEnd();
+}