5b854da855b3100243c133416a370ded768a455a
[mes.git] / scaffold / tests / 32-compare.c
1 /* -*-comment-start: "//";comment-end:""-*-
2  * Mes --- Maxwell Equations of Software
3  * Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
4  *
5  * This file is part of Mes.
6  *
7  * Mes is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or (at
10  * your option) any later version.
11  *
12  * Mes is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #include "30-test.i"
22 #include <stdio.h>
23
24 int isid(char c) {
25   return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_';
26 }
27
28 int
29 test ()
30 {
31   int f = 0;
32   int t = 1;
33   int one = t;
34
35   puts ("\n");
36   puts ("t: if (f)\n");
37   if (f) return 1;
38
39   puts ("t: if (one != 1)\n");
40   if (one != 1) return 1;
41
42   puts ("t: if (1 != one)\n");
43   if (1 != one) return 1;
44
45   puts ("t: if (one > 1)\n");
46   if (one > 1) return 1;
47
48   puts ("t: if (one < 0)\n");
49   if (one < 0) return 1;
50
51   puts ("t: if (one <= 0)\n");
52   if (one <= 0) return 1;
53
54   puts ("t: if (one >= 2)\n");
55   if (one >= 2) return 1;
56
57   puts ("t: if (!1)\n");
58   if (!1) return 1;
59
60   puts ("t: if (one == 0)\n");
61   if (one == 0) return 1;
62
63   puts ("t: if (f != 0)\n");
64   if (one != 1) return 1;
65
66   puts ("t: if (1)\n");
67   if (1) goto ok0;
68   return 1;
69  ok0:
70
71   puts ("t: if (0); return 1; else;\n");
72   if (0) return 1; else goto ok1;
73  ok1:
74
75   puts ("t: if (t)\n");
76   if (t) goto ok2;
77   return 1;
78  ok2:
79
80   puts ("t: if (one > 0)\n");
81   if (one > 0) goto ok3;
82   return 1;
83  ok3:
84
85   puts ("t: if (one < 2)\n");
86   if (one < 2) goto ok4;
87   return 1;
88  ok4:
89
90   puts ("t: if (one >= 0)\n");
91   if (one >= 0) goto ok5;
92   return 1;
93  ok5:
94
95   puts ("t: if (one >= 1)\n");
96   if (one >= 0) goto ok6;
97   return 1;
98  ok6:
99
100   puts ("t: if (one <= 2)\n");
101   if (one <= 2) goto ok7;
102   return 1;
103  ok7:
104
105   puts ("t: if (one <= 1)\n");
106   if (one <= 1) goto ok8;
107   return 1;
108  ok8:
109
110   puts ("t: if (!0)\n");
111   if (!0) goto ok9;
112   return 1;
113  ok9:
114
115   puts ("t: if (one == 1)\n");
116   if (one == 1) goto ok10;
117   return 1;
118  ok10:
119
120   puts ("t: if (one != 0)\n");
121   if (one != 0) goto ok11;
122   return 1;
123  ok11:
124   ;
125
126   int m1 = -1;
127   int i;
128
129   puts ("t: i = one > 0\n");
130   i = one > 0;
131   if (!i) return 1;
132
133   puts ("t: i = one >= 1\n");
134   i = one >= 1;
135   if (!i) return 2;
136
137   puts ("t: i = one < 2\n");
138   i = one < 2;
139   if (!i) return 3;
140
141   puts ("t: i = one <= 1\n");
142   i = one <= 1;
143   if (!i) return 4;
144
145
146   puts ("t: i = 0 > one\n");
147   i = 0 > one;
148   if (i) return 5;
149
150   puts ("t: i = 0 >= one\n");
151   i = 0 >= one;
152   if (i) return 6;
153
154   puts ("t: i = 1 < one \n");
155   i = 1 < one;
156   if (i) return 7;
157
158   puts ("t: i = 2 <= one\n");
159   i = 2 <= one;
160   if (i) return 8;
161
162
163   puts ("t: i = m1 > -2\n");
164   i = m1 > -2;
165   if (!i) return 9;
166
167   puts ("t: i = m1 >= -1\n");
168   i = m1 >= -1;
169   if (!i) return 10;
170
171   puts ("t: i = m1 < 0\n");
172   i = m1 < 0;
173   if (!i) return 11;
174
175   puts ("t: i = m1 <= -1\n");
176   i = m1 <= -1;
177   if (!i) return 12;
178
179
180   puts ("t: i = -1 > m1\n");
181   i = -1 > m1;
182   if (i) return 13;
183
184   puts ("t: i = -2 >= m1\n");
185   i = -2 >= m1;
186   if (i) return 14;
187
188   puts ("t: i = -1 < m1 \n");
189   i = -1 < m1;
190   if (i) return 15;
191
192   puts ("t: i = -2 <= m1\n");
193   i = 0 <= m1;
194   if (i) return 16;
195
196
197   puts ("t: isid (0)\n");
198   if (isid (0)) return 17;
199
200   puts ("t: isid (6)\n");
201
202   if (isid (6)) return 18;
203
204   puts ("t: isid (a)\n");
205   if (isid ('a') != 1) return 19;
206
207   puts ("t: isid ( )\n");
208   if (isid (' ')) return 20;
209
210   return 0;
211 }