master
1#include "doubly_linked_list.h"
2#include <cgreen/cgreen.h>
3
4Describe(DoublyLinkedList);
5BeforeEach(DoublyLinkedList) {}
6AfterEach(DoublyLinkedList) {}
7
8Ensure(DoublyLinkedList, when_reversing_a_short_list) {
9 Node *head = initialize(100);
10 Node *mid = add(head, 200);
11 Node *tail = add(head, 300);
12
13 Node *new_head = reverse(head);
14
15 assert_that(new_head->prev, is_equal_to(NULL));
16 assert_that(new_head, is_equal_to(tail));
17 assert_that(new_head->next, is_equal_to(mid));
18
19 assert_that(mid->prev, is_equal_to(tail));
20 assert_that(mid->next, is_equal_to(head));
21
22 assert_that(head->prev, is_equal_to(mid));
23 assert_that(head->next, is_equal_to(NULL));
24
25 free(head);
26}
27
28Ensure(DoublyLinkedList, when_reversing_an_empty_list) {
29 Node *head = initialize(100);
30 Node *result = reverse(head);
31
32 assert_that(result, is_equal_to(head));
33
34 free(head);
35}
36
37TestSuite *reverse_doubly_linked_list_tests() {
38 TestSuite *suite = create_test_suite();
39
40 add_test_with_context(suite, DoublyLinkedList, when_reversing_a_short_list);
41 add_test_with_context(suite, DoublyLinkedList, when_reversing_an_empty_list);
42
43 return suite;
44}
45
46int main(int argc, char **argv) {
47 TestSuite *suite = create_test_suite();
48 add_suite(suite, reverse_doubly_linked_list_tests());
49 return run_test_suite(suite, create_text_reporter());
50}