File: check_list.c

package info (click to toggle)
check 0.9.8-2
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 2,724 kB
  • sloc: sh: 10,379; ansic: 5,276; makefile: 358
file content (150 lines) | stat: -rw-r--r-- 3,729 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include "../lib/libcompat.h"

#include <string.h>
#include <stdlib.h>

#include "check.h"
#include "check_list.h"
#include "check_check.h"

START_TEST(test_create)
{
  List *lp = NULL;

  fail_unless (list_val(lp) == NULL,
	       "Current list value should be NULL for NULL list");

  lp = check_list_create();

  fail_unless (list_val(lp) == NULL,
	       "Current list value should be NULL for newly created list");

  fail_unless (list_at_end(lp),
	       "Newly created list should be at end");
  list_advance(lp);
  fail_unless (list_at_end(lp),
	       "Advancing a list at end should produce a list at end");
  list_free (lp);
}
END_TEST

START_TEST(test_free)
{
  List *lp = check_list_create();
  list_add_end (lp, "abc");
  list_add_end (lp, "123");
  list_add_end (lp, NULL);
  list_free (lp);
}
END_TEST

START_TEST(test_add_end)
{
  List * lp = check_list_create();
  const char * tval = "abc";
  
  list_add_end (lp, tval);
  
  fail_unless (list_val (lp) != NULL,
	       "List current val should not be null after new insertion");
  fail_unless (!list_at_end (lp),
	       "List should be at end after new insertion");
  fail_unless (strcmp(tval, (char *) list_val (lp)) == 0,
	       "List current val should equal newly inserted val");
  list_free (lp);
}
END_TEST

START_TEST(test_add_front)
{
  List * lp = check_list_create();
  const char * tval = "abc";
  
  list_add_front (lp, tval);
  
  fail_unless (list_val (lp) != NULL,
	       "List current val should not be null after new insertion");
  fail_unless (strcmp(tval, (char *) list_val (lp)) == 0,
	       "List current val should equal newly inserted val");
  list_free (lp);
}
END_TEST

START_TEST(test_add_end_and_next)
{
  List *lp = check_list_create();
  const char *tval1 = "abc";
  const char *tval2 = "123";
  
  list_add_end (lp, tval1);
  list_add_end (lp, tval2);
  list_front(lp);
  fail_unless (strcmp (tval1, list_val (lp)) == 0,
	       "List head val should equal first inserted val");
  list_advance (lp);
  fail_unless (!list_at_end (lp),
	       "List should not be at end after two adds and one next");
  fail_unless (strcmp (tval2, list_val (lp)) == 0,
	       "List val should equal second inserted val");
  list_advance(lp);
  fail_unless (list_at_end (lp),
	       "List should be at and after two adds and two nexts");
  list_free (lp);
}
END_TEST


START_TEST(test_add_front_and_next)
{
  List * lp = check_list_create();
  const char *tval1 = "abc";
  const char *tval2 = "123";
  
  list_add_front (lp, tval1);
  list_add_front (lp, tval2);
  list_front(lp);
  fail_unless (strcmp (tval2, list_val (lp)) == 0,
	       "List head val should equal last inserted val");
  list_advance (lp);
  fail_unless (!list_at_end (lp),
	       "List should not be at end after two adds and one next");
  fail_unless (strcmp (tval1, list_val (lp)) == 0,
	       "List val should equal first inserted val");
  list_advance(lp);
  fail_unless (list_at_end (lp),
	       "List should be at and after two adds and two nexts");
  list_free (lp);
}
END_TEST

START_TEST(test_add_a_bunch)
{
  List *lp;
  int i, j;
  for (i = 0; i < 3; i++) {
    lp = check_list_create();
    for (j = 0; j < 1000; j++) {
      list_add_end (lp, "abc");
      list_add_front (lp, "123");
    }
    list_free(lp);
  }
}
END_TEST


Suite *make_list_suite (void)
{
  Suite *s = suite_create("Lists");
  TCase * tc = tcase_create("Core");

  suite_add_tcase (s, tc);
  tcase_add_test (tc, test_create);
  tcase_add_test (tc, test_free);
  tcase_add_test (tc, test_add_end);
  tcase_add_test (tc, test_add_front);
  tcase_add_test (tc, test_add_end_and_next);
  tcase_add_test (tc, test_add_front_and_next);
  tcase_add_test (tc, test_add_a_bunch);
  return s;
}