master
 1#include "list.h"
 2#include <cgreen/cgreen.h>
 3
 4Describe(List);
 5BeforeEach(List) {}
 6AfterEach(List) {}
 7
 8Ensure(List, when_getting_head) {
 9  Node *head = list_initialize((void *)100);
10  assert_that(list_get(head, 0), is_equal_to(head));
11  assert_that(list_get(head, 0)->data, is_equal_to(100));
12  free(head);
13}
14
15Ensure(List, when_getting_mid) {
16  Node *head = list_initialize((void *)100);
17
18  Node *mid = list_add(head, (void *)200);
19  list_add(head, (void *)300);
20
21  assert_that(list_get(head, 1), is_equal_to(mid));
22  assert_that(list_get(head, 1)->data, is_equal_to(200));
23
24  free(head);
25}
26
27Ensure(List, when_getting_tail) {
28  Node *head = list_initialize((void *)100);
29  Node *mid = list_add(head, (void *)200);
30  Node *tail = list_add(head, (void *)300);
31
32  assert_that(list_get(head, 0), is_equal_to(head));
33  assert_that(list_get(head, 0)->data, is_equal_to(100));
34
35  assert_that(list_get(head, 1), is_equal_to(mid));
36  assert_that(list_get(head, 1)->data, is_equal_to(200));
37
38  assert_that(list_get(head, 2), is_equal_to(tail));
39  assert_that(list_get(head, 2)->data, is_equal_to(300));
40
41  free(head);
42}
43
44Ensure(List, when_getting_from_empty_list) {
45  assert_that(list_get(NULL, 2), is_equal_to(NULL));
46}
47
48Ensure(List, when_getting_negative_index) {
49  Node *head = list_initialize((void *)100);
50
51  assert_that(list_get(head, -1), is_equal_to(NULL));
52
53  free(head);
54}
55
56Ensure(List, when_getting_index_out_of_range) {
57  Node *head = list_initialize((void *)100);
58
59  assert_that(list_get(head, 1), is_equal_to(NULL));
60
61  free(head);
62}
63
64struct Person {
65  int age;
66};
67
68Ensure(List, when_adding_a_custom_datatype) {
69  struct Person *item = malloc(sizeof(struct Person));
70  item->age = 36;
71  Node *head = list_initialize((void *)item);
72
73  Node *result = list_get(head, 0);
74  assert_that(result, is_equal_to(head));
75
76  struct Person *p = (struct Person *)result->data;
77  assert_that(p->age, is_equal_to(36));
78}
79
80TestSuite *list_tests() {
81  TestSuite *suite = create_test_suite();
82
83  add_test_with_context(suite, List, when_getting_head);
84  add_test_with_context(suite, List, when_getting_mid);
85  add_test_with_context(suite, List, when_getting_tail);
86  add_test_with_context(suite, List, when_getting_from_empty_list);
87  add_test_with_context(suite, List, when_getting_negative_index);
88  add_test_with_context(suite, List, when_getting_index_out_of_range);
89  add_test_with_context(suite, List, when_adding_a_custom_datatype);
90  return suite;
91}