xref: /freebsd/contrib/atf/atf-c/detail/list_test.c (revision 8f0ea33f2bbf3a6aa80235f0a02fa5f2780c2b17)
1*0677dfd1SJulio Merino /* Copyright (c) 2008 The NetBSD Foundation, Inc.
2c243e490SMarcel Moolenaar  * All rights reserved.
3c243e490SMarcel Moolenaar  *
4c243e490SMarcel Moolenaar  * Redistribution and use in source and binary forms, with or without
5c243e490SMarcel Moolenaar  * modification, are permitted provided that the following conditions
6c243e490SMarcel Moolenaar  * are met:
7c243e490SMarcel Moolenaar  * 1. Redistributions of source code must retain the above copyright
8c243e490SMarcel Moolenaar  *    notice, this list of conditions and the following disclaimer.
9c243e490SMarcel Moolenaar  * 2. Redistributions in binary form must reproduce the above copyright
10c243e490SMarcel Moolenaar  *    notice, this list of conditions and the following disclaimer in the
11c243e490SMarcel Moolenaar  *    documentation and/or other materials provided with the distribution.
12c243e490SMarcel Moolenaar  *
13c243e490SMarcel Moolenaar  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
14c243e490SMarcel Moolenaar  * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
15c243e490SMarcel Moolenaar  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16c243e490SMarcel Moolenaar  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17c243e490SMarcel Moolenaar  * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
18c243e490SMarcel Moolenaar  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19c243e490SMarcel Moolenaar  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
20c243e490SMarcel Moolenaar  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21c243e490SMarcel Moolenaar  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
22c243e490SMarcel Moolenaar  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23c243e490SMarcel Moolenaar  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
24*0677dfd1SJulio Merino  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  */
25*0677dfd1SJulio Merino 
26*0677dfd1SJulio Merino #include "atf-c/detail/list.h"
27c243e490SMarcel Moolenaar 
28c243e490SMarcel Moolenaar #include <stdio.h>
29c243e490SMarcel Moolenaar #include <string.h>
30c243e490SMarcel Moolenaar 
31c243e490SMarcel Moolenaar #include <atf-c.h>
32c243e490SMarcel Moolenaar 
33*0677dfd1SJulio Merino #include "atf-c/detail/test_helpers.h"
34c243e490SMarcel Moolenaar #include "atf-c/utils.h"
35c243e490SMarcel Moolenaar 
36c243e490SMarcel Moolenaar /* ---------------------------------------------------------------------
37c243e490SMarcel Moolenaar  * Tests for the "atf_list" type.
38c243e490SMarcel Moolenaar  * --------------------------------------------------------------------- */
39c243e490SMarcel Moolenaar 
40c243e490SMarcel Moolenaar /*
41c243e490SMarcel Moolenaar  * Constructors and destructors.
42c243e490SMarcel Moolenaar  */
43c243e490SMarcel Moolenaar 
44c243e490SMarcel Moolenaar ATF_TC(list_init);
ATF_TC_HEAD(list_init,tc)45c243e490SMarcel Moolenaar ATF_TC_HEAD(list_init, tc)
46c243e490SMarcel Moolenaar {
47c243e490SMarcel Moolenaar     atf_tc_set_md_var(tc, "descr", "Checks the atf_list_init function");
48c243e490SMarcel Moolenaar }
ATF_TC_BODY(list_init,tc)49c243e490SMarcel Moolenaar ATF_TC_BODY(list_init, tc)
50c243e490SMarcel Moolenaar {
51c243e490SMarcel Moolenaar     atf_list_t list;
52c243e490SMarcel Moolenaar 
53c243e490SMarcel Moolenaar     RE(atf_list_init(&list));
54c243e490SMarcel Moolenaar     ATF_REQUIRE_EQ(atf_list_size(&list), 0);
55c243e490SMarcel Moolenaar     atf_list_fini(&list);
56c243e490SMarcel Moolenaar }
57c243e490SMarcel Moolenaar 
58c243e490SMarcel Moolenaar /*
59c243e490SMarcel Moolenaar  * Getters.
60c243e490SMarcel Moolenaar  */
61c243e490SMarcel Moolenaar 
62c243e490SMarcel Moolenaar ATF_TC(list_index);
ATF_TC_HEAD(list_index,tc)63c243e490SMarcel Moolenaar ATF_TC_HEAD(list_index, tc)
64c243e490SMarcel Moolenaar {
65c243e490SMarcel Moolenaar     atf_tc_set_md_var(tc, "descr", "Checks the atf_list_index function");
66c243e490SMarcel Moolenaar }
ATF_TC_BODY(list_index,tc)67c243e490SMarcel Moolenaar ATF_TC_BODY(list_index, tc)
68c243e490SMarcel Moolenaar {
69c243e490SMarcel Moolenaar     atf_list_t list;
70c243e490SMarcel Moolenaar     int i1 = 1;
71c243e490SMarcel Moolenaar     int i2 = 5;
72c243e490SMarcel Moolenaar     int i3 = 9;
73c243e490SMarcel Moolenaar 
74c243e490SMarcel Moolenaar     RE(atf_list_init(&list));
75c243e490SMarcel Moolenaar     RE(atf_list_append(&list, &i1, false));
76c243e490SMarcel Moolenaar     RE(atf_list_append(&list, &i2, false));
77c243e490SMarcel Moolenaar     RE(atf_list_append(&list, &i3, false));
78c243e490SMarcel Moolenaar 
79c243e490SMarcel Moolenaar     ATF_CHECK_EQ(*(int *)atf_list_index(&list, 0), 1);
80c243e490SMarcel Moolenaar     ATF_CHECK_EQ(*(int *)atf_list_index(&list, 1), 5);
81c243e490SMarcel Moolenaar     ATF_CHECK_EQ(*(int *)atf_list_index(&list, 2), 9);
82c243e490SMarcel Moolenaar 
83c243e490SMarcel Moolenaar     atf_list_fini(&list);
84c243e490SMarcel Moolenaar }
85c243e490SMarcel Moolenaar 
86c243e490SMarcel Moolenaar ATF_TC(list_index_c);
ATF_TC_HEAD(list_index_c,tc)87c243e490SMarcel Moolenaar ATF_TC_HEAD(list_index_c, tc)
88c243e490SMarcel Moolenaar {
89c243e490SMarcel Moolenaar     atf_tc_set_md_var(tc, "descr", "Checks the atf_list_index_c function");
90c243e490SMarcel Moolenaar }
ATF_TC_BODY(list_index_c,tc)91c243e490SMarcel Moolenaar ATF_TC_BODY(list_index_c, tc)
92c243e490SMarcel Moolenaar {
93c243e490SMarcel Moolenaar     atf_list_t list;
94c243e490SMarcel Moolenaar     int i1 = 1;
95c243e490SMarcel Moolenaar     int i2 = 5;
96c243e490SMarcel Moolenaar     int i3 = 9;
97c243e490SMarcel Moolenaar 
98c243e490SMarcel Moolenaar     RE(atf_list_init(&list));
99c243e490SMarcel Moolenaar     RE(atf_list_append(&list, &i1, false));
100c243e490SMarcel Moolenaar     RE(atf_list_append(&list, &i2, false));
101c243e490SMarcel Moolenaar     RE(atf_list_append(&list, &i3, false));
102c243e490SMarcel Moolenaar 
103c243e490SMarcel Moolenaar     ATF_CHECK_EQ(*(const int *)atf_list_index_c(&list, 0), 1);
104c243e490SMarcel Moolenaar     ATF_CHECK_EQ(*(const int *)atf_list_index_c(&list, 1), 5);
105c243e490SMarcel Moolenaar     ATF_CHECK_EQ(*(const int *)atf_list_index_c(&list, 2), 9);
106c243e490SMarcel Moolenaar 
107c243e490SMarcel Moolenaar     atf_list_fini(&list);
108c243e490SMarcel Moolenaar }
109c243e490SMarcel Moolenaar 
110c243e490SMarcel Moolenaar ATF_TC_WITHOUT_HEAD(list_to_charpp_empty);
ATF_TC_BODY(list_to_charpp_empty,tc)111c243e490SMarcel Moolenaar ATF_TC_BODY(list_to_charpp_empty, tc)
112c243e490SMarcel Moolenaar {
113c243e490SMarcel Moolenaar     atf_list_t list;
114c243e490SMarcel Moolenaar     char **array;
115c243e490SMarcel Moolenaar 
116c243e490SMarcel Moolenaar     RE(atf_list_init(&list));
117c243e490SMarcel Moolenaar     ATF_REQUIRE((array = atf_list_to_charpp(&list)) != NULL);
118c243e490SMarcel Moolenaar     atf_list_fini(&list);
119c243e490SMarcel Moolenaar 
120c243e490SMarcel Moolenaar     ATF_CHECK_EQ(NULL, array[0]);
121c243e490SMarcel Moolenaar     atf_utils_free_charpp(array);
122c243e490SMarcel Moolenaar }
123c243e490SMarcel Moolenaar 
124c243e490SMarcel Moolenaar ATF_TC_WITHOUT_HEAD(list_to_charpp_some);
ATF_TC_BODY(list_to_charpp_some,tc)125c243e490SMarcel Moolenaar ATF_TC_BODY(list_to_charpp_some, tc)
126c243e490SMarcel Moolenaar {
127c243e490SMarcel Moolenaar     atf_list_t list;
128c243e490SMarcel Moolenaar     char **array;
129c243e490SMarcel Moolenaar 
130c243e490SMarcel Moolenaar     char s1[] = "one";
131c243e490SMarcel Moolenaar     char s2[] = "two";
132c243e490SMarcel Moolenaar     char s3[] = "three";
133c243e490SMarcel Moolenaar 
134c243e490SMarcel Moolenaar     RE(atf_list_init(&list));
135c243e490SMarcel Moolenaar     RE(atf_list_append(&list, s1, false));
136c243e490SMarcel Moolenaar     RE(atf_list_append(&list, s2, false));
137c243e490SMarcel Moolenaar     RE(atf_list_append(&list, s3, false));
138c243e490SMarcel Moolenaar     ATF_REQUIRE((array = atf_list_to_charpp(&list)) != NULL);
139c243e490SMarcel Moolenaar     atf_list_fini(&list);
140c243e490SMarcel Moolenaar 
141c243e490SMarcel Moolenaar     ATF_CHECK_STREQ("one", array[0]);
142c243e490SMarcel Moolenaar     ATF_CHECK_STREQ("two", array[1]);
143c243e490SMarcel Moolenaar     ATF_CHECK_STREQ("three", array[2]);
144c243e490SMarcel Moolenaar     ATF_CHECK_EQ(NULL, array[3]);
145c243e490SMarcel Moolenaar     atf_utils_free_charpp(array);
146c243e490SMarcel Moolenaar }
147c243e490SMarcel Moolenaar 
148c243e490SMarcel Moolenaar /*
149c243e490SMarcel Moolenaar  * Modifiers.
150c243e490SMarcel Moolenaar  */
151c243e490SMarcel Moolenaar 
152c243e490SMarcel Moolenaar ATF_TC(list_append);
ATF_TC_HEAD(list_append,tc)153c243e490SMarcel Moolenaar ATF_TC_HEAD(list_append, tc)
154c243e490SMarcel Moolenaar {
155c243e490SMarcel Moolenaar     atf_tc_set_md_var(tc, "descr", "Checks the atf_list_append function");
156c243e490SMarcel Moolenaar }
ATF_TC_BODY(list_append,tc)157c243e490SMarcel Moolenaar ATF_TC_BODY(list_append, tc)
158c243e490SMarcel Moolenaar {
159c243e490SMarcel Moolenaar     atf_list_t list;
160c243e490SMarcel Moolenaar     size_t i;
161c243e490SMarcel Moolenaar     char buf[] = "Test string";
162c243e490SMarcel Moolenaar 
163c243e490SMarcel Moolenaar     RE(atf_list_init(&list));
164c243e490SMarcel Moolenaar     for (i = 0; i < 1024; i++) {
165c243e490SMarcel Moolenaar         ATF_REQUIRE_EQ(atf_list_size(&list), i);
166c243e490SMarcel Moolenaar         RE(atf_list_append(&list, buf, false));
167c243e490SMarcel Moolenaar     }
168c243e490SMarcel Moolenaar     atf_list_fini(&list);
169c243e490SMarcel Moolenaar }
170c243e490SMarcel Moolenaar 
171c243e490SMarcel Moolenaar ATF_TC(list_append_list);
ATF_TC_HEAD(list_append_list,tc)172c243e490SMarcel Moolenaar ATF_TC_HEAD(list_append_list, tc)
173c243e490SMarcel Moolenaar {
174c243e490SMarcel Moolenaar     atf_tc_set_md_var(tc, "descr", "Checks the atf_list_append_list "
175c243e490SMarcel Moolenaar                       "function");
176c243e490SMarcel Moolenaar }
ATF_TC_BODY(list_append_list,tc)177c243e490SMarcel Moolenaar ATF_TC_BODY(list_append_list, tc)
178c243e490SMarcel Moolenaar {
179c243e490SMarcel Moolenaar     {
180c243e490SMarcel Moolenaar         atf_list_t l1, l2;
181c243e490SMarcel Moolenaar 
182c243e490SMarcel Moolenaar         RE(atf_list_init(&l1));
183c243e490SMarcel Moolenaar         RE(atf_list_init(&l2));
184c243e490SMarcel Moolenaar 
185c243e490SMarcel Moolenaar         atf_list_append_list(&l1, &l2);
186c243e490SMarcel Moolenaar         ATF_CHECK_EQ(atf_list_size(&l1), 0);
187c243e490SMarcel Moolenaar 
188c243e490SMarcel Moolenaar         atf_list_fini(&l1);
189c243e490SMarcel Moolenaar     }
190c243e490SMarcel Moolenaar 
191c243e490SMarcel Moolenaar     {
192c243e490SMarcel Moolenaar         atf_list_t l1, l2;
193c243e490SMarcel Moolenaar         int item = 5;
194c243e490SMarcel Moolenaar 
195c243e490SMarcel Moolenaar         RE(atf_list_init(&l1));
196c243e490SMarcel Moolenaar         RE(atf_list_append(&l1, &item, false));
197c243e490SMarcel Moolenaar         RE(atf_list_init(&l2));
198c243e490SMarcel Moolenaar 
199c243e490SMarcel Moolenaar         atf_list_append_list(&l1, &l2);
200c243e490SMarcel Moolenaar         ATF_CHECK_EQ(atf_list_size(&l1), 1);
201c243e490SMarcel Moolenaar         ATF_CHECK_EQ(*(int *)atf_list_index(&l1, 0), item);
202c243e490SMarcel Moolenaar 
203c243e490SMarcel Moolenaar         atf_list_fini(&l1);
204c243e490SMarcel Moolenaar     }
205c243e490SMarcel Moolenaar 
206c243e490SMarcel Moolenaar     {
207c243e490SMarcel Moolenaar         atf_list_t l1, l2;
208c243e490SMarcel Moolenaar         int item = 5;
209c243e490SMarcel Moolenaar 
210c243e490SMarcel Moolenaar         RE(atf_list_init(&l1));
211c243e490SMarcel Moolenaar         RE(atf_list_init(&l2));
212c243e490SMarcel Moolenaar         RE(atf_list_append(&l2, &item, false));
213c243e490SMarcel Moolenaar 
214c243e490SMarcel Moolenaar         atf_list_append_list(&l1, &l2);
215c243e490SMarcel Moolenaar         ATF_CHECK_EQ(atf_list_size(&l1), 1);
216c243e490SMarcel Moolenaar         ATF_CHECK_EQ(*(int *)atf_list_index(&l1, 0), item);
217c243e490SMarcel Moolenaar 
218c243e490SMarcel Moolenaar         atf_list_fini(&l1);
219c243e490SMarcel Moolenaar     }
220c243e490SMarcel Moolenaar 
221c243e490SMarcel Moolenaar     {
222c243e490SMarcel Moolenaar         atf_list_t l1, l2;
223c243e490SMarcel Moolenaar         int item1 = 5;
224c243e490SMarcel Moolenaar         int item2 = 9;
225c243e490SMarcel Moolenaar 
226c243e490SMarcel Moolenaar         RE(atf_list_init(&l1));
227c243e490SMarcel Moolenaar         RE(atf_list_append(&l1, &item1, false));
228c243e490SMarcel Moolenaar         RE(atf_list_init(&l2));
229c243e490SMarcel Moolenaar         RE(atf_list_append(&l2, &item2, false));
230c243e490SMarcel Moolenaar 
231c243e490SMarcel Moolenaar         atf_list_append_list(&l1, &l2);
232c243e490SMarcel Moolenaar         ATF_CHECK_EQ(atf_list_size(&l1), 2);
233c243e490SMarcel Moolenaar         ATF_CHECK_EQ(*(int *)atf_list_index(&l1, 0), item1);
234c243e490SMarcel Moolenaar         ATF_CHECK_EQ(*(int *)atf_list_index(&l1, 1), item2);
235c243e490SMarcel Moolenaar 
236c243e490SMarcel Moolenaar         atf_list_fini(&l1);
237c243e490SMarcel Moolenaar     }
238c243e490SMarcel Moolenaar 
239c243e490SMarcel Moolenaar     {
240c243e490SMarcel Moolenaar         atf_list_t l1, l2;
241c243e490SMarcel Moolenaar         atf_list_citer_t end1, end2;
242c243e490SMarcel Moolenaar 
243c243e490SMarcel Moolenaar         RE(atf_list_init(&l1));
244c243e490SMarcel Moolenaar         RE(atf_list_init(&l2));
245c243e490SMarcel Moolenaar 
246c243e490SMarcel Moolenaar         end1 = atf_list_end_c(&l1);
247c243e490SMarcel Moolenaar         end2 = atf_list_end_c(&l2);
248c243e490SMarcel Moolenaar         /* XXX Shouldn't query m_entry here. */
249c243e490SMarcel Moolenaar         ATF_CHECK(end1.m_entry != end2.m_entry);
250c243e490SMarcel Moolenaar 
251c243e490SMarcel Moolenaar         atf_list_append_list(&l1, &l2);
252c243e490SMarcel Moolenaar         ATF_CHECK(atf_list_end_c(&l1).m_entry == end2.m_entry);
253c243e490SMarcel Moolenaar 
254c243e490SMarcel Moolenaar         atf_list_fini(&l1);
255c243e490SMarcel Moolenaar     }
256c243e490SMarcel Moolenaar }
257c243e490SMarcel Moolenaar 
258c243e490SMarcel Moolenaar /*
259c243e490SMarcel Moolenaar  * Macros.
260c243e490SMarcel Moolenaar  */
261c243e490SMarcel Moolenaar 
262c243e490SMarcel Moolenaar ATF_TC(list_for_each);
ATF_TC_HEAD(list_for_each,tc)263c243e490SMarcel Moolenaar ATF_TC_HEAD(list_for_each, tc)
264c243e490SMarcel Moolenaar {
265c243e490SMarcel Moolenaar     atf_tc_set_md_var(tc, "descr", "Checks the atf_list_for_each macro");
266c243e490SMarcel Moolenaar }
ATF_TC_BODY(list_for_each,tc)267c243e490SMarcel Moolenaar ATF_TC_BODY(list_for_each, tc)
268c243e490SMarcel Moolenaar {
269c243e490SMarcel Moolenaar     atf_list_t list;
270c243e490SMarcel Moolenaar     atf_list_iter_t iter;
271c243e490SMarcel Moolenaar     size_t count, i, size;
272c243e490SMarcel Moolenaar     int nums[10];
273c243e490SMarcel Moolenaar 
274c243e490SMarcel Moolenaar     printf("Iterating over empty list\n");
275c243e490SMarcel Moolenaar     RE(atf_list_init(&list));
276c243e490SMarcel Moolenaar     count = 0;
277c243e490SMarcel Moolenaar     atf_list_for_each(iter, &list) {
278c243e490SMarcel Moolenaar         count++;
279c243e490SMarcel Moolenaar         printf("Item count is now %zd\n", count);
280c243e490SMarcel Moolenaar     }
281c243e490SMarcel Moolenaar     ATF_REQUIRE_EQ(count, 0);
282c243e490SMarcel Moolenaar     atf_list_fini(&list);
283c243e490SMarcel Moolenaar 
284c243e490SMarcel Moolenaar     for (size = 0; size <= 10; size++) {
285c243e490SMarcel Moolenaar         printf("Iterating over list of %zd elements\n", size);
286c243e490SMarcel Moolenaar         RE(atf_list_init(&list));
287c243e490SMarcel Moolenaar         for (i = 0; i < size; i++) {
288c243e490SMarcel Moolenaar             nums[i] = i + 1;
289c243e490SMarcel Moolenaar             RE(atf_list_append(&list, &nums[i], false));
290c243e490SMarcel Moolenaar         }
291c243e490SMarcel Moolenaar         count = 0;
292c243e490SMarcel Moolenaar         atf_list_for_each(iter, &list) {
293c243e490SMarcel Moolenaar             printf("Retrieved item: %d\n", *(int *)atf_list_iter_data(iter));
294c243e490SMarcel Moolenaar             count++;
295c243e490SMarcel Moolenaar         }
296c243e490SMarcel Moolenaar         ATF_REQUIRE_EQ(count, size);
297c243e490SMarcel Moolenaar         atf_list_fini(&list);
298c243e490SMarcel Moolenaar     }
299c243e490SMarcel Moolenaar }
300c243e490SMarcel Moolenaar 
301c243e490SMarcel Moolenaar ATF_TC(list_for_each_c);
ATF_TC_HEAD(list_for_each_c,tc)302c243e490SMarcel Moolenaar ATF_TC_HEAD(list_for_each_c, tc)
303c243e490SMarcel Moolenaar {
304c243e490SMarcel Moolenaar     atf_tc_set_md_var(tc, "descr", "Checks the atf_list_for_each_c macro");
305c243e490SMarcel Moolenaar }
ATF_TC_BODY(list_for_each_c,tc)306c243e490SMarcel Moolenaar ATF_TC_BODY(list_for_each_c, tc)
307c243e490SMarcel Moolenaar {
308c243e490SMarcel Moolenaar     atf_list_t list;
309c243e490SMarcel Moolenaar     atf_list_citer_t iter;
310c243e490SMarcel Moolenaar     size_t count, i, size;
311c243e490SMarcel Moolenaar     int nums[10];
312c243e490SMarcel Moolenaar 
313c243e490SMarcel Moolenaar     printf("Iterating over empty list\n");
314c243e490SMarcel Moolenaar     RE(atf_list_init(&list));
315c243e490SMarcel Moolenaar     count = 0;
316c243e490SMarcel Moolenaar     atf_list_for_each_c(iter, &list) {
317c243e490SMarcel Moolenaar         count++;
318c243e490SMarcel Moolenaar         printf("Item count is now %zd\n", count);
319c243e490SMarcel Moolenaar     }
320c243e490SMarcel Moolenaar     ATF_REQUIRE_EQ(count, 0);
321c243e490SMarcel Moolenaar     atf_list_fini(&list);
322c243e490SMarcel Moolenaar 
323c243e490SMarcel Moolenaar     for (size = 0; size <= 10; size++) {
324c243e490SMarcel Moolenaar         printf("Iterating over list of %zd elements\n", size);
325c243e490SMarcel Moolenaar         RE(atf_list_init(&list));
326c243e490SMarcel Moolenaar         for (i = 0; i < size; i++) {
327c243e490SMarcel Moolenaar             nums[i] = i + 1;
328c243e490SMarcel Moolenaar             RE(atf_list_append(&list, &nums[i], false));
329c243e490SMarcel Moolenaar         }
330c243e490SMarcel Moolenaar         count = 0;
331c243e490SMarcel Moolenaar         atf_list_for_each_c(iter, &list) {
332c243e490SMarcel Moolenaar             printf("Retrieved item: %d\n",
333c243e490SMarcel Moolenaar                    *(const int *)atf_list_citer_data(iter));
334c243e490SMarcel Moolenaar             count++;
335c243e490SMarcel Moolenaar         }
336c243e490SMarcel Moolenaar         ATF_REQUIRE_EQ(count, size);
337c243e490SMarcel Moolenaar         atf_list_fini(&list);
338c243e490SMarcel Moolenaar     }
339c243e490SMarcel Moolenaar }
340c243e490SMarcel Moolenaar 
341c243e490SMarcel Moolenaar /* ---------------------------------------------------------------------
342c243e490SMarcel Moolenaar  * Main.
343c243e490SMarcel Moolenaar  * --------------------------------------------------------------------- */
344c243e490SMarcel Moolenaar 
ATF_TP_ADD_TCS(tp)345c243e490SMarcel Moolenaar ATF_TP_ADD_TCS(tp)
346c243e490SMarcel Moolenaar {
347c243e490SMarcel Moolenaar     /* Constructors and destructors. */
348c243e490SMarcel Moolenaar     ATF_TP_ADD_TC(tp, list_init);
349c243e490SMarcel Moolenaar 
350c243e490SMarcel Moolenaar     /* Getters. */
351c243e490SMarcel Moolenaar     ATF_TP_ADD_TC(tp, list_index);
352c243e490SMarcel Moolenaar     ATF_TP_ADD_TC(tp, list_index_c);
353c243e490SMarcel Moolenaar     ATF_TP_ADD_TC(tp, list_to_charpp_empty);
354c243e490SMarcel Moolenaar     ATF_TP_ADD_TC(tp, list_to_charpp_some);
355c243e490SMarcel Moolenaar 
356c243e490SMarcel Moolenaar     /* Modifiers. */
357c243e490SMarcel Moolenaar     ATF_TP_ADD_TC(tp, list_append);
358c243e490SMarcel Moolenaar     ATF_TP_ADD_TC(tp, list_append_list);
359c243e490SMarcel Moolenaar 
360c243e490SMarcel Moolenaar     /* Macros. */
361c243e490SMarcel Moolenaar     ATF_TP_ADD_TC(tp, list_for_each);
362c243e490SMarcel Moolenaar     ATF_TP_ADD_TC(tp, list_for_each_c);
363c243e490SMarcel Moolenaar 
364c243e490SMarcel Moolenaar     return atf_no_error();
365c243e490SMarcel Moolenaar }
366