diff --git a/src/libCom/osi/os/posix/epicsMath.h b/src/libCom/osi/os/posix/epicsMath.h index 4ed0fdc51..4e558676c 100644 --- a/src/libCom/osi/os/posix/epicsMath.h +++ b/src/libCom/osi/os/posix/epicsMath.h @@ -19,7 +19,7 @@ extern "C" { #ifdef isfinite # undef finite -# define finite(x) isfinite(x) +# define finite(x) isfinite((double)(x)) #endif epicsShareExtern float epicsNAN; diff --git a/src/libCom/test/Makefile b/src/libCom/test/Makefile index f0359420d..1a2b256fb 100755 --- a/src/libCom/test/Makefile +++ b/src/libCom/test/Makefile @@ -98,6 +98,7 @@ TESTS += epicsTimeTest TESTPROD_HOST += epicsTimeZoneTest epicsTimeZoneTest_SRCS += epicsTimeZoneTest.c +rtemsTestHarness_SRCS += epicsTimeZoneTest.c TESTS += epicsTimeZoneTest TESTPROD_HOST += epicsThreadTest diff --git a/src/libCom/test/epicsRunLibComTests.c b/src/libCom/test/epicsRunLibComTests.c index 5022fef69..3a39c7713 100644 --- a/src/libCom/test/epicsRunLibComTests.c +++ b/src/libCom/test/epicsRunLibComTests.c @@ -47,6 +47,9 @@ int epicsTimeTest(void); int epicsTypesTest(void); int epicsInlineTest(void); int macDefExpandTest(void); +#ifdef __rtems__ +int epicsTimeZoneTest(void); +#endif int macLibTest(void); int ringBytesTest(void); int ringPointerTest(void); @@ -97,6 +100,11 @@ void epicsRunLibComTests(void) runTest(epicsTypesTest); runTest(epicsInlineTest); runTest(macDefExpandTest); + +#ifdef __rtems__ + runTest(epicsTimeZoneTest); +#endif + runTest(macLibTest); runTest(ringBytesTest); runTest(ringPointerTest); 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(); }