26
26
#include "src/core/wee-list.h"
27
#include "src/plugins/plugin.h"
30
#define LIST_VALUE_TEST "test"
31
#define LIST_VALUE_XYZ "xyz"
32
#define LIST_VALUE_ZZZ "zzz"
39
* Creates a list for tests.
45
struct t_weelist *list;
47
list = weelist_new ();
49
weelist_add (list, LIST_VALUE_ZZZ, WEECHAT_LIST_POS_END, NULL);
50
weelist_add (list, LIST_VALUE_TEST, WEECHAT_LIST_POS_BEGINNING, NULL);
51
weelist_add (list, LIST_VALUE_XYZ, WEECHAT_LIST_POS_SORT, NULL);
40
/* TODO: write tests */
63
struct t_weelist *list;
68
/* check initial values */
69
POINTERS_EQUAL(NULL, list->items);
70
POINTERS_EQUAL(NULL, list->last_item);
71
LONGS_EQUAL(0, list->size);
50
/* TODO: write tests */
85
struct t_weelist *list;
86
struct t_weelist_item *item1, *item2, *item3;
87
const char *str_user_data = "some user data";
91
POINTERS_EQUAL(NULL, weelist_add (NULL, NULL, NULL, NULL));
92
POINTERS_EQUAL(NULL, weelist_add (list, NULL, NULL, NULL));
93
POINTERS_EQUAL(NULL, weelist_add (NULL, LIST_VALUE_TEST, NULL, NULL));
94
POINTERS_EQUAL(NULL, weelist_add (NULL, NULL, WEECHAT_LIST_POS_END, NULL));
95
POINTERS_EQUAL(NULL, weelist_add (list, LIST_VALUE_TEST, NULL, NULL));
96
POINTERS_EQUAL(NULL, weelist_add (list, NULL, WEECHAT_LIST_POS_END, NULL));
97
POINTERS_EQUAL(NULL, weelist_add (NULL, LIST_VALUE_TEST,
98
WEECHAT_LIST_POS_END, NULL));
100
/* add an element at the end */
101
item1 = weelist_add (list, LIST_VALUE_ZZZ, WEECHAT_LIST_POS_END,
102
(void *)str_user_data);
105
CHECK(item1->user_data);
106
STRCMP_EQUAL(LIST_VALUE_ZZZ, item1->data);
107
POINTERS_EQUAL(str_user_data, item1->user_data);
108
LONGS_EQUAL(1, list->size); /* list is now: ["zzz"] */
109
POINTERS_EQUAL(item1, list->items);
111
/* add an element at the beginning */
112
item2 = weelist_add (list, LIST_VALUE_TEST, WEECHAT_LIST_POS_BEGINNING,
113
(void *)str_user_data);
116
CHECK(item2->user_data);
117
STRCMP_EQUAL(LIST_VALUE_TEST, item2->data);
118
POINTERS_EQUAL(str_user_data, item2->user_data);
119
LONGS_EQUAL(2, list->size); /* list is now: ["test", "zzz"] */
120
POINTERS_EQUAL(item2, list->items);
121
POINTERS_EQUAL(item1, list->items->next_item);
123
/* add an element, using sort */
124
item3 = weelist_add (list, LIST_VALUE_XYZ, WEECHAT_LIST_POS_SORT,
125
(void *)str_user_data);
128
CHECK(item3->user_data);
129
STRCMP_EQUAL(LIST_VALUE_XYZ, item3->data);
130
POINTERS_EQUAL(str_user_data, item3->user_data);
131
LONGS_EQUAL(3, list->size); /* list is now: ["test", "xyz", "zzz"] */
132
POINTERS_EQUAL(item2, list->items);
133
POINTERS_EQUAL(item3, list->items->next_item);
134
POINTERS_EQUAL(item1, list->items->next_item->next_item);
61
148
TEST(List, Search)
63
/* TODO: write tests */
150
struct t_weelist *list;
151
struct t_weelist_item *ptr_item;
153
list = test_list_new ();
155
/* search an element */
157
POINTERS_EQUAL(NULL, weelist_search (NULL, NULL));
158
POINTERS_EQUAL(NULL, weelist_search (list, NULL));
159
POINTERS_EQUAL(NULL, weelist_search (NULL, LIST_VALUE_TEST));
161
POINTERS_EQUAL(NULL, weelist_search (list, "not found"));
162
POINTERS_EQUAL(NULL, weelist_search (list, "TEST"));
164
ptr_item = weelist_search (list, LIST_VALUE_TEST);
166
STRCMP_EQUAL(LIST_VALUE_TEST, ptr_item->data);
168
ptr_item = weelist_search (list, LIST_VALUE_XYZ);
170
STRCMP_EQUAL(LIST_VALUE_XYZ, ptr_item->data);
172
ptr_item = weelist_search (list, LIST_VALUE_ZZZ);
174
STRCMP_EQUAL(LIST_VALUE_ZZZ, ptr_item->data);
176
/* search the position of an element */
178
LONGS_EQUAL(-1, weelist_search_pos (NULL, NULL));
179
LONGS_EQUAL(-1, weelist_search_pos (list, NULL));
180
LONGS_EQUAL(-1, weelist_search_pos (NULL, LIST_VALUE_TEST));
182
LONGS_EQUAL(-1, weelist_search_pos (list, "not found"));
183
LONGS_EQUAL(-1, weelist_search_pos (list, "TEST"));
185
LONGS_EQUAL(0, weelist_search_pos (list, LIST_VALUE_TEST));
186
LONGS_EQUAL(1, weelist_search_pos (list, LIST_VALUE_XYZ));
187
LONGS_EQUAL(2, weelist_search_pos (list, LIST_VALUE_ZZZ));
189
/* case-insensitive search of an element */
191
POINTERS_EQUAL(NULL, weelist_casesearch (NULL, NULL));
192
POINTERS_EQUAL(NULL, weelist_casesearch (list, NULL));
193
POINTERS_EQUAL(NULL, weelist_casesearch (NULL, LIST_VALUE_TEST));
195
POINTERS_EQUAL(NULL, weelist_casesearch (list, "not found"));
197
ptr_item = weelist_casesearch (list, "TEST");
199
STRCMP_EQUAL(LIST_VALUE_TEST, ptr_item->data);
201
ptr_item = weelist_casesearch (list, LIST_VALUE_TEST);
203
STRCMP_EQUAL(LIST_VALUE_TEST, ptr_item->data);
205
ptr_item = weelist_casesearch (list, LIST_VALUE_XYZ);
207
STRCMP_EQUAL(LIST_VALUE_XYZ, ptr_item->data);
209
ptr_item = weelist_casesearch (list, LIST_VALUE_ZZZ);
211
STRCMP_EQUAL(LIST_VALUE_ZZZ, ptr_item->data);
213
/* case-insensitive search of an element position */
215
LONGS_EQUAL(-1, weelist_casesearch_pos (NULL, NULL));
216
LONGS_EQUAL(-1, weelist_casesearch_pos (list, NULL));
217
LONGS_EQUAL(-1, weelist_casesearch_pos (NULL, LIST_VALUE_TEST));
219
LONGS_EQUAL(-1, weelist_casesearch_pos (list, "not found"));
221
LONGS_EQUAL(0, weelist_casesearch_pos (list, "TEST"));
222
LONGS_EQUAL(0, weelist_casesearch_pos (list, LIST_VALUE_TEST));
223
LONGS_EQUAL(1, weelist_casesearch_pos (list, LIST_VALUE_XYZ));
224
LONGS_EQUAL(2, weelist_casesearch_pos (list, LIST_VALUE_ZZZ));
74
/* TODO: write tests */
238
struct t_weelist *list;
239
struct t_weelist_item *ptr_item;
241
list = test_list_new ();
243
/* get an element by position */
245
POINTERS_EQUAL(NULL, weelist_get (NULL, -1));
246
POINTERS_EQUAL(NULL, weelist_get (list, -1));
247
POINTERS_EQUAL(NULL, weelist_get (NULL, 0));
249
POINTERS_EQUAL(NULL, weelist_get (list, 50));
251
ptr_item = weelist_get (list, 0);
253
STRCMP_EQUAL(LIST_VALUE_TEST, ptr_item->data);
255
ptr_item = weelist_get (list, 1);
257
STRCMP_EQUAL(LIST_VALUE_XYZ, ptr_item->data);
259
ptr_item = weelist_get (list, 2);
261
STRCMP_EQUAL(LIST_VALUE_ZZZ, ptr_item->data);
263
/* get string value of an element */
265
POINTERS_EQUAL(NULL, weelist_string (NULL));
267
ptr_item = weelist_get(list, 0);
268
STRCMP_EQUAL(LIST_VALUE_TEST, weelist_string (ptr_item));
270
ptr_item = weelist_get(list, 1);
271
STRCMP_EQUAL(LIST_VALUE_XYZ, weelist_string (ptr_item));
273
ptr_item = weelist_get(list, 2);
274
STRCMP_EQUAL(LIST_VALUE_ZZZ, weelist_string (ptr_item));
84
/* TODO: write tests */
287
struct t_weelist *list;
288
struct t_weelist_item *ptr_item;
289
const char *another_test = "another test";
291
list = test_list_new ();
293
ptr_item = weelist_get (list, 0);
294
STRCMP_EQUAL(LIST_VALUE_TEST, ptr_item->data);
296
weelist_set (NULL, NULL);
297
weelist_set (ptr_item, NULL);
298
weelist_set (NULL, another_test);
300
weelist_set (ptr_item, another_test);
301
STRCMP_EQUAL(another_test, ptr_item->data);
95
/* TODO: write tests */
315
struct t_weelist *list;
316
struct t_weelist_item *ptr_item;
318
list = test_list_new ();
322
ptr_item = weelist_get (list, 0);
323
STRCMP_EQUAL(LIST_VALUE_TEST, ptr_item->data);
324
ptr_item = weelist_next (ptr_item);
325
STRCMP_EQUAL(LIST_VALUE_XYZ, ptr_item->data);
326
ptr_item = weelist_next (ptr_item);
327
STRCMP_EQUAL(LIST_VALUE_ZZZ, ptr_item->data);
328
ptr_item = weelist_next (ptr_item);
329
POINTERS_EQUAL(NULL, ptr_item);
331
/* get previous item */
333
ptr_item = weelist_get(list, 2);
334
STRCMP_EQUAL(LIST_VALUE_ZZZ, ptr_item->data);
335
ptr_item = weelist_prev (ptr_item);
336
STRCMP_EQUAL(LIST_VALUE_XYZ, ptr_item->data);
337
ptr_item = weelist_prev (ptr_item);
338
STRCMP_EQUAL(LIST_VALUE_TEST, ptr_item->data);
99
345
* Tests functions:
101
347
* weelist_remove_all
107
/* TODO: write tests */
352
struct t_weelist *list;
353
struct t_weelist_item *ptr_item;
355
list = test_list_new ();
357
/* remove one element */
359
ptr_item = weelist_get(list, 1);
360
STRCMP_EQUAL(LIST_VALUE_XYZ, ptr_item->data);
362
weelist_remove (NULL, NULL);
363
weelist_remove (list, NULL);
364
weelist_remove (NULL, ptr_item);
366
weelist_remove (list, ptr_item);
368
ptr_item = weelist_get(list, 1);
369
STRCMP_EQUAL(LIST_VALUE_ZZZ, ptr_item->data);
370
ptr_item = weelist_get (list, 2);
371
POINTERS_EQUAL(NULL, ptr_item);
373
/* remove all elements */
375
weelist_remove_all (list);
376
LONGS_EQUAL(0, list->size);
377
POINTERS_EQUAL(NULL, list->items);
378
POINTERS_EQUAL(NULL, list->last_item);