1 /* $Id: vector-t.c 5678 2002-08-28 23:21:32Z rra $ */
2 /* vector test suite. */
7 #include "inn/vector.h"
14 struct vector *vector;
15 struct cvector *cvector;
16 const char cstring[] = "This is a\ttest. ";
17 const char tabs[] = "test\t\ting\t";
18 static const char nulls1[] = "This\0is\0a\0test.";
19 static const char nulls2[] = "This is a\t\0es\0. ";
26 vector = vector_new();
27 ok(1, vector != NULL);
28 vector_add(vector, cstring);
29 ok_int(2, 1, vector->count);
30 ok(3, vector->strings[0] != cstring);
31 vector_resize(vector, 4);
32 ok_int(4, 4, vector->allocated);
33 vector_add(vector, cstring);
34 vector_add(vector, cstring);
35 vector_add(vector, cstring);
36 ok_int(5, 4, vector->allocated);
37 ok_int(6, 4, vector->count);
38 ok(7, vector->strings[1] != vector->strings[2]);
39 ok(8, vector->strings[2] != vector->strings[3]);
40 ok(9, vector->strings[3] != vector->strings[0]);
41 ok(10, vector->strings[0] != cstring);
43 ok_int(11, 0, vector->count);
44 ok_int(12, 4, vector->allocated);
45 string = xstrdup(cstring);
46 vector_add(vector, cstring);
47 vector_add(vector, string);
48 ok_int(13, 2, vector->count);
49 ok(14, vector->strings[1] != string);
50 vector_resize(vector, 1);
51 ok_int(15, 1, vector->count);
52 ok(16, vector->strings[0] != cstring);
56 cvector = cvector_new();
57 ok(17, cvector != NULL);
58 cvector_add(cvector, cstring);
59 ok_int(18, 1, cvector->count);
60 ok(19, cvector->strings[0] == cstring);
61 cvector_resize(cvector, 4);
62 ok_int(20, 4, cvector->allocated);
63 cvector_add(cvector, cstring);
64 cvector_add(cvector, cstring);
65 cvector_add(cvector, cstring);
66 ok_int(21, 4, cvector->allocated);
67 ok_int(22, 4, cvector->count);
68 ok(23, cvector->strings[1] == cvector->strings[2]);
69 ok(24, cvector->strings[2] == cvector->strings[3]);
70 ok(25, cvector->strings[3] == cvector->strings[0]);
71 ok(26, cvector->strings[0] == cstring);
72 cvector_clear(cvector);
73 ok_int(27, 0, cvector->count);
74 ok_int(28, 4, cvector->allocated);
75 string = xstrdup(cstring);
76 cvector_add(cvector, cstring);
77 cvector_add(cvector, string);
78 ok_int(29, 2, cvector->count);
79 ok(30, cvector->strings[1] == string);
80 cvector_resize(cvector, 1);
81 ok_int(31, 1, cvector->count);
82 ok(32, cvector->strings[0] == cstring);
83 cvector_free(cvector);
86 vector = vector_split_space("This is a\ttest. ", NULL);
87 ok_int(33, 4, vector->count);
88 ok_int(34, 4, vector->allocated);
89 ok_string(35, "This", vector->strings[0]);
90 ok_string(36, "is", vector->strings[1]);
91 ok_string(37, "a", vector->strings[2]);
92 ok_string(38, "test.", vector->strings[3]);
93 vector_add(vector, cstring);
94 ok_string(39, cstring, vector->strings[4]);
95 ok(40, vector->strings[4] != cstring);
96 ok_int(41, 5, vector->allocated);
97 vector = vector_split(cstring, 't', vector);
98 ok_int(42, 3, vector->count);
99 ok_int(43, 5, vector->allocated);
100 ok_string(44, "This is a\t", vector->strings[0]);
101 ok_string(45, "es", vector->strings[1]);
102 ok_string(46, ". ", vector->strings[2]);
103 ok(47, vector->strings[0] != cstring);
104 p = vector_join(vector, "fe");
105 ok_string(48, "This is a\tfeesfe. ", p);
109 string = xstrdup(cstring);
110 cvector = cvector_split_space(string, NULL);
111 ok_int(49, 4, cvector->count);
112 ok_int(50, 4, cvector->allocated);
113 ok_string(51, "This", cvector->strings[0]);
114 ok_string(52, "is", cvector->strings[1]);
115 ok_string(53, "a", cvector->strings[2]);
116 ok_string(54, "test.", cvector->strings[3]);
117 ok(55, memcmp(string, nulls1, 16) == 0);
118 cvector_add(cvector, cstring);
119 ok(56, cvector->strings[4] == cstring);
120 ok_int(57, 5, cvector->allocated);
122 string = xstrdup(cstring);
123 cvector = cvector_split(string, 't', cvector);
124 ok_int(58, 3, cvector->count);
125 ok_int(59, 5, cvector->allocated);
126 ok_string(60, "This is a\t", cvector->strings[0]);
127 ok_string(61, "es", cvector->strings[1]);
128 ok_string(62, ". ", cvector->strings[2]);
129 ok(63, cvector->strings[0] == string);
130 ok(64, memcmp(string, nulls2, 18) == 0);
131 p = cvector_join(cvector, "oo");
132 ok_string(65, "This is a\tooesoo. ", p);
134 cvector_free(cvector);
137 vector = vector_split("", ' ', NULL);
138 ok_int(66, 1, vector->count);
139 ok_string(67, "", vector->strings[0]);
141 cvector = cvector_split(empty, ' ', NULL);
142 ok_int(68, 1, cvector->count);
143 ok_string(69, "", vector->strings[0]);
144 cvector_free(cvector);
146 vector = vector_split_space("", NULL);
147 ok_int(70, 0, vector->count);
149 cvector = cvector_split_space(empty, NULL);
150 ok_int(71, 0, cvector->count);
151 cvector_free(cvector);
153 vector = vector_split(tabs, '\t', NULL);
154 ok_int(72, 4, vector->count);
155 ok_string(73, "test", vector->strings[0]);
156 ok_string(74, "", vector->strings[1]);
157 ok_string(75, "ing", vector->strings[2]);
158 ok_string(76, "", vector->strings[3]);
159 p = vector_join(vector, "");
160 ok_string(77, "testing", p);
164 string = xstrdup(tabs);
165 cvector = cvector_split(string, '\t', NULL);
166 ok_int(78, 4, cvector->count);
167 ok_string(79, "test", cvector->strings[0]);
168 ok_string(80, "", cvector->strings[1]);
169 ok_string(81, "ing", cvector->strings[2]);
170 ok_string(82, "", cvector->strings[3]);
171 p = cvector_join(cvector, "");
172 ok_string(83, "testing", p);
174 cvector_free(cvector);
177 vector = vector_split_space("foo\nbar", NULL);
178 ok_int(84, 1, vector->count);
179 ok_string(85, "foo\nbar", vector->strings[0]);
182 string = xstrdup("foo\nbar");
183 cvector = cvector_split_space(string, NULL);
184 ok_int(86, 1, cvector->count);
185 ok_string(87, "foo\nbar", cvector->strings[0]);
186 cvector_free(cvector);