xref: /netbsd-src/tests/lib/libutil/t_efun.c (revision 6298c31a51656f27f06d91c42a48bfdf25eb8efd)
1*6298c31aSchristos /*	$NetBSD: t_efun.c,v 1.3 2012/11/04 23:37:02 christos Exp $ */
22289b490Sjruoho 
32289b490Sjruoho /*-
42289b490Sjruoho  * Copyright (c) 2011 The NetBSD Foundation, Inc.
52289b490Sjruoho  * All rights reserved.
62289b490Sjruoho  *
72289b490Sjruoho  * This code is derived from software contributed to The NetBSD Foundation
82289b490Sjruoho  * by Jukka Ruohonen.
92289b490Sjruoho  *
102289b490Sjruoho  * Redistribution and use in source and binary forms, with or without
112289b490Sjruoho  * modification, are permitted provided that the following conditions
122289b490Sjruoho  * are met:
132289b490Sjruoho  * 1. Redistributions of source code must retain the above copyright
142289b490Sjruoho  *    notice, this list of conditions and the following disclaimer.
152289b490Sjruoho  * 2. Redistributions in binary form must reproduce the above copyright
162289b490Sjruoho  *    notice, this list of conditions and the following disclaimer in the
172289b490Sjruoho  *    documentation and/or other materials provided with the distribution.
182289b490Sjruoho  *
192289b490Sjruoho  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
202289b490Sjruoho  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
212289b490Sjruoho  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
222289b490Sjruoho  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
232289b490Sjruoho  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
242289b490Sjruoho  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
252289b490Sjruoho  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
262289b490Sjruoho  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
272289b490Sjruoho  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
282289b490Sjruoho  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
292289b490Sjruoho  * POSSIBILITY OF SUCH DAMAGE.
302289b490Sjruoho  */
31d19079bcSjruoho #include <sys/cdefs.h>
32*6298c31aSchristos __RCSID("$NetBSD: t_efun.c,v 1.3 2012/11/04 23:37:02 christos Exp $");
332289b490Sjruoho 
342289b490Sjruoho #include <atf-c.h>
352289b490Sjruoho 
36*6298c31aSchristos #include <stdio.h>
372289b490Sjruoho #include <stdint.h>
382289b490Sjruoho #include <stdlib.h>
392289b490Sjruoho #include <util.h>
402289b490Sjruoho 
412289b490Sjruoho static bool	fail;
422289b490Sjruoho static void	handler(int, const char *, ...);
432289b490Sjruoho 
442289b490Sjruoho static void
handler(int ef,const char * fmt,...)452289b490Sjruoho handler(int ef, const char *fmt, ...)
462289b490Sjruoho {
472289b490Sjruoho 	fail = false;
482289b490Sjruoho }
492289b490Sjruoho 
502289b490Sjruoho ATF_TC(ecalloc);
ATF_TC_HEAD(ecalloc,tc)512289b490Sjruoho ATF_TC_HEAD(ecalloc, tc)
522289b490Sjruoho {
532289b490Sjruoho 	atf_tc_set_md_var(tc, "descr", "A basic test of ecalloc(3)");
542289b490Sjruoho }
552289b490Sjruoho 
ATF_TC_BODY(ecalloc,tc)562289b490Sjruoho ATF_TC_BODY(ecalloc, tc)
572289b490Sjruoho {
582289b490Sjruoho 	char *x;
592289b490Sjruoho 
602289b490Sjruoho 	fail = true;
612289b490Sjruoho 	x = ecalloc(-1, 1);
622289b490Sjruoho 
632289b490Sjruoho 	ATF_REQUIRE(x == NULL);
642289b490Sjruoho 	ATF_REQUIRE(fail != true);
652289b490Sjruoho 
662289b490Sjruoho 	fail = true;
672289b490Sjruoho 	x = ecalloc(SIZE_MAX, 2);
682289b490Sjruoho 
692289b490Sjruoho 	ATF_REQUIRE(x == NULL);
702289b490Sjruoho 	ATF_REQUIRE(fail != true);
712289b490Sjruoho }
722289b490Sjruoho 
732289b490Sjruoho ATF_TC(efopen);
ATF_TC_HEAD(efopen,tc)742289b490Sjruoho ATF_TC_HEAD(efopen, tc)
752289b490Sjruoho {
762289b490Sjruoho 	atf_tc_set_md_var(tc, "descr", "A basic test of efopen(3)");
772289b490Sjruoho }
782289b490Sjruoho 
ATF_TC_BODY(efopen,tc)792289b490Sjruoho ATF_TC_BODY(efopen, tc)
802289b490Sjruoho {
812289b490Sjruoho 	FILE *f;
822289b490Sjruoho 
832289b490Sjruoho 	fail = true;
842289b490Sjruoho 	f = efopen("XXX", "XXX");
852289b490Sjruoho 
862289b490Sjruoho 	ATF_REQUIRE(f == NULL);
872289b490Sjruoho 	ATF_REQUIRE(fail != true);
882289b490Sjruoho }
892289b490Sjruoho 
902289b490Sjruoho ATF_TC(emalloc);
ATF_TC_HEAD(emalloc,tc)912289b490Sjruoho ATF_TC_HEAD(emalloc, tc)
922289b490Sjruoho {
932289b490Sjruoho 	atf_tc_set_md_var(tc, "descr", "A basic test of emalloc(3)");
942289b490Sjruoho }
952289b490Sjruoho 
ATF_TC_BODY(emalloc,tc)962289b490Sjruoho ATF_TC_BODY(emalloc, tc)
972289b490Sjruoho {
982289b490Sjruoho 	char *x;
992289b490Sjruoho 
1002289b490Sjruoho 	fail = true;
1012289b490Sjruoho 	x = emalloc(-1);
1022289b490Sjruoho 
1032289b490Sjruoho 	ATF_REQUIRE(x == NULL);
1042289b490Sjruoho 	ATF_REQUIRE(fail != true);
1052289b490Sjruoho }
1062289b490Sjruoho 
1072289b490Sjruoho ATF_TC(erealloc);
ATF_TC_HEAD(erealloc,tc)1082289b490Sjruoho ATF_TC_HEAD(erealloc, tc)
1092289b490Sjruoho {
1102289b490Sjruoho 	atf_tc_set_md_var(tc, "descr", "A basic test of erealloc(3)");
1112289b490Sjruoho }
1122289b490Sjruoho 
ATF_TC_BODY(erealloc,tc)1132289b490Sjruoho ATF_TC_BODY(erealloc, tc)
1142289b490Sjruoho {
1152289b490Sjruoho 	char *x;
1162289b490Sjruoho 
1172289b490Sjruoho 	fail = true;
1182289b490Sjruoho 	x = erealloc(NULL, -1);
1192289b490Sjruoho 
1202289b490Sjruoho 	ATF_REQUIRE(x == NULL);
1212289b490Sjruoho 	ATF_REQUIRE(fail != true);
1222289b490Sjruoho }
1232289b490Sjruoho 
ATF_TP_ADD_TCS(tp)1242289b490Sjruoho ATF_TP_ADD_TCS(tp)
1252289b490Sjruoho {
1262289b490Sjruoho 
1272289b490Sjruoho 	ATF_REQUIRE(esetfunc(handler) != NULL);
1282289b490Sjruoho 
1292289b490Sjruoho 	ATF_TP_ADD_TC(tp, ecalloc);
1302289b490Sjruoho 	ATF_TP_ADD_TC(tp, efopen);
1312289b490Sjruoho 	ATF_TP_ADD_TC(tp, emalloc);
1322289b490Sjruoho 	ATF_TP_ADD_TC(tp, erealloc);
1332289b490Sjruoho 
1342289b490Sjruoho 	return atf_no_error();
1352289b490Sjruoho }
136