X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Fmath%2Fchart-get-scale-test.c;h=ef7b6b0a91d427e63641d00ac295ce3249bc04ce;hb=c972eebe3286130ba9af8b0520a35a42a8d5ef75;hp=11a572deeb8a779d3c965cd12c14930bd961de1b;hpb=aad0ae4913ecd01ccc954f8828623ad5da35cd1b;p=pspp diff --git a/tests/math/chart-get-scale-test.c b/tests/math/chart-get-scale-test.c index 11a572deeb..ef7b6b0a91 100644 --- a/tests/math/chart-get-scale-test.c +++ b/tests/math/chart-get-scale-test.c @@ -21,76 +21,81 @@ #include #include -#include "math/decimal.h" +#include "libpspp/compiler.h" + +#include "math/chart-geometry.h" #include #include #include -void -dump_scale (const struct decimal *low, const struct decimal *interval, int n_ticks) +#if 0 +static void +dump_scale (const double low, const double interval, int n_ticks) { int i; - struct decimal tick = *low; + double tick = low; for (i = 0; i <= n_ticks; ++i) { - printf ("Tick %d: %s (%g)\n", i, decimal_to_string (&tick), decimal_to_double (&tick)); - decimal_add (&tick, interval); + printf ("Tick %d: %g\n", i, tick); + tick += interval; } } +#endif -void +static void test_range (double low, double high) { int n_ticks = 0; - struct decimal interval; - struct decimal lower; + double interval; + double lower; - chart_get_scale (high, low, &lower, &interval, &n_ticks); - assert (n_ticks > 0); - assert (n_ticks < 12); - - // dump_scale (&lower, &interval, n_ticks); - - assert (decimal_to_double (&lower) <= low); - - { - struct decimal l = lower; - decimal_add (&l, &interval); - assert (decimal_to_double (&l) > low); + if ((high - low) < 10 * DBL_MIN){ + assert (n_ticks == 0); + assert (lower == low); + assert (interval <= 10 * DBL_MIN); } - - { - struct decimal i = interval; - - decimal_int_multiply (&i, n_ticks - 1); - - decimal_add (&i, &lower); - - /* i now contains the upper bound minus one tick */ - assert (decimal_to_double (&i) < high); - - decimal_add (&i, &interval); - - assert (decimal_to_double (&i) >= high); + else + assert (n_ticks > 4); + + assert (n_ticks <= 10); + +#if 0 + printf("%s: high: %lg, low %lg, interval: %lg, nticks: %d\n", + __FUNCTION__, high, low, interval, n_ticks); + dump_scale (lower, interval, n_ticks); +#endif + + if ((high - low) > 10 * DBL_MIN) { + assert (lower <= low); + assert (lower + interval > low); + assert (lower + n_ticks * interval < high); + assert (lower + (n_ticks + 1) * interval >= high); } - } -int -main (int argc, char **argv) +int +main (int argc UNUSED, char **argv UNUSED) { + test_range (0, 0); + test_range (5, 5); + test_range (-5, -5); + test_range (0, 7); test_range (0.2, 11); test_range (-0.2, 11); test_range (-10, 0.2); test_range (-10, -0.2); + test_range (-10000, 10003); + test_range (50042,50053); + test_range (-50010, -49999); + test_range (0.000100002, 0.000100010); - test_range (102, 50030); - test_range (0.00102, 0.0050030); + test_range (102, 50030); + test_range (0.00102, 0.0050030); return 0; }