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=ff0dcae1d9a5aa5ae1b80164c49df264be1576b6;hp=d4cbe18eb03f5a1094cde4bacb619b9773901f11;hpb=97fb55e07cac602cbca57ce8005de5c8a67a73cc;p=pspp diff --git a/tests/math/chart-get-scale-test.c b/tests/math/chart-get-scale-test.c index d4cbe18eb0..ef7b6b0a91 100644 --- a/tests/math/chart-get-scale-test.c +++ b/tests/math/chart-get-scale-test.c @@ -23,7 +23,6 @@ #include "libpspp/compiler.h" -#include "math/decimal.h" #include "math/chart-geometry.h" #include #include @@ -31,14 +30,14 @@ #if 0 static void -dump_scale (const struct decimal *low, const struct decimal *interval, int n_ticks) +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 @@ -48,53 +47,55 @@ 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); } + else + assert (n_ticks > 4); - { - struct decimal i = interval; - - decimal_int_multiply (&i, n_ticks - 1); - - decimal_add (&i, &lower); + assert (n_ticks <= 10); - /* i now contains the upper bound minus one tick */ - assert (decimal_to_double (&i) < high); - - decimal_add (&i, &interval); +#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 - assert (decimal_to_double (&i) >= high); + 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 +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; }