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