• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/timemachine/gettext-0.17/gettext-tools/gnulib-tests/
1/* Test of <stdint.h> substitute.
2   Copyright (C) 2006, 2007 Free Software Foundation, Inc.
3
4   This program is free software: you can redistribute it and/or modify
5   it under the terms of the GNU General Public License as published by
6   the Free Software Foundation; either version 3 of the License, or
7   (at your option) any later version.
8
9   This program is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12   GNU General Public License for more details.
13
14   You should have received a copy of the GNU General Public License
15   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
16
17/* Written by Bruno Haible <bruno@clisp.org>, 2006.  */
18
19#include <config.h>
20
21/* Whether to enable pedantic checks. */
22#define DO_PEDANTIC 0
23
24#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
25#include <stdint.h>
26
27#include "verify.h"
28#include "intprops.h"
29
30#if __GNUC__ >= 2 && DO_PEDANTIC
31# define verify_same_types(expr1,expr2)  \
32    extern void _verify_func(__LINE__) (__typeof__ (expr1) *); \
33    extern void _verify_func(__LINE__) (__typeof__ (expr2) *);
34# define _verify_func(line) _verify_func2(line)
35# define _verify_func2(line) verify_func_ ## line
36#else
37# define verify_same_types(expr1,expr2) extern void verify_func (int)
38#endif
39
40/* 7.18.1.1. Exact-width integer types */
41/* 7.18.2.1. Limits of exact-width integer types */
42
43int8_t a1[3] = { INT8_C (17), INT8_MIN, INT8_MAX };
44verify (TYPE_MINIMUM (int8_t) == INT8_MIN);
45verify (TYPE_MAXIMUM (int8_t) == INT8_MAX);
46verify_same_types (INT8_MIN, (int8_t) 0 + 0);
47verify_same_types (INT8_MAX, (int8_t) 0 + 0);
48
49int16_t a2[3] = { INT16_C (17), INT16_MIN, INT16_MAX };
50verify (TYPE_MINIMUM (int16_t) == INT16_MIN);
51verify (TYPE_MAXIMUM (int16_t) == INT16_MAX);
52verify_same_types (INT16_MIN, (int16_t) 0 + 0);
53verify_same_types (INT16_MAX, (int16_t) 0 + 0);
54
55int32_t a3[3] = { INT32_C (17), INT32_MIN, INT32_MAX };
56verify (TYPE_MINIMUM (int32_t) == INT32_MIN);
57verify (TYPE_MAXIMUM (int32_t) == INT32_MAX);
58verify_same_types (INT32_MIN, (int32_t) 0 + 0);
59verify_same_types (INT32_MAX, (int32_t) 0 + 0);
60
61#ifdef INT64_MAX
62int64_t a4[3] = { INT64_C (17), INT64_MIN, INT64_MAX };
63verify (TYPE_MINIMUM (int64_t) == INT64_MIN);
64verify (TYPE_MAXIMUM (int64_t) == INT64_MAX);
65verify_same_types (INT64_MIN, (int64_t) 0 + 0);
66verify_same_types (INT64_MAX, (int64_t) 0 + 0);
67#endif
68
69uint8_t b1[2] = { UINT8_C (17), UINT8_MAX };
70verify (TYPE_MAXIMUM (uint8_t) == UINT8_MAX);
71verify_same_types (UINT8_MAX, (uint8_t) 0 + 0);
72
73uint16_t b2[2] = { UINT16_C (17), UINT16_MAX };
74verify (TYPE_MAXIMUM (uint16_t) == UINT16_MAX);
75verify_same_types (UINT16_MAX, (uint16_t) 0 + 0);
76
77uint32_t b3[2] = { UINT32_C (17), UINT32_MAX };
78verify (TYPE_MAXIMUM (uint32_t) == UINT32_MAX);
79verify_same_types (UINT32_MAX, (uint32_t) 0 + 0);
80
81#ifdef UINT64_MAX
82uint64_t b4[2] = { UINT64_C (17), UINT64_MAX };
83verify (TYPE_MAXIMUM (uint64_t) == UINT64_MAX);
84verify_same_types (UINT64_MAX, (uint64_t) 0 + 0);
85#endif
86
87#if INT8_MIN && INT8_MAX && INT16_MIN && INT16_MAX && INT32_MIN && INT32_MAX
88/* ok */
89#else
90err or;
91#endif
92
93#if UINT8_MAX && UINT16_MAX && UINT32_MAX
94/* ok */
95#else
96err or;
97#endif
98
99/* 7.18.1.2. Minimum-width integer types */
100/* 7.18.2.2. Limits of minimum-width integer types */
101
102int_least8_t c1[3] = { 17, INT_LEAST8_MIN, INT_LEAST8_MAX };
103verify (TYPE_MINIMUM (int_least8_t) == INT_LEAST8_MIN);
104verify (TYPE_MAXIMUM (int_least8_t) == INT_LEAST8_MAX);
105verify_same_types (INT_LEAST8_MIN, (int_least8_t) 0 + 0);
106verify_same_types (INT_LEAST8_MAX, (int_least8_t) 0 + 0);
107
108int_least16_t c2[3] = { 17, INT_LEAST16_MIN, INT_LEAST16_MAX };
109verify (TYPE_MINIMUM (int_least16_t) == INT_LEAST16_MIN);
110verify (TYPE_MAXIMUM (int_least16_t) == INT_LEAST16_MAX);
111verify_same_types (INT_LEAST16_MIN, (int_least16_t) 0 + 0);
112verify_same_types (INT_LEAST16_MAX, (int_least16_t) 0 + 0);
113
114int_least32_t c3[3] = { 17, INT_LEAST32_MIN, INT_LEAST32_MAX };
115verify (TYPE_MINIMUM (int_least32_t) == INT_LEAST32_MIN);
116verify (TYPE_MAXIMUM (int_least32_t) == INT_LEAST32_MAX);
117verify_same_types (INT_LEAST32_MIN, (int_least32_t) 0 + 0);
118verify_same_types (INT_LEAST32_MAX, (int_least32_t) 0 + 0);
119
120#ifdef INT_LEAST64_MAX
121int_least64_t c4[3] = { 17, INT_LEAST64_MIN, INT_LEAST64_MAX };
122verify (TYPE_MINIMUM (int_least64_t) == INT_LEAST64_MIN);
123verify (TYPE_MAXIMUM (int_least64_t) == INT_LEAST64_MAX);
124verify_same_types (INT_LEAST64_MIN, (int_least64_t) 0 + 0);
125verify_same_types (INT_LEAST64_MAX, (int_least64_t) 0 + 0);
126#endif
127
128uint_least8_t d1[2] = { 17, UINT_LEAST8_MAX };
129verify (TYPE_MAXIMUM (uint_least8_t) == UINT_LEAST8_MAX);
130verify_same_types (UINT_LEAST8_MAX, (uint_least8_t) 0 + 0);
131
132uint_least16_t d2[2] = { 17, UINT_LEAST16_MAX };
133verify (TYPE_MAXIMUM (uint_least16_t) == UINT_LEAST16_MAX);
134verify_same_types (UINT_LEAST16_MAX, (uint_least16_t) 0 + 0);
135
136uint_least32_t d3[2] = { 17, UINT_LEAST32_MAX };
137verify (TYPE_MAXIMUM (uint_least32_t) == UINT_LEAST32_MAX);
138verify_same_types (UINT_LEAST32_MAX, (uint_least32_t) 0 + 0);
139
140#ifdef UINT_LEAST64_MAX
141uint_least64_t d4[2] = { 17, UINT_LEAST64_MAX };
142verify (TYPE_MAXIMUM (uint_least64_t) == UINT_LEAST64_MAX);
143verify_same_types (UINT_LEAST64_MAX, (uint_least64_t) 0 + 0);
144#endif
145
146#if INT_LEAST8_MIN && INT_LEAST8_MAX && INT_LEAST16_MIN && INT_LEAST16_MAX && INT_LEAST32_MIN && INT_LEAST32_MAX
147/* ok */
148#else
149err or;
150#endif
151
152#if UINT_LEAST8_MAX && UINT_LEAST16_MAX && UINT_LEAST32_MAX
153/* ok */
154#else
155err or;
156#endif
157
158/* 7.18.1.3. Fastest minimum-width integer types */
159/* 7.18.2.3. Limits of fastest minimum-width integer types */
160
161int_fast8_t e1[3] = { 17, INT_FAST8_MIN, INT_FAST8_MAX };
162verify (TYPE_MINIMUM (int_fast8_t) == INT_FAST8_MIN);
163verify (TYPE_MAXIMUM (int_fast8_t) == INT_FAST8_MAX);
164verify_same_types (INT_FAST8_MIN, (int_fast8_t) 0 + 0);
165verify_same_types (INT_FAST8_MAX, (int_fast8_t) 0 + 0);
166
167int_fast16_t e2[3] = { 17, INT_FAST16_MIN, INT_FAST16_MAX };
168verify (TYPE_MINIMUM (int_fast16_t) == INT_FAST16_MIN);
169verify (TYPE_MAXIMUM (int_fast16_t) == INT_FAST16_MAX);
170verify_same_types (INT_FAST16_MIN, (int_fast16_t) 0 + 0);
171verify_same_types (INT_FAST16_MAX, (int_fast16_t) 0 + 0);
172
173int_fast32_t e3[3] = { 17, INT_FAST32_MIN, INT_FAST32_MAX };
174verify (TYPE_MINIMUM (int_fast32_t) == INT_FAST32_MIN);
175verify (TYPE_MAXIMUM (int_fast32_t) == INT_FAST32_MAX);
176verify_same_types (INT_FAST32_MIN, (int_fast32_t) 0 + 0);
177verify_same_types (INT_FAST32_MAX, (int_fast32_t) 0 + 0);
178
179#ifdef INT_FAST64_MAX
180int_fast64_t e4[3] = { 17, INT_FAST64_MIN, INT_FAST64_MAX };
181verify (TYPE_MINIMUM (int_fast64_t) == INT_FAST64_MIN);
182verify (TYPE_MAXIMUM (int_fast64_t) == INT_FAST64_MAX);
183verify_same_types (INT_FAST64_MIN, (int_fast64_t) 0 + 0);
184verify_same_types (INT_FAST64_MAX, (int_fast64_t) 0 + 0);
185#endif
186
187uint_fast8_t f1[2] = { 17, UINT_FAST8_MAX };
188verify (TYPE_MAXIMUM (uint_fast8_t) == UINT_FAST8_MAX);
189verify_same_types (UINT_FAST8_MAX, (uint_fast8_t) 0 + 0);
190
191uint_fast16_t f2[2] = { 17, UINT_FAST16_MAX };
192verify (TYPE_MAXIMUM (uint_fast16_t) == UINT_FAST16_MAX);
193verify_same_types (UINT_FAST16_MAX, (uint_fast16_t) 0 + 0);
194
195uint_fast32_t f3[2] = { 17, UINT_FAST32_MAX };
196verify (TYPE_MAXIMUM (uint_fast32_t) == UINT_FAST32_MAX);
197verify_same_types (UINT_FAST32_MAX, (uint_fast32_t) 0 + 0);
198
199#ifdef UINT_FAST64_MAX
200uint_fast64_t f4[2] = { 17, UINT_FAST64_MAX };
201verify (TYPE_MAXIMUM (uint_fast64_t) == UINT_FAST64_MAX);
202verify_same_types (UINT_FAST64_MAX, (uint_fast64_t) 0 + 0);
203#endif
204
205#if INT_FAST8_MIN && INT_FAST8_MAX && INT_FAST16_MIN && INT_FAST16_MAX && INT_FAST32_MIN && INT_FAST32_MAX
206/* ok */
207#else
208err or;
209#endif
210
211#if UINT_FAST8_MAX && UINT_FAST16_MAX && UINT_FAST32_MAX
212/* ok */
213#else
214err or;
215#endif
216
217/* 7.18.1.4. Integer types capable of holding object pointers */
218/* 7.18.2.4. Limits of integer types capable of holding object pointers */
219
220intptr_t g[3] = { 17, INTPTR_MIN, INTPTR_MAX };
221verify (TYPE_MINIMUM (intptr_t) == INTPTR_MIN);
222verify (TYPE_MAXIMUM (intptr_t) == INTPTR_MAX);
223verify_same_types (INTPTR_MIN, (intptr_t) 0 + 0);
224verify_same_types (INTPTR_MAX, (intptr_t) 0 + 0);
225
226uintptr_t h[2] = { 17, UINTPTR_MAX };
227verify (TYPE_MAXIMUM (uintptr_t) == UINTPTR_MAX);
228verify_same_types (UINTPTR_MAX, (uintptr_t) 0 + 0);
229
230#if INTPTR_MIN && INTPTR_MAX && UINTPTR_MAX
231/* ok */
232#else
233err or;
234#endif
235
236/* 7.18.1.5. Greatest-width integer types */
237/* 7.18.2.5. Limits of greatest-width integer types */
238
239intmax_t i[3] = { INTMAX_C (17), INTMAX_MIN, INTMAX_MAX };
240verify (TYPE_MINIMUM (intmax_t) == INTMAX_MIN);
241verify (TYPE_MAXIMUM (intmax_t) == INTMAX_MAX);
242verify_same_types (INTMAX_MIN, (intmax_t) 0 + 0);
243verify_same_types (INTMAX_MAX, (intmax_t) 0 + 0);
244
245uintmax_t j[2] = { UINTMAX_C (17), UINTMAX_MAX };
246verify (TYPE_MAXIMUM (uintmax_t) == UINTMAX_MAX);
247verify_same_types (UINTMAX_MAX, (uintmax_t) 0 + 0);
248
249#if INTMAX_MIN && INTMAX_MAX && UINTMAX_MAX
250/* ok */
251#else
252err or;
253#endif
254
255/* 7.18.3. Limits of other integer types */
256
257#include <stddef.h>
258
259verify (TYPE_MINIMUM (ptrdiff_t) == PTRDIFF_MIN);
260verify (TYPE_MAXIMUM (ptrdiff_t) == PTRDIFF_MAX);
261verify_same_types (PTRDIFF_MIN, (ptrdiff_t) 0 + 0);
262verify_same_types (PTRDIFF_MAX, (ptrdiff_t) 0 + 0);
263
264#if PTRDIFF_MIN && PTRDIFF_MAX
265/* ok */
266#else
267err or;
268#endif
269
270#include <signal.h>
271
272verify (TYPE_MINIMUM (sig_atomic_t) == SIG_ATOMIC_MIN);
273verify (TYPE_MAXIMUM (sig_atomic_t) == SIG_ATOMIC_MAX);
274verify_same_types (SIG_ATOMIC_MIN, (sig_atomic_t) 0 + 0);
275verify_same_types (SIG_ATOMIC_MAX, (sig_atomic_t) 0 + 0);
276
277#if SIG_ATOMIC_MIN != 17 && SIG_ATOMIC_MAX
278/* ok */
279#else
280err or;
281#endif
282
283verify (TYPE_MAXIMUM (size_t) == SIZE_MAX);
284verify_same_types (SIZE_MAX, (size_t) 0 + 0);
285
286#if SIZE_MAX
287/* ok */
288#else
289err or;
290#endif
291
292#if HAVE_WCHAR_T
293verify (TYPE_MINIMUM (wchar_t) == WCHAR_MIN);
294verify (TYPE_MAXIMUM (wchar_t) == WCHAR_MAX);
295verify_same_types (WCHAR_MIN, (wchar_t) 0 + 0);
296verify_same_types (WCHAR_MAX, (wchar_t) 0 + 0);
297
298# if WCHAR_MIN != 17 && WCHAR_MAX
299/* ok */
300# else
301err or;
302# endif
303#endif
304
305#if HAVE_WINT_T
306# include <wchar.h>
307
308verify (TYPE_MINIMUM (wint_t) == WINT_MIN);
309verify (TYPE_MAXIMUM (wint_t) == WINT_MAX);
310verify_same_types (WINT_MIN, (wint_t) 0 + 0);
311verify_same_types (WINT_MAX, (wint_t) 0 + 0);
312
313# if WINT_MIN != 17 && WINT_MAX
314/* ok */
315# else
316err or;
317# endif
318#endif
319
320/* 7.18.4. Macros for integer constants */
321
322verify (INT8_C (17) == 17);
323verify_same_types (INT8_C (17), (int_least8_t)0 + 0);
324verify (UINT8_C (17) == 17);
325verify_same_types (UINT8_C (17), (uint_least8_t)0 + 0);
326
327verify (INT16_C (17) == 17);
328verify_same_types (INT16_C (17), (int_least16_t)0 + 0);
329verify (UINT16_C (17) == 17);
330verify_same_types (UINT16_C (17), (uint_least16_t)0 + 0);
331
332verify (INT32_C (17) == 17);
333verify_same_types (INT32_C (17), (int_least32_t)0 + 0);
334verify (UINT32_C (17) == 17);
335verify_same_types (UINT32_C (17), (uint_least32_t)0 + 0);
336
337#ifdef INT64_C
338verify (INT64_C (17) == 17);
339verify_same_types (INT64_C (17), (int_least64_t)0 + 0);
340#endif
341#ifdef UINT64_C
342verify (UINT64_C (17) == 17);
343verify_same_types (UINT64_C (17), (uint_least64_t)0 + 0);
344#endif
345
346verify (INTMAX_C (17) == 17);
347verify_same_types (INTMAX_C (17), (intmax_t)0 + 0);
348verify (UINTMAX_C (17) == 17);
349verify_same_types (UINTMAX_C (17), (uintmax_t)0 + 0);
350
351
352int
353main ()
354{
355  return 0;
356}
357