X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Fmath%2Fchart-get-scale-test.c;h=6f2ca711d0bea538fabf2f920db08a63215fc9fb;hb=094399e6d125a602ae195530306b95302fce4713;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..6f2ca711d0 100644 --- a/tests/math/chart-get-scale-test.c +++ b/tests/math/chart-get-scale-test.c @@ -21,73 +21,78 @@ #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) +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);