core: Fixes for int-max, int-min.
[mes.git] / scaffold / tests / 60-math.c
index 637f4b24afb1c71ea48e510a166b3cec68700efa..d3d17a5c026e5ed871225d4ef364205b899b6764 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-comment-start: "//";comment-end:""-*-
  * Mes --- Maxwell Equations of Software
- * Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
+ * Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
  *
  * This file is part of Mes.
  *
@@ -18,6 +18,7 @@
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <limits.h>
 #include <stdio.h>
 #include <string.h>
 
@@ -45,57 +46,57 @@ test ()
   if (0 < 0) return 1;
 
   puts ("t: 2 < 1\n");
-  if (2 < 1) return 1;
+  if (2 < 1) return 2;
 
   puts ("t: -1 < -2\n");
-  if (-1 < -2) return 1;
+  if (-1 < -2) return 3;
 
   puts ("t: 0 < -1\n");
-  if (0 < -1) return 1;
+  if (0 < -1) return 4;
 
   puts ("t: 0 > 0\n");
-  if (0 > 0) return 1;
+  if (0 > 0) return 5;
 
   puts ("t: 1 > 2\n");
-  if (1 > 2) return 1;
+  if (1 > 2) return 6;
 
   puts ("t: -2 > -1\n");
-  if (-2 > -1) return 1;
+  if (-2 > -1) return 7;
 
   puts ("t: -1 > 0\n");
-  if (-1 > 0) return 1;
+  if (-1 > 0) return 9;
 
   puts ("t: 1 == inc (0)\n");
   if (1 == inc (0)) goto ok0;
-  return 1;
+  return 10;
  ok0:
 
   puts ("t: 0 < inc (0)\n");
   if (0 < inc (0)) goto ok1;
-  return 1;
+  return 11;
  ok1:
 
   puts ("t: inc (0) + 2 != 3\n");
-  if (inc (0) + inc (1) != 3) return 1;
+  if (inc (0) + inc (1) != 3) return 12;
 
   puts ("t: 4/2=");
   i = 4 / 2;
-  if (i!=2) return 1;
+  if (i!=2) return 13;
   i += 48;
   putchar (i);
   puts ("\n");
 
   puts ("t: 3*4=\n");
   i = 3 * 4;
-  if (i!=12) return 1;
+  if (i!=12) return 14;
 
   puts ("t: i /= 4\n");
   i /= 4;
-  if (i!=3) return 1;
+  if (i!=3) return 15;
 
   puts ("t: i *= 4\n");
   i *= 4;
-  if (i!=12) return 1;
+  if (i!=12) return 16;
 
   puts ("t: 1 << 3\n");
   if (1 << 3 != 8) return 1 << 3;
@@ -114,34 +115,62 @@ test ()
 
   i = -3;
   puts ("t: -i\n");
-  if (-i != 3) return 1;
+  if (-i != 3) return 22;
 
   puts ("t: -1 + 2\n");
-  if (-1 + 2 != 1) return 1;
+  if (-1 + 2 != 1) return 23;
 
   puts ("t: 1 & 3\n");
-  if ((1 & 3) != 1) return 1;
+  if ((1 & 3) != 1) return 24;
+
+  puts ("t: ~0\n");
+  if (~0 != -1) return 25;
 
   puts ("t: 1 | 3\n");
-  if ((1 | 2) != 3) return 1;
+  if ((1 | 2) != 3) return 26;
 
   puts ("t: ^ 1 \n");
-  if ((1 ^ 3) != 2) return 1;
+  if ((1 ^ 3) != 2) return 27;
 
   puts ("t: 3 == 3\n");
-  if ((3 == 3) !=  1) return 1;
+  if ((3 == 3) !=  1) return 28;
 
   puts ("t: 3 != 3\n");
-  if ((3 != 3) !=  0) return 1;
+  if ((3 != 3) !=  0) return 29;
 
   puts ("t: 011 == 15\n");
-  if (011 != 9) return 1;
+  if (011 != 9) return 30;
 
   puts ("t: 0b11 == 3\n");
-  if (0b11 != 3) return 1;
+  if (0b11 != 3) return 31;
 
   puts ("t: 0x11 == 3\n");
-  if (0x11 != 17) return 1;
+  if (0x11 != 17) return 32;
+
+  puts ("t: i = INT_MAX\n");
+  i = INT_MAX;
+
+  if (strcmp ("2147483647", itoa (i)))
+    return 33;
+
+  puts ("t: i = 2147483646\n");
+  i = 2147483646;
+
+  puts ("t: i++\n");
+  i++;
+
+  puts ("t: i = INT_MIN\n");
+  i = INT_MIN;
+
+  if (strcmp ("-2147483648", itoa (i)))
+    return 34;
+
+  puts ("t: i = -2147483647\n");
+  i = -2147483647;
+
+  puts ("t: i--\n");
+  i--;
+
 
   return 0;
 }