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}