master
  1#include "sort.h"
  2#include <cgreen/cgreen.h>
  3#include <string.h>
  4
  5Ensure(one_equals_one) { assert_that(1, is_equal_to(1)); }
  6
  7Ensure(merge_sort_sorts_a_null_list) { merge_sort(NULL, 0); }
  8
  9Ensure(merge_sort_sorts_an_empty_list) {
 10  int items[] = {};
 11
 12  merge_sort(items, 0);
 13
 14  assert_that(sizeof(items), is_equal_to(0));
 15}
 16
 17Ensure(merge_sort_sorts_a_list_with_one_item) {
 18  int items[] = {100};
 19
 20  merge_sort(items, 1);
 21
 22  assert_that(sizeof(items), is_equal_to(sizeof(int)));
 23  assert_that(items[0], is_equal_to(100));
 24}
 25
 26Ensure(merge_sort_sorts_a_list_with_two_items) {
 27  int items[] = {100, 10};
 28
 29  merge_sort(items, 2);
 30
 31  assert_that(items[0], is_equal_to(10));
 32  assert_that(items[1], is_equal_to(100));
 33}
 34
 35Ensure(merge_sort_sorts_three_unique_items) {
 36  int items[] = {3, 1, 4};
 37
 38  merge_sort(items, sizeof(items) / sizeof(int));
 39
 40  assert_that(items[0], is_equal_to(1));
 41  assert_that(items[1], is_equal_to(3));
 42  assert_that(items[2], is_equal_to(4));
 43}
 44
 45Ensure(merge_sort_sorts_many_items) {
 46  int items[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
 47
 48  merge_sort(items, sizeof(items) / sizeof(int));
 49
 50  assert_that(items[0], is_equal_to(1));
 51  assert_that(items[1], is_equal_to(1));
 52  assert_that(items[2], is_equal_to(2));
 53  assert_that(items[3], is_equal_to(3));
 54  assert_that(items[4], is_equal_to(3));
 55  assert_that(items[5], is_equal_to(4));
 56  assert_that(items[6], is_equal_to(5));
 57  assert_that(items[7], is_equal_to(5));
 58  assert_that(items[8], is_equal_to(5));
 59  assert_that(items[9], is_equal_to(6));
 60  assert_that(items[10], is_equal_to(9));
 61}
 62
 63Ensure(quick_sort_sorts_a_null_list) { quick_sort(NULL, 0); }
 64
 65Ensure(quick_sort_sorts_an_empty_list) {
 66  int items[] = {};
 67
 68  quick_sort(items, 0);
 69
 70  assert_that(sizeof(items), is_equal_to(0));
 71}
 72
 73Ensure(quick_sort_sorts_a_list_with_one_item) {
 74  int items[] = {100};
 75
 76  quick_sort(items, 1);
 77
 78  assert_that(items[0], is_equal_to(100));
 79}
 80
 81Ensure(quick_sort_sorts_a_list_with_two_items) {
 82  int items[] = {100, 10};
 83
 84  quick_sort(items, 2);
 85
 86  assert_that(items[0], is_equal_to(10));
 87  assert_that(items[1], is_equal_to(100));
 88}
 89
 90Ensure(quick_sort_sorts_three_unique_items) {
 91  int items[] = {3, 1, 4};
 92
 93  quick_sort(items, sizeof(items) / sizeof(int));
 94
 95  assert_that(items[0], is_equal_to(1));
 96  assert_that(items[1], is_equal_to(3));
 97  assert_that(items[2], is_equal_to(4));
 98}
 99
100Ensure(quick_sort_sorts_many_items) {
101  int items[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
102
103  quick_sort(items, sizeof(items) / sizeof(int));
104
105  assert_that(items[0], is_equal_to(1));
106  assert_that(items[1], is_equal_to(1));
107  assert_that(items[2], is_equal_to(2));
108  assert_that(items[3], is_equal_to(3));
109  assert_that(items[4], is_equal_to(3));
110  assert_that(items[5], is_equal_to(4));
111  assert_that(items[6], is_equal_to(5));
112  assert_that(items[7], is_equal_to(5));
113  assert_that(items[8], is_equal_to(5));
114  assert_that(items[9], is_equal_to(6));
115  assert_that(items[10], is_equal_to(9));
116}
117
118TestSuite *sort_tests() {
119  TestSuite *x = create_test_suite();
120  add_test(x, one_equals_one);
121
122  add_test(x, merge_sort_sorts_a_null_list);
123  add_test(x, merge_sort_sorts_an_empty_list);
124  add_test(x, merge_sort_sorts_a_list_with_one_item);
125  add_test(x, merge_sort_sorts_a_list_with_two_items);
126  add_test(x, merge_sort_sorts_three_unique_items);
127  add_test(x, merge_sort_sorts_many_items);
128
129  add_test(x, quick_sort_sorts_a_null_list);
130  add_test(x, quick_sort_sorts_an_empty_list);
131  add_test(x, quick_sort_sorts_a_list_with_one_item);
132  add_test(x, quick_sort_sorts_a_list_with_two_items);
133  add_test(x, quick_sort_sorts_three_unique_items);
134  add_test(x, quick_sort_sorts_many_items);
135  return x;
136}