From: cuz Date: Fri, 25 Oct 2002 20:48:35 +0000 (+0000) Subject: Division test program by Greg King X-Git-Tag: V2.12.0~2161 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=047ecd19556caf85b839f9d7f1d55bc2964d2ad8;p=cc65 Division test program by Greg King git-svn-id: svn://svn.cc65.org/cc65/trunk@1471 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/testcode/lib/div-test.c b/testcode/lib/div-test.c new file mode 100644 index 000000000..15018e653 --- /dev/null +++ b/testcode/lib/div-test.c @@ -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 +#include +#include + +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; + }