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