diff --git a/src/libCom/test/epicsTimeZoneTest.c b/src/libCom/test/epicsTimeZoneTest.c index dd12b1acf..685295fc4 100644 --- a/src/libCom/test/epicsTimeZoneTest.c +++ b/src/libCom/test/epicsTimeZoneTest.c @@ -17,15 +17,9 @@ #endif static -void setTZ(const char *base, const char *dst, int offset) +void setTZ(const char *tz) { - char tz[20]; - if(offset!=0 || dst) - sprintf(tz, "%s%d%s", base, offset/3600, dst); - else - sprintf(tz, "%s", base); - testDiag("TZ=\"%s\"", tz); - + testDiag("TZ = \"%s\"", tz); epicsEnvSet("TZ", tz); tzset(); } @@ -86,32 +80,52 @@ void test_gmtime(time_t T, int sec, int min, int hour, MAIN(epicsTimeZoneTest) { - testPlan(80); + testPlan(160); /* 1445259616 * Mon Oct 19 09:00:16 2015 EDT * Mon Oct 19 08:00:16 2015 CDT + * Mon Oct 19 03:00:16 2015 HST (no dst) * Mon Oct 19 13:00:16 2015 UTC */ testDiag("POSIX 1445259616"); - setTZ("EST", "EDT", 5*3600); - test_localtime(1445259616ul, 16, 0, 9, 19, 9, 2015, 1, 291, 1); - setTZ("CST", "CDT", 6*3600); - test_localtime(1445259616ul, 16, 0, 8, 19, 9, 2015, 1, 291, 1); - setTZ("UTC", NULL, 0); + setTZ("EST5EDT"); + test_localtime(1445259616ul, 16, 0, 9, 19, 9, 2015, 1, 291, 1); + test_gmtime (1445259616ul, 16, 0, 13, 19, 9, 2015, 1, 291, 0); + setTZ("CST6CDT"); + test_localtime(1445259616ul, 16, 0, 8, 19, 9, 2015, 1, 291, 1); + test_gmtime (1445259616ul, 16, 0, 13, 19, 9, 2015, 1, 291, 0); +#if defined(__rtems__) + setTZ("HST10HST10"); +#else + setTZ("HST10"); +#endif + test_localtime(1445259616ul, 16, 0, 3, 19, 9, 2015, 1, 291, 0); + test_gmtime (1445259616ul, 16, 0, 13, 19, 9, 2015, 1, 291, 0); + setTZ("UTC0"); test_localtime(1445259616ul, 16, 0, 13, 19, 9, 2015, 1, 291, 0); - test_gmtime(1445259616ul, 16, 0, 13, 19, 9, 2015, 1, 291, 0); + test_gmtime (1445259616ul, 16, 0, 13, 19, 9, 2015, 1, 291, 0); /* 1421244931 * Wed Jan 14 09:15:31 2015 EST * Wed Jan 14 08:15:31 2015 CST + * Wed Jan 14 04:15:31 2015 HST * Wed Jan 14 14:15:31 2015 UTC */ testDiag("POSIX 1421244931"); - setTZ("EST", "EDT", 5*3600); - test_localtime(1421244931ul, 31, 15, 9, 14, 0, 2015, 3, 13, 0); - setTZ("CST", "CDT", 6*3600); - test_localtime(1421244931ul, 31, 15, 8, 14, 0, 2015, 3, 13, 0); - setTZ("UTC", NULL, 0); + setTZ("EST5EDT"); + test_localtime(1421244931ul, 31, 15, 9, 14, 0, 2015, 3, 13, 0); + test_gmtime (1421244931ul, 31, 15, 14, 14, 0, 2015, 3, 13, 0); + setTZ("CST6CDT"); + test_localtime(1421244931ul, 31, 15, 8, 14, 0, 2015, 3, 13, 0); + test_gmtime (1421244931ul, 31, 15, 14, 14, 0, 2015, 3, 13, 0); +#if defined(__rtems__) + setTZ("HST10HST10"); +#else + setTZ("HST10"); +#endif + test_localtime(1421244931ul, 31, 15, 4, 14, 0, 2015, 3, 13, 0); + test_gmtime (1421244931ul, 31, 15, 14, 14, 0, 2015, 3, 13, 0); + setTZ("UTC0"); test_localtime(1421244931ul, 31, 15, 14, 14, 0, 2015, 3, 13, 0); - test_gmtime(1421244931ul, 31, 15, 14, 14, 0, 2015, 3, 13, 0); + test_gmtime (1421244931ul, 31, 15, 14, 14, 0, 2015, 3, 13, 0); return testDone(); }