xref: /netbsd-src/tests/include/t_inttypes.c (revision 973ed75f39ac9daa16ad9584ed6ed2208ff52c36)
1*973ed75fSchristos /*	$NetBSD: t_inttypes.c,v 1.3 2013/10/19 17:44:37 christos Exp $	*/
26cbeb05cSjmmv 
36cbeb05cSjmmv /*-
46cbeb05cSjmmv  * Copyright (c) 2001 The NetBSD Foundation, Inc.
56cbeb05cSjmmv  * All rights reserved.
66cbeb05cSjmmv  *
76cbeb05cSjmmv  * Redistribution and use in source and binary forms, with or without
86cbeb05cSjmmv  * modification, are permitted provided that the following conditions
96cbeb05cSjmmv  * are met:
106cbeb05cSjmmv  * 1. Redistributions of source code must retain the above copyright
116cbeb05cSjmmv  *    notice, this list of conditions and the following disclaimer.
126cbeb05cSjmmv  * 2. Redistributions in binary form must reproduce the above copyright
136cbeb05cSjmmv  *    notice, this list of conditions and the following disclaimer in the
146cbeb05cSjmmv  *    documentation and/or other materials provided with the distribution.
156cbeb05cSjmmv  *
166cbeb05cSjmmv  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
176cbeb05cSjmmv  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
186cbeb05cSjmmv  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
196cbeb05cSjmmv  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
206cbeb05cSjmmv  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
216cbeb05cSjmmv  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
226cbeb05cSjmmv  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
236cbeb05cSjmmv  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
246cbeb05cSjmmv  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
256cbeb05cSjmmv  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
266cbeb05cSjmmv  * POSSIBILITY OF SUCH DAMAGE.
276cbeb05cSjmmv  */
286cbeb05cSjmmv 
296cbeb05cSjmmv #include <inttypes.h>
306cbeb05cSjmmv #include <stdio.h>
316cbeb05cSjmmv #include <stdlib.h>
326cbeb05cSjmmv 
336cbeb05cSjmmv #include <atf-c.h>
346cbeb05cSjmmv 
352f0d3880Sjmmv ATF_TC_WITHOUT_HEAD(int_fmtio);
ATF_TC_BODY(int_fmtio,tc)362f0d3880Sjmmv ATF_TC_BODY(int_fmtio, tc)
376cbeb05cSjmmv {
386cbeb05cSjmmv 	char buf[64];
396cbeb05cSjmmv 
40*973ed75fSchristos 	int8_t i8 = 0;
41*973ed75fSchristos 	int16_t i16 = 0;
42*973ed75fSchristos 	int32_t i32 = 0;
43*973ed75fSchristos 	int64_t i64 = 0;
44*973ed75fSchristos 	int_least8_t il8 = 0;
45*973ed75fSchristos 	int_least16_t il16 = 0;
46*973ed75fSchristos 	int_least32_t il32 = 0;
47*973ed75fSchristos 	int_least64_t il64 = 0;
48*973ed75fSchristos 	int_fast8_t if8 = 0;
49*973ed75fSchristos 	int_fast16_t if16 = 0;
50*973ed75fSchristos 	int_fast32_t if32 = 0;
51*973ed75fSchristos 	int_fast64_t if64 = 0;
52*973ed75fSchristos 	intmax_t im = 0;
53*973ed75fSchristos 	intptr_t ip = 0;
54*973ed75fSchristos 	uint8_t ui8 = 0;
55*973ed75fSchristos 	uint16_t ui16 = 0;
56*973ed75fSchristos 	uint32_t ui32 = 0;
57*973ed75fSchristos 	uint64_t ui64 = 0;
58*973ed75fSchristos 	uint_least8_t uil8 = 0;
59*973ed75fSchristos 	uint_least16_t uil16 = 0;
60*973ed75fSchristos 	uint_least32_t uil32 = 0;
61*973ed75fSchristos 	uint_least64_t uil64 = 0;
62*973ed75fSchristos 	uint_fast8_t uif8 = 0;
63*973ed75fSchristos 	uint_fast16_t uif16 = 0;
64*973ed75fSchristos 	uint_fast32_t uif32 = 0;
65*973ed75fSchristos 	uint_fast64_t uif64 = 0;
66*973ed75fSchristos 	uintmax_t uim = 0;
67*973ed75fSchristos 	uintptr_t uip = 0;
686cbeb05cSjmmv 
696cbeb05cSjmmv #define	PRINT(fmt, var) \
702f0d3880Sjmmv 	snprintf(buf, sizeof(buf), "%" fmt, var)
716cbeb05cSjmmv #define	SCAN(fmt, var) \
722f0d3880Sjmmv 	sscanf(buf, "%" fmt, &var)
736cbeb05cSjmmv 
746cbeb05cSjmmv 	PRINT(PRId8, i8);
756cbeb05cSjmmv 	PRINT(PRId16, i16);
766cbeb05cSjmmv 	PRINT(PRId32, i32);
776cbeb05cSjmmv 	PRINT(PRId64, i64);
786cbeb05cSjmmv 	PRINT(PRIdLEAST8, il8);
796cbeb05cSjmmv 	PRINT(PRIdLEAST16, il16);
806cbeb05cSjmmv 	PRINT(PRIdLEAST32, il32);
816cbeb05cSjmmv 	PRINT(PRIdLEAST64, il64);
826cbeb05cSjmmv 	PRINT(PRIdFAST8, if8);
836cbeb05cSjmmv 	PRINT(PRIdFAST16, if16);
846cbeb05cSjmmv 	PRINT(PRIdFAST32, if32);
856cbeb05cSjmmv 	PRINT(PRIdFAST64, if64);
866cbeb05cSjmmv 	PRINT(PRIdMAX, im);
876cbeb05cSjmmv 	PRINT(PRIdPTR, ip);
886cbeb05cSjmmv 
896cbeb05cSjmmv 	PRINT(PRIi8, i8);
906cbeb05cSjmmv 	PRINT(PRIi16, i16);
916cbeb05cSjmmv 	PRINT(PRIi32, i32);
926cbeb05cSjmmv 	PRINT(PRIi64, i64);
936cbeb05cSjmmv 	PRINT(PRIiLEAST8, il8);
946cbeb05cSjmmv 	PRINT(PRIiLEAST16, il16);
956cbeb05cSjmmv 	PRINT(PRIiLEAST32, il32);
966cbeb05cSjmmv 	PRINT(PRIiLEAST64, il64);
976cbeb05cSjmmv 	PRINT(PRIiFAST8, if8);
986cbeb05cSjmmv 	PRINT(PRIiFAST16, if16);
996cbeb05cSjmmv 	PRINT(PRIiFAST32, if32);
1006cbeb05cSjmmv 	PRINT(PRIiFAST64, if64);
1016cbeb05cSjmmv 	PRINT(PRIiMAX, im);
1026cbeb05cSjmmv 	PRINT(PRIiPTR, ip);
1036cbeb05cSjmmv 
1046cbeb05cSjmmv 	PRINT(PRIo8, ui8);
1056cbeb05cSjmmv 	PRINT(PRIo16, ui16);
1066cbeb05cSjmmv 	PRINT(PRIo32, ui32);
1076cbeb05cSjmmv 	PRINT(PRIo64, ui64);
1086cbeb05cSjmmv 	PRINT(PRIoLEAST8, uil8);
1096cbeb05cSjmmv 	PRINT(PRIoLEAST16, uil16);
1106cbeb05cSjmmv 	PRINT(PRIoLEAST32, uil32);
1116cbeb05cSjmmv 	PRINT(PRIoLEAST64, uil64);
1126cbeb05cSjmmv 	PRINT(PRIoFAST8, uif8);
1136cbeb05cSjmmv 	PRINT(PRIoFAST16, uif16);
1146cbeb05cSjmmv 	PRINT(PRIoFAST32, uif32);
1156cbeb05cSjmmv 	PRINT(PRIoFAST64, uif64);
1166cbeb05cSjmmv 	PRINT(PRIoMAX, uim);
1176cbeb05cSjmmv 	PRINT(PRIoPTR, uip);
1186cbeb05cSjmmv 
1196cbeb05cSjmmv 	PRINT(PRIu8, ui8);
1206cbeb05cSjmmv 	PRINT(PRIu16, ui16);
1216cbeb05cSjmmv 	PRINT(PRIu32, ui32);
1226cbeb05cSjmmv 	PRINT(PRIu64, ui64);
1236cbeb05cSjmmv 	PRINT(PRIuLEAST8, uil8);
1246cbeb05cSjmmv 	PRINT(PRIuLEAST16, uil16);
1256cbeb05cSjmmv 	PRINT(PRIuLEAST32, uil32);
1266cbeb05cSjmmv 	PRINT(PRIuLEAST64, uil64);
1276cbeb05cSjmmv 	PRINT(PRIuFAST8, uif8);
1286cbeb05cSjmmv 	PRINT(PRIuFAST16, uif16);
1296cbeb05cSjmmv 	PRINT(PRIuFAST32, uif32);
1306cbeb05cSjmmv 	PRINT(PRIuFAST64, uif64);
1316cbeb05cSjmmv 	PRINT(PRIuMAX, uim);
1326cbeb05cSjmmv 	PRINT(PRIuPTR, uip);
1336cbeb05cSjmmv 
1346cbeb05cSjmmv 	PRINT(PRIx8, ui8);
1356cbeb05cSjmmv 	PRINT(PRIx16, ui16);
1366cbeb05cSjmmv 	PRINT(PRIx32, ui32);
1376cbeb05cSjmmv 	PRINT(PRIx64, ui64);
1386cbeb05cSjmmv 	PRINT(PRIxLEAST8, uil8);
1396cbeb05cSjmmv 	PRINT(PRIxLEAST16, uil16);
1406cbeb05cSjmmv 	PRINT(PRIxLEAST32, uil32);
1416cbeb05cSjmmv 	PRINT(PRIxLEAST64, uil64);
1426cbeb05cSjmmv 	PRINT(PRIxFAST8, uif8);
1436cbeb05cSjmmv 	PRINT(PRIxFAST16, uif16);
1446cbeb05cSjmmv 	PRINT(PRIxFAST32, uif32);
1456cbeb05cSjmmv 	PRINT(PRIxFAST64, uif64);
1466cbeb05cSjmmv 	PRINT(PRIxMAX, uim);
1476cbeb05cSjmmv 	PRINT(PRIxPTR, uip);
1486cbeb05cSjmmv 
1496cbeb05cSjmmv 	PRINT(PRIX8, ui8);
1506cbeb05cSjmmv 	PRINT(PRIX16, ui16);
1516cbeb05cSjmmv 	PRINT(PRIX32, ui32);
1526cbeb05cSjmmv 	PRINT(PRIX64, ui64);
1536cbeb05cSjmmv 	PRINT(PRIXLEAST8, uil8);
1546cbeb05cSjmmv 	PRINT(PRIXLEAST16, uil16);
1556cbeb05cSjmmv 	PRINT(PRIXLEAST32, uil32);
1566cbeb05cSjmmv 	PRINT(PRIXLEAST64, uil64);
1576cbeb05cSjmmv 	PRINT(PRIXFAST8, uif8);
1586cbeb05cSjmmv 	PRINT(PRIXFAST16, uif16);
1596cbeb05cSjmmv 	PRINT(PRIXFAST32, uif32);
1606cbeb05cSjmmv 	PRINT(PRIXFAST64, uif64);
1616cbeb05cSjmmv 	PRINT(PRIXMAX, uim);
1626cbeb05cSjmmv 	PRINT(PRIXPTR, uip);
1636cbeb05cSjmmv 
1646cbeb05cSjmmv 
1656cbeb05cSjmmv 	SCAN(SCNd8, i8);
1666cbeb05cSjmmv 	SCAN(SCNd16, i16);
1676cbeb05cSjmmv 	SCAN(SCNd32, i32);
1686cbeb05cSjmmv 	SCAN(SCNd64, i64);
1696cbeb05cSjmmv 	SCAN(SCNdLEAST8, il8);
1706cbeb05cSjmmv 	SCAN(SCNdLEAST16, il16);
1716cbeb05cSjmmv 	SCAN(SCNdLEAST32, il32);
1726cbeb05cSjmmv 	SCAN(SCNdLEAST64, il64);
1736cbeb05cSjmmv 	SCAN(SCNdFAST8, if8);
1746cbeb05cSjmmv 	SCAN(SCNdFAST16, if16);
1756cbeb05cSjmmv 	SCAN(SCNdFAST32, if32);
1766cbeb05cSjmmv 	SCAN(SCNdFAST64, if64);
1776cbeb05cSjmmv 	SCAN(SCNdMAX, im);
1786cbeb05cSjmmv 	SCAN(SCNdPTR, ip);
1796cbeb05cSjmmv 
1806cbeb05cSjmmv 	SCAN(SCNi8, i8);
1816cbeb05cSjmmv 	SCAN(SCNi16, i16);
1826cbeb05cSjmmv 	SCAN(SCNi32, i32);
1836cbeb05cSjmmv 	SCAN(SCNi64, i64);
1846cbeb05cSjmmv 	SCAN(SCNiLEAST8, il8);
1856cbeb05cSjmmv 	SCAN(SCNiLEAST16, il16);
1866cbeb05cSjmmv 	SCAN(SCNiLEAST32, il32);
1876cbeb05cSjmmv 	SCAN(SCNiLEAST64, il64);
1886cbeb05cSjmmv 	SCAN(SCNiFAST8, if8);
1896cbeb05cSjmmv 	SCAN(SCNiFAST16, if16);
1906cbeb05cSjmmv 	SCAN(SCNiFAST32, if32);
1916cbeb05cSjmmv 	SCAN(SCNiFAST64, if64);
1926cbeb05cSjmmv 	SCAN(SCNiMAX, im);
1936cbeb05cSjmmv 	SCAN(SCNiPTR, ip);
1946cbeb05cSjmmv 
1956cbeb05cSjmmv 	SCAN(SCNo8, ui8);
1966cbeb05cSjmmv 	SCAN(SCNo16, ui16);
1976cbeb05cSjmmv 	SCAN(SCNo32, ui32);
1986cbeb05cSjmmv 	SCAN(SCNo64, ui64);
1996cbeb05cSjmmv 	SCAN(SCNoLEAST8, uil8);
2006cbeb05cSjmmv 	SCAN(SCNoLEAST16, uil16);
2016cbeb05cSjmmv 	SCAN(SCNoLEAST32, uil32);
2026cbeb05cSjmmv 	SCAN(SCNoLEAST64, uil64);
2036cbeb05cSjmmv 	SCAN(SCNoFAST8, uif8);
2046cbeb05cSjmmv 	SCAN(SCNoFAST16, uif16);
2056cbeb05cSjmmv 	SCAN(SCNoFAST32, uif32);
2066cbeb05cSjmmv 	SCAN(SCNoFAST64, uif64);
2076cbeb05cSjmmv 	SCAN(SCNoMAX, uim);
2086cbeb05cSjmmv 	SCAN(SCNoPTR, uip);
2096cbeb05cSjmmv 
2106cbeb05cSjmmv 	SCAN(SCNu8, ui8);
2116cbeb05cSjmmv 	SCAN(SCNu16, ui16);
2126cbeb05cSjmmv 	SCAN(SCNu32, ui32);
2136cbeb05cSjmmv 	SCAN(SCNu64, ui64);
2146cbeb05cSjmmv 	SCAN(SCNuLEAST8, uil8);
2156cbeb05cSjmmv 	SCAN(SCNuLEAST16, uil16);
2166cbeb05cSjmmv 	SCAN(SCNuLEAST32, uil32);
2176cbeb05cSjmmv 	SCAN(SCNuLEAST64, uil64);
2186cbeb05cSjmmv 	SCAN(SCNuFAST8, uif8);
2196cbeb05cSjmmv 	SCAN(SCNuFAST16, uif16);
2206cbeb05cSjmmv 	SCAN(SCNuFAST32, uif32);
2216cbeb05cSjmmv 	SCAN(SCNuFAST64, uif64);
2226cbeb05cSjmmv 	SCAN(SCNuMAX, uim);
2236cbeb05cSjmmv 	SCAN(SCNuPTR, uip);
2246cbeb05cSjmmv 
2256cbeb05cSjmmv 	SCAN(SCNx8, ui8);
2266cbeb05cSjmmv 	SCAN(SCNx16, ui16);
2276cbeb05cSjmmv 	SCAN(SCNx32, ui32);
2286cbeb05cSjmmv 	SCAN(SCNx64, ui64);
2296cbeb05cSjmmv 	SCAN(SCNxLEAST8, uil8);
2306cbeb05cSjmmv 	SCAN(SCNxLEAST16, uil16);
2316cbeb05cSjmmv 	SCAN(SCNxLEAST32, uil32);
2326cbeb05cSjmmv 	SCAN(SCNxLEAST64, uil64);
2336cbeb05cSjmmv 	SCAN(SCNxFAST8, uif8);
2346cbeb05cSjmmv 	SCAN(SCNxFAST16, uif16);
2356cbeb05cSjmmv 	SCAN(SCNxFAST32, uif32);
2366cbeb05cSjmmv 	SCAN(SCNxFAST64, uif64);
2376cbeb05cSjmmv 	SCAN(SCNxMAX, uim);
2386cbeb05cSjmmv 	SCAN(SCNxPTR, uip);
2396cbeb05cSjmmv 
2406cbeb05cSjmmv #undef SCAN
2416cbeb05cSjmmv #undef PRINT
2426cbeb05cSjmmv }
2436cbeb05cSjmmv 
ATF_TP_ADD_TCS(tp)2446cbeb05cSjmmv ATF_TP_ADD_TCS(tp)
2456cbeb05cSjmmv {
2466cbeb05cSjmmv 
2472f0d3880Sjmmv 	ATF_TP_ADD_TC(tp, int_fmtio);
2486cbeb05cSjmmv 
2496cbeb05cSjmmv 	return atf_no_error();
2506cbeb05cSjmmv }
251