test: Split-up Mescc scaffold test.
[mes.git] / scaffold / tests / 60-math.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 <stdio.h>
22 #include <string.h>
23
24 #include "30-test.i"
25
26 int
27 add (int a, int b)
28 {
29   return a + b;
30 }
31
32 int
33 inc (int i)
34 {
35   return i + 1;
36 }
37
38 int
39 test ()
40 {
41   int i;
42
43   puts ("\n");
44   puts ("t: 0 < 0\n");
45   if (0 < 0) return 1;
46
47   puts ("t: 2 < 1\n");
48   if (2 < 1) return 1;
49
50   puts ("t: -1 < -2\n");
51   if (-1 < -2) return 1;
52
53   puts ("t: 0 < -1\n");
54   if (0 < -1) return 1;
55
56   puts ("t: 0 > 0\n");
57   if (0 > 0) return 1;
58
59   puts ("t: 1 > 2\n");
60   if (1 > 2) return 1;
61
62   puts ("t: -2 > -1\n");
63   if (-2 > -1) return 1;
64
65   puts ("t: -1 > 0\n");
66   if (-1 > 0) return 1;
67
68   puts ("t: 1 == inc (0)\n");
69   if (1 == inc (0)) goto ok0;
70   return 1;
71  ok0:
72
73   puts ("t: 0 < inc (0)\n");
74   if (0 < inc (0)) goto ok1;
75   return 1;
76  ok1:
77
78   puts ("t: inc (0) + 2 != 3\n");
79   if (inc (0) + inc (1) != 3) return 1;
80
81   puts ("t: 4/2=");
82   i = 4 / 2;
83   if (i!=2) return 1;
84   i += 48;
85   putchar (i);
86   puts ("\n");
87
88   puts ("t: 3*4=\n");
89   i = 3 * 4;
90   if (i!=12) return 1;
91
92   puts ("t: i /= 4\n");
93   i /= 4;
94   if (i!=3) return 1;
95
96   puts ("t: i *= 4\n");
97   i *= 4;
98   if (i!=12) return 1;
99
100   puts ("t: 1 << 3\n");
101   if (1 << 3 != 8) return 1 << 3;
102
103   puts ("t: 3 << 4\n");
104   if (3 << 4 != 48) return 3 << 4;
105
106   puts ("t: 48 >> 3\n");
107   if (48 >> 4 != 3) return 48 >> 4;
108
109   puts ("t: 10 >> 1\n");
110   if (10 >> 1 != 5) return 10 >> 1;
111
112   puts ("t: 1 | 4\n");
113   if ((1 | 4) != 5) return 1 | 4;
114
115   i = -3;
116   puts ("t: -i\n");
117   if (-i != 3) return 1;
118
119   puts ("t: -1 + 2\n");
120   if (-1 + 2 != 1) return 1;
121
122   puts ("t: 1 & 3\n");
123   if ((1 & 3) != 1) return 1;
124
125   puts ("t: 1 | 3\n");
126   if ((1 | 2) != 3) return 1;
127
128   puts ("t: ^ 1 \n");
129   if ((1 ^ 3) != 2) return 1;
130
131   puts ("t: 3 == 3\n");
132   if ((3 == 3) !=  1) return 1;
133
134   puts ("t: 3 != 3\n");
135   if ((3 != 3) !=  0) return 1;
136
137   puts ("t: 011 == 15\n");
138   if (011 != 9) return 1;
139
140   puts ("t: 0b11 == 3\n");
141   if (0b11 != 3) return 1;
142
143   puts ("t: 0x11 == 3\n");
144   if (0x11 != 17) return 1;
145
146   return 0;
147 }