Signed-off-by: Vladimir Serbinenko <phco...@gmail.com> --- tests/date_unit_test.c | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-)
diff --git a/tests/date_unit_test.c b/tests/date_unit_test.c index 99774f199..a489fc3d8 100644 --- a/tests/date_unit_test.c +++ b/tests/date_unit_test.c @@ -25,12 +25,13 @@ #include <grub/test.h> static void -date_test (grub_int32_t v) +date_test (grub_int64_t v) { struct grub_datetime dt; time_t t = v; struct tm *g; int w; + grub_int64_t back = 0; g = gmtime (&t); @@ -38,28 +39,33 @@ date_test (grub_int32_t v) w = grub_get_weekday (&dt); - grub_test_assert (g->tm_sec == dt.second, "time %d bad second: %d vs %d", v, + grub_datetime2unixtime (&dt, &back); + + grub_test_assert (g->tm_sec == dt.second, "time %lld bad second: %d vs %d", (long long)v, g->tm_sec, dt.second); - grub_test_assert (g->tm_min == dt.minute, "time %d bad minute: %d vs %d", v, + grub_test_assert (g->tm_min == dt.minute, "time %lld bad minute: %d vs %d", (long long)v, g->tm_min, dt.minute); - grub_test_assert (g->tm_hour == dt.hour, "time %d bad hour: %d vs %d", v, + grub_test_assert (g->tm_hour == dt.hour, "time %lld bad hour: %d vs %d", (long long)v, g->tm_hour, dt.hour); - grub_test_assert (g->tm_mday == dt.day, "time %d bad day: %d vs %d", v, + grub_test_assert (g->tm_mday == dt.day, "time %lld bad day: %d vs %d", (long long)v, g->tm_mday, dt.day); - grub_test_assert (g->tm_mon + 1 == dt.month, "time %d bad month: %d vs %d", v, + grub_test_assert (g->tm_mon + 1 == dt.month, "time %lld bad month: %d vs %d",(long long)v, g->tm_mon + 1, dt.month); grub_test_assert (g->tm_year + 1900 == dt.year, - "time %d bad year: %d vs %d", v, + "time %lld bad year: %d vs %d", (long long)v, g->tm_year + 1900, dt.year); - grub_test_assert (g->tm_wday == w, "time %d bad week day: %d vs %d", v, + grub_test_assert (g->tm_wday == w, "time %lld bad week day: %d vs %d", (long long)v, g->tm_wday, w); + grub_test_assert (back == v, "time %lld bad back transform: %lld", (long long)v, + (long long)back); } static void date_test_iter (void) { - grub_int32_t tests[] = { -1, 0, +1, -2133156255, GRUB_INT32_MIN, + grub_int32_t tests[] = { -1, 0, +1, 978224552, -2133156255, -2110094321, GRUB_INT32_MIN, GRUB_INT32_MAX }; + grub_int64_t tests64[] = { 5774965200LL, 4108700725LL, -5029179792LL }; unsigned i; for (i = 0; i < ARRAY_SIZE (tests); i++) @@ -71,6 +77,17 @@ date_test_iter (void) date_test (x); date_test (-x); } + if (sizeof (time_t) > 4) + { + for (i = 0; i < ARRAY_SIZE (tests64); i++) + date_test (tests64[i]); + for (i = 0; i < 10000000; i++) + { + /* Ranges from 0064 to 6869. */ + grub_int64_t x = rand () + (rand () % 100 - 28) * (grub_uint64_t)GRUB_INT32_MAX; + date_test (x); + } + } } GRUB_UNIT_TEST ("date_unit_test", date_test_iter); -- 2.39.2 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel