Choose among AC_DEFUN_ONCE, AC_DEFUN in a way that aclocal understands.
[gnulib.git] / tests / test-verify.c
1 /* Test the "verify" module.
2
3    Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc.
4
5    This program is free software: you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
18 /* Written by Bruno Haible.  */
19
20 #include <config.h>
21
22 #include "verify.h"
23
24 #ifndef EXP_FAIL
25 # define EXP_FAIL 0
26 #endif
27
28 int x;
29 enum { a, b, c };
30
31 #if EXP_FAIL == 1
32 verify (x >= 0);                  /* should give ERROR: non-constant expression */
33 #endif
34 verify (c == 2);                  /* should be ok */
35 #if EXP_FAIL == 2
36 verify (1 + 1 == 3);              /* should give ERROR */
37 #endif
38 verify (1 == 1); verify (1 == 1); /* should be ok */
39
40 enum
41 {
42   item = verify_true (1 == 1) * 0 + 17 /* should be ok */
43 };
44
45 int function (int n)
46 {
47 #if EXP_FAIL == 3
48   verify (n >= 0);                  /* should give ERROR: non-constant expression */
49 #endif
50   verify (c == 2);                  /* should be ok */
51 #if EXP_FAIL == 4
52   verify (1 + 1 == 3);              /* should give ERROR */
53 #endif
54   verify (1 == 1); verify (1 == 1); /* should be ok */
55
56   if (n)
57     return ((void) verify_true (1 == 1), verify_true (1 == 1) + 7); /* should be ok */
58 #if EXP_FAIL == 5
59   return (verify_true (1 == 2), 5); /* should give ERROR */
60 #endif
61   return 0;
62 }
63
64 int
65 main (void)
66 {
67   return !(function (0) == 0 && function (1) == 8);
68 }