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}