]> git.sur5r.net Git - cc65/commitdiff
Division test program by Greg King
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 25 Oct 2002 20:48:35 +0000 (20:48 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 25 Oct 2002 20:48:35 +0000 (20:48 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@1471 b7a2c559-68d2-44c3-8de9-860c34a00d81

testcode/lib/div-test.c [new file with mode: 0644]

diff --git a/testcode/lib/div-test.c b/testcode/lib/div-test.c
new file mode 100644 (file)
index 0000000..15018e6
--- /dev/null
@@ -0,0 +1,40 @@
+/* div-test.c
+**
+** This program tests the division and modulo operators
+** and the div() library function.
+**
+** 2002-10-24, Greg King
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+
+static bool test(int dividend, int divisor) {
+       div_t result;
+
+       (long)result = (long)div(dividend, divisor);
+       printf("%+d/%+d= %+d, %+d%%%+d= %+d, div()= %+d, %+d\n",
+               dividend, divisor, dividend / divisor,
+               dividend, divisor, dividend % divisor,
+               result.quot, result.rem);
+       return result.quot * divisor + result.rem != dividend;
+       }
+
+int main(void) {
+       bool t;
+
+       printf("\nTest of division and modulus operations:\n\n");
+       t =     test(+40, +3) ||
+               test(+40, -3) ||
+               test(-40, +3) ||
+               test(-40, -3);
+       if (t)
+               printf("\nThe div() function made a wrong result!\n");
+#ifdef __ATARI__
+       /* Atari DOS 2 clears the screen after program-termination, so wait. */
+       printf("\nTap a key, to exit. ");
+       getchar();
+#endif
+       return (int)t;
+       }