xref: /minix3/external/bsd/bind/dist/unit/atf-src/atf-c/error_test.c (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek /*	$NetBSD: error_test.c,v 1.3 2014/12/10 04:38:03 christos Exp $	*/
2*00b67f09SDavid van Moolenbroek 
3*00b67f09SDavid van Moolenbroek /*
4*00b67f09SDavid van Moolenbroek  * Automated Testing Framework (atf)
5*00b67f09SDavid van Moolenbroek  *
6*00b67f09SDavid van Moolenbroek  * Copyright (c) 2008 The NetBSD Foundation, Inc.
7*00b67f09SDavid van Moolenbroek  * All rights reserved.
8*00b67f09SDavid van Moolenbroek  *
9*00b67f09SDavid van Moolenbroek  * Redistribution and use in source and binary forms, with or without
10*00b67f09SDavid van Moolenbroek  * modification, are permitted provided that the following conditions
11*00b67f09SDavid van Moolenbroek  * are met:
12*00b67f09SDavid van Moolenbroek  * 1. Redistributions of source code must retain the above copyright
13*00b67f09SDavid van Moolenbroek  *    notice, this list of conditions and the following disclaimer.
14*00b67f09SDavid van Moolenbroek  * 2. Redistributions in binary form must reproduce the above copyright
15*00b67f09SDavid van Moolenbroek  *    notice, this list of conditions and the following disclaimer in the
16*00b67f09SDavid van Moolenbroek  *    documentation and/or other materials provided with the distribution.
17*00b67f09SDavid van Moolenbroek  *
18*00b67f09SDavid van Moolenbroek  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
19*00b67f09SDavid van Moolenbroek  * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
20*00b67f09SDavid van Moolenbroek  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21*00b67f09SDavid van Moolenbroek  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22*00b67f09SDavid van Moolenbroek  * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
23*00b67f09SDavid van Moolenbroek  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24*00b67f09SDavid van Moolenbroek  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
25*00b67f09SDavid van Moolenbroek  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26*00b67f09SDavid van Moolenbroek  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
27*00b67f09SDavid van Moolenbroek  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28*00b67f09SDavid van Moolenbroek  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
29*00b67f09SDavid van Moolenbroek  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30*00b67f09SDavid van Moolenbroek  */
31*00b67f09SDavid van Moolenbroek 
32*00b67f09SDavid van Moolenbroek #include <errno.h>
33*00b67f09SDavid van Moolenbroek #include <stdint.h>
34*00b67f09SDavid van Moolenbroek #include <stdio.h>
35*00b67f09SDavid van Moolenbroek #include <string.h>
36*00b67f09SDavid van Moolenbroek 
37*00b67f09SDavid van Moolenbroek #include <atf-c.h>
38*00b67f09SDavid van Moolenbroek 
39*00b67f09SDavid van Moolenbroek #include "atf-c/defs.h"
40*00b67f09SDavid van Moolenbroek #include "atf-c/error.h"
41*00b67f09SDavid van Moolenbroek 
42*00b67f09SDavid van Moolenbroek #include "detail/test_helpers.h"
43*00b67f09SDavid van Moolenbroek 
44*00b67f09SDavid van Moolenbroek /* ---------------------------------------------------------------------
45*00b67f09SDavid van Moolenbroek  * Auxiliary functions.
46*00b67f09SDavid van Moolenbroek  * --------------------------------------------------------------------- */
47*00b67f09SDavid van Moolenbroek 
48*00b67f09SDavid van Moolenbroek static
49*00b67f09SDavid van Moolenbroek void
test_format(const atf_error_t err ATF_DEFS_ATTRIBUTE_UNUSED,char * buf,size_t buflen)50*00b67f09SDavid van Moolenbroek test_format(const atf_error_t err ATF_DEFS_ATTRIBUTE_UNUSED,
51*00b67f09SDavid van Moolenbroek             char *buf, size_t buflen)
52*00b67f09SDavid van Moolenbroek {
53*00b67f09SDavid van Moolenbroek     snprintf(buf, buflen, "Test formatting function");
54*00b67f09SDavid van Moolenbroek }
55*00b67f09SDavid van Moolenbroek 
56*00b67f09SDavid van Moolenbroek /* ---------------------------------------------------------------------
57*00b67f09SDavid van Moolenbroek  * Tests for the "atf_error" type.
58*00b67f09SDavid van Moolenbroek  * --------------------------------------------------------------------- */
59*00b67f09SDavid van Moolenbroek 
60*00b67f09SDavid van Moolenbroek ATF_TC(error_new);
ATF_TC_HEAD(error_new,tc)61*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(error_new, tc)
62*00b67f09SDavid van Moolenbroek {
63*00b67f09SDavid van Moolenbroek     atf_tc_set_md_var(tc, "descr", "Checks the construction of an error "
64*00b67f09SDavid van Moolenbroek                       "object");
65*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(error_new,tc)66*00b67f09SDavid van Moolenbroek ATF_TC_BODY(error_new, tc)
67*00b67f09SDavid van Moolenbroek {
68*00b67f09SDavid van Moolenbroek     atf_error_t err;
69*00b67f09SDavid van Moolenbroek     int data;
70*00b67f09SDavid van Moolenbroek 
71*00b67f09SDavid van Moolenbroek     err = atf_error_new("test_error", NULL, 0, NULL);
72*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(atf_error_is(err, "test_error"));
73*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(!atf_error_is(err, "unknown_error"));
74*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(atf_error_data(err) == NULL);
75*00b67f09SDavid van Moolenbroek     atf_error_free(err);
76*00b67f09SDavid van Moolenbroek 
77*00b67f09SDavid van Moolenbroek     data = 5;
78*00b67f09SDavid van Moolenbroek     err = atf_error_new("test_data_error", &data, sizeof(data), NULL);
79*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(atf_error_is(err, "test_data_error"));
80*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(!atf_error_is(err, "unknown_error"));
81*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(atf_error_data(err) != NULL);
82*00b67f09SDavid van Moolenbroek     ATF_REQUIRE_EQ(*((const int *)atf_error_data(err)), 5);
83*00b67f09SDavid van Moolenbroek     atf_error_free(err);
84*00b67f09SDavid van Moolenbroek }
85*00b67f09SDavid van Moolenbroek 
86*00b67f09SDavid van Moolenbroek ATF_TC(error_new_wo_memory);
ATF_TC_HEAD(error_new_wo_memory,tc)87*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(error_new_wo_memory, tc)
88*00b67f09SDavid van Moolenbroek {
89*00b67f09SDavid van Moolenbroek     atf_tc_set_md_var(tc, "descr", "Checks that an unavailable memory error "
90*00b67f09SDavid van Moolenbroek                       "raised when constructing an error object "
91*00b67f09SDavid van Moolenbroek                             "is properly converted to the no_memory "
92*00b67f09SDavid van Moolenbroek                             "static error type");
93*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(error_new_wo_memory,tc)94*00b67f09SDavid van Moolenbroek ATF_TC_BODY(error_new_wo_memory, tc)
95*00b67f09SDavid van Moolenbroek {
96*00b67f09SDavid van Moolenbroek     atf_error_t err;
97*00b67f09SDavid van Moolenbroek     void *invalid;
98*00b67f09SDavid van Moolenbroek 
99*00b67f09SDavid van Moolenbroek     invalid = (void *)1;
100*00b67f09SDavid van Moolenbroek 
101*00b67f09SDavid van Moolenbroek     err = atf_error_new("test_error", invalid, SIZE_MAX, NULL);
102*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(atf_error_is(err, "no_memory"));
103*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(atf_error_data(err) == NULL);
104*00b67f09SDavid van Moolenbroek     atf_error_free(err);
105*00b67f09SDavid van Moolenbroek }
106*00b67f09SDavid van Moolenbroek 
107*00b67f09SDavid van Moolenbroek ATF_TC(no_error);
ATF_TC_HEAD(no_error,tc)108*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(no_error, tc)
109*00b67f09SDavid van Moolenbroek {
110*00b67f09SDavid van Moolenbroek     atf_tc_set_md_var(tc, "descr", "Checks that constructing a non-error "
111*00b67f09SDavid van Moolenbroek                       "object works");
112*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(no_error,tc)113*00b67f09SDavid van Moolenbroek ATF_TC_BODY(no_error, tc)
114*00b67f09SDavid van Moolenbroek {
115*00b67f09SDavid van Moolenbroek     atf_error_t err;
116*00b67f09SDavid van Moolenbroek 
117*00b67f09SDavid van Moolenbroek     err = atf_no_error();
118*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(!atf_is_error(err));
119*00b67f09SDavid van Moolenbroek }
120*00b67f09SDavid van Moolenbroek 
121*00b67f09SDavid van Moolenbroek ATF_TC(is_error);
ATF_TC_HEAD(is_error,tc)122*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(is_error, tc)
123*00b67f09SDavid van Moolenbroek {
124*00b67f09SDavid van Moolenbroek     atf_tc_set_md_var(tc, "descr", "Checks the is_error method to determine "
125*00b67f09SDavid van Moolenbroek                       "if an error object holds success or an error");
126*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(is_error,tc)127*00b67f09SDavid van Moolenbroek ATF_TC_BODY(is_error, tc)
128*00b67f09SDavid van Moolenbroek {
129*00b67f09SDavid van Moolenbroek     atf_error_t err;
130*00b67f09SDavid van Moolenbroek 
131*00b67f09SDavid van Moolenbroek     err = atf_no_error();
132*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(!atf_is_error(err));
133*00b67f09SDavid van Moolenbroek 
134*00b67f09SDavid van Moolenbroek     err = atf_error_new("test_error", NULL, 0, NULL);
135*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(atf_is_error(err));
136*00b67f09SDavid van Moolenbroek     atf_error_free(err);
137*00b67f09SDavid van Moolenbroek }
138*00b67f09SDavid van Moolenbroek 
139*00b67f09SDavid van Moolenbroek ATF_TC(format);
ATF_TC_HEAD(format,tc)140*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(format, tc)
141*00b67f09SDavid van Moolenbroek {
142*00b67f09SDavid van Moolenbroek     atf_tc_set_md_var(tc, "descr", "Checks the default formatting function "
143*00b67f09SDavid van Moolenbroek                       "and the ability to change it");
144*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(format,tc)145*00b67f09SDavid van Moolenbroek ATF_TC_BODY(format, tc)
146*00b67f09SDavid van Moolenbroek {
147*00b67f09SDavid van Moolenbroek     atf_error_t err;
148*00b67f09SDavid van Moolenbroek     char buf[1024];
149*00b67f09SDavid van Moolenbroek 
150*00b67f09SDavid van Moolenbroek     printf("Testing default formatting function\n");
151*00b67f09SDavid van Moolenbroek     err = atf_error_new("test_error", NULL, 0, NULL);
152*00b67f09SDavid van Moolenbroek     atf_error_format(err, buf, sizeof(buf));
153*00b67f09SDavid van Moolenbroek     printf("Error string is: %s\n", buf);
154*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(strcmp(buf, "Error 'test_error'") == 0);
155*00b67f09SDavid van Moolenbroek     atf_error_free(err);
156*00b67f09SDavid van Moolenbroek 
157*00b67f09SDavid van Moolenbroek     printf("Testing custom formatting function\n");
158*00b67f09SDavid van Moolenbroek     err = atf_error_new("test_error", NULL, 0, test_format);
159*00b67f09SDavid van Moolenbroek     atf_error_format(err, buf, sizeof(buf));
160*00b67f09SDavid van Moolenbroek     printf("Error string is: %s\n", buf);
161*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(strcmp(buf, "Test formatting function") == 0);
162*00b67f09SDavid van Moolenbroek     atf_error_free(err);
163*00b67f09SDavid van Moolenbroek }
164*00b67f09SDavid van Moolenbroek 
165*00b67f09SDavid van Moolenbroek /* ---------------------------------------------------------------------
166*00b67f09SDavid van Moolenbroek  * Tests for the "libc" error.
167*00b67f09SDavid van Moolenbroek  * --------------------------------------------------------------------- */
168*00b67f09SDavid van Moolenbroek 
169*00b67f09SDavid van Moolenbroek ATF_TC(libc_new);
ATF_TC_HEAD(libc_new,tc)170*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(libc_new, tc)
171*00b67f09SDavid van Moolenbroek {
172*00b67f09SDavid van Moolenbroek     atf_tc_set_md_var(tc, "descr", "Checks the construction of libc errors");
173*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(libc_new,tc)174*00b67f09SDavid van Moolenbroek ATF_TC_BODY(libc_new, tc)
175*00b67f09SDavid van Moolenbroek {
176*00b67f09SDavid van Moolenbroek     atf_error_t err;
177*00b67f09SDavid van Moolenbroek 
178*00b67f09SDavid van Moolenbroek     err = atf_libc_error(ENOMEM, "Test message 1");
179*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(atf_error_is(err, "libc"));
180*00b67f09SDavid van Moolenbroek     ATF_REQUIRE_EQ(atf_libc_error_code(err), ENOMEM);
181*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(strcmp(atf_libc_error_msg(err), "Test message 1") == 0);
182*00b67f09SDavid van Moolenbroek     atf_error_free(err);
183*00b67f09SDavid van Moolenbroek 
184*00b67f09SDavid van Moolenbroek     err = atf_libc_error(EPERM, "%s message %d", "Test", 2);
185*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(atf_error_is(err, "libc"));
186*00b67f09SDavid van Moolenbroek     ATF_REQUIRE_EQ(atf_libc_error_code(err), EPERM);
187*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(strcmp(atf_libc_error_msg(err), "Test message 2") == 0);
188*00b67f09SDavid van Moolenbroek     atf_error_free(err);
189*00b67f09SDavid van Moolenbroek }
190*00b67f09SDavid van Moolenbroek 
191*00b67f09SDavid van Moolenbroek ATF_TC(libc_format);
ATF_TC_HEAD(libc_format,tc)192*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(libc_format, tc)
193*00b67f09SDavid van Moolenbroek {
194*00b67f09SDavid van Moolenbroek     atf_tc_set_md_var(tc, "descr", "Checks the formatting of libc errors");
195*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(libc_format,tc)196*00b67f09SDavid van Moolenbroek ATF_TC_BODY(libc_format, tc)
197*00b67f09SDavid van Moolenbroek {
198*00b67f09SDavid van Moolenbroek     atf_error_t err;
199*00b67f09SDavid van Moolenbroek     char buf[1024];
200*00b67f09SDavid van Moolenbroek 
201*00b67f09SDavid van Moolenbroek     err = atf_libc_error(ENOMEM, "Test message 1");
202*00b67f09SDavid van Moolenbroek     atf_error_format(err, buf, sizeof(buf));
203*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(strstr(buf, strerror(ENOMEM)) != NULL);
204*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(strstr(buf, "Test message 1") != NULL);
205*00b67f09SDavid van Moolenbroek     atf_error_free(err);
206*00b67f09SDavid van Moolenbroek 
207*00b67f09SDavid van Moolenbroek     err = atf_libc_error(EPERM, "Test message 2");
208*00b67f09SDavid van Moolenbroek     atf_error_format(err, buf, sizeof(buf));
209*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(strstr(buf, strerror(EPERM)) != NULL);
210*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(strstr(buf, "Test message 2") != NULL);
211*00b67f09SDavid van Moolenbroek     atf_error_free(err);
212*00b67f09SDavid van Moolenbroek 
213*00b67f09SDavid van Moolenbroek     err = atf_libc_error(EPERM, "%s message %d", "Test", 3);
214*00b67f09SDavid van Moolenbroek     atf_error_format(err, buf, sizeof(buf));
215*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(strstr(buf, strerror(EPERM)) != NULL);
216*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(strstr(buf, "Test message 3") != NULL);
217*00b67f09SDavid van Moolenbroek     atf_error_free(err);
218*00b67f09SDavid van Moolenbroek }
219*00b67f09SDavid van Moolenbroek 
220*00b67f09SDavid van Moolenbroek /* ---------------------------------------------------------------------
221*00b67f09SDavid van Moolenbroek  * Tests for the "no_memory" error.
222*00b67f09SDavid van Moolenbroek  * --------------------------------------------------------------------- */
223*00b67f09SDavid van Moolenbroek 
224*00b67f09SDavid van Moolenbroek ATF_TC(no_memory_new);
ATF_TC_HEAD(no_memory_new,tc)225*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(no_memory_new, tc)
226*00b67f09SDavid van Moolenbroek {
227*00b67f09SDavid van Moolenbroek     atf_tc_set_md_var(tc, "descr", "Checks the construction of no_memory "
228*00b67f09SDavid van Moolenbroek                       "errors");
229*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(no_memory_new,tc)230*00b67f09SDavid van Moolenbroek ATF_TC_BODY(no_memory_new, tc)
231*00b67f09SDavid van Moolenbroek {
232*00b67f09SDavid van Moolenbroek     atf_error_t err;
233*00b67f09SDavid van Moolenbroek 
234*00b67f09SDavid van Moolenbroek     err = atf_no_memory_error();
235*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(atf_error_is(err, "no_memory"));
236*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(atf_error_data(err) == NULL);
237*00b67f09SDavid van Moolenbroek     atf_error_free(err);
238*00b67f09SDavid van Moolenbroek }
239*00b67f09SDavid van Moolenbroek 
240*00b67f09SDavid van Moolenbroek ATF_TC(no_memory_format);
ATF_TC_HEAD(no_memory_format,tc)241*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(no_memory_format, tc)
242*00b67f09SDavid van Moolenbroek {
243*00b67f09SDavid van Moolenbroek     atf_tc_set_md_var(tc, "descr", "Checks the formatting of no_memory "
244*00b67f09SDavid van Moolenbroek                       "errors");
245*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(no_memory_format,tc)246*00b67f09SDavid van Moolenbroek ATF_TC_BODY(no_memory_format, tc)
247*00b67f09SDavid van Moolenbroek {
248*00b67f09SDavid van Moolenbroek     atf_error_t err;
249*00b67f09SDavid van Moolenbroek     char buf[1024];
250*00b67f09SDavid van Moolenbroek 
251*00b67f09SDavid van Moolenbroek     err = atf_no_memory_error();
252*00b67f09SDavid van Moolenbroek     atf_error_format(err, buf, sizeof(buf));
253*00b67f09SDavid van Moolenbroek     ATF_REQUIRE(strcmp(buf, "Not enough memory") == 0);
254*00b67f09SDavid van Moolenbroek     atf_error_free(err);
255*00b67f09SDavid van Moolenbroek }
256*00b67f09SDavid van Moolenbroek 
257*00b67f09SDavid van Moolenbroek ATF_TC(no_memory_twice);
ATF_TC_HEAD(no_memory_twice,tc)258*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(no_memory_twice, tc)
259*00b67f09SDavid van Moolenbroek {
260*00b67f09SDavid van Moolenbroek     atf_tc_set_md_var(tc, "descr", "Checks the construction of no_memory "
261*00b67f09SDavid van Moolenbroek                       "errors multiple times, as this error is initialized "
262*00b67f09SDavid van Moolenbroek                       "statically");
263*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(no_memory_twice,tc)264*00b67f09SDavid van Moolenbroek ATF_TC_BODY(no_memory_twice, tc)
265*00b67f09SDavid van Moolenbroek {
266*00b67f09SDavid van Moolenbroek     {
267*00b67f09SDavid van Moolenbroek         atf_error_t err = atf_no_memory_error();
268*00b67f09SDavid van Moolenbroek         ATF_REQUIRE(atf_error_is(err, "no_memory"));
269*00b67f09SDavid van Moolenbroek         ATF_REQUIRE(atf_error_data(err) == NULL);
270*00b67f09SDavid van Moolenbroek         atf_error_free(err);
271*00b67f09SDavid van Moolenbroek     }
272*00b67f09SDavid van Moolenbroek 
273*00b67f09SDavid van Moolenbroek     {
274*00b67f09SDavid van Moolenbroek         atf_error_t err = atf_no_memory_error();
275*00b67f09SDavid van Moolenbroek         ATF_REQUIRE(atf_error_is(err, "no_memory"));
276*00b67f09SDavid van Moolenbroek         ATF_REQUIRE(atf_error_data(err) == NULL);
277*00b67f09SDavid van Moolenbroek         atf_error_free(err);
278*00b67f09SDavid van Moolenbroek     }
279*00b67f09SDavid van Moolenbroek }
280*00b67f09SDavid van Moolenbroek 
281*00b67f09SDavid van Moolenbroek /* ---------------------------------------------------------------------
282*00b67f09SDavid van Moolenbroek  * Tests cases for the header file.
283*00b67f09SDavid van Moolenbroek  * --------------------------------------------------------------------- */
284*00b67f09SDavid van Moolenbroek 
285*00b67f09SDavid van Moolenbroek HEADER_TC(include, "atf-c/error.h");
286*00b67f09SDavid van Moolenbroek HEADER_TC(include_fwd, "atf-c/error_fwd.h");
287*00b67f09SDavid van Moolenbroek 
288*00b67f09SDavid van Moolenbroek /* ---------------------------------------------------------------------
289*00b67f09SDavid van Moolenbroek  * Main.
290*00b67f09SDavid van Moolenbroek  * --------------------------------------------------------------------- */
291*00b67f09SDavid van Moolenbroek 
ATF_TP_ADD_TCS(tp)292*00b67f09SDavid van Moolenbroek ATF_TP_ADD_TCS(tp)
293*00b67f09SDavid van Moolenbroek {
294*00b67f09SDavid van Moolenbroek     /* Add the tests for the "atf_error" type. */
295*00b67f09SDavid van Moolenbroek     ATF_TP_ADD_TC(tp, error_new);
296*00b67f09SDavid van Moolenbroek     ATF_TP_ADD_TC(tp, error_new_wo_memory);
297*00b67f09SDavid van Moolenbroek     ATF_TP_ADD_TC(tp, no_error);
298*00b67f09SDavid van Moolenbroek     ATF_TP_ADD_TC(tp, is_error);
299*00b67f09SDavid van Moolenbroek     ATF_TP_ADD_TC(tp, format);
300*00b67f09SDavid van Moolenbroek 
301*00b67f09SDavid van Moolenbroek     /* Add the tests for the "libc" error. */
302*00b67f09SDavid van Moolenbroek     ATF_TP_ADD_TC(tp, libc_new);
303*00b67f09SDavid van Moolenbroek     ATF_TP_ADD_TC(tp, libc_format);
304*00b67f09SDavid van Moolenbroek 
305*00b67f09SDavid van Moolenbroek     /* Add the tests for the "no_memory" error. */
306*00b67f09SDavid van Moolenbroek     ATF_TP_ADD_TC(tp, no_memory_new);
307*00b67f09SDavid van Moolenbroek     ATF_TP_ADD_TC(tp, no_memory_format);
308*00b67f09SDavid van Moolenbroek     ATF_TP_ADD_TC(tp, no_memory_twice);
309*00b67f09SDavid van Moolenbroek 
310*00b67f09SDavid van Moolenbroek     /* Add the test cases for the header file. */
311*00b67f09SDavid van Moolenbroek     ATF_TP_ADD_TC(tp, include);
312*00b67f09SDavid van Moolenbroek     ATF_TP_ADD_TC(tp, include_fwd);
313*00b67f09SDavid van Moolenbroek 
314*00b67f09SDavid van Moolenbroek     return atf_no_error();
315*00b67f09SDavid van Moolenbroek }
316