diff --git a/modules/database/test/std/rec/Makefile b/modules/database/test/std/rec/Makefile index 52db82400..18685de82 100644 --- a/modules/database/test/std/rec/Makefile +++ b/modules/database/test/std/rec/Makefile @@ -128,6 +128,7 @@ regressTest_SRCS += regressTest.c regressTest_SRCS += regressTest_registerRecordDeviceDriver.cpp TESTFILES += $(COMMON_DIR)/regressTest.dbd ../regressArray1.db ../regressHex.db ../regressLinkMS.db TESTFILES += ../badCaLink.db +TESTFILES += ../regressLongCalc.db TESTS += regressTest TARGETS += $(COMMON_DIR)/simmTest.dbd diff --git a/modules/database/test/std/rec/regressLongCalc.db b/modules/database/test/std/rec/regressLongCalc.db new file mode 100644 index 000000000..6a2f9cbcf --- /dev/null +++ b/modules/database/test/std/rec/regressLongCalc.db @@ -0,0 +1,5 @@ +record(calc, "test_calc") +{ + field(SCAN, "1 second") + field(CALC, "RNDM*100") +} diff --git a/modules/database/test/std/rec/regressTest.c b/modules/database/test/std/rec/regressTest.c index 938cb2e04..c3b2f73be 100644 --- a/modules/database/test/std/rec/regressTest.c +++ b/modules/database/test/std/rec/regressTest.c @@ -141,13 +141,37 @@ void testCADisconn(void) testdbCleanup(); } +/* https://github.com/epics-base/epics-base/issues/194 */ +static +void testLongCalc(void) +{ + const char small[] = "0.0000000000000000000000000000000000000001"; + + startRegressTestIoc("regressLongCalc.db"); + + testdbGetFieldEqual("test_calc.CALC", DBF_STRING, "RNDM*100"); + + testdbPutArrFieldOk("test_calc.CALC$", DBF_CHAR, 4, "300\0"); + testdbGetFieldEqual("test_calc.CALC", DBF_STRING, "300"); + testdbPutFieldOk("test_calc.PROC", DBF_LONG, 1); + testdbGetFieldEqual("test_calc", DBF_DOUBLE, 300.0); + + testdbPutArrFieldOk("test_calc.CALC$", DBF_CHAR, sizeof(small), small); + testdbGetFieldEqual("test_calc.CALC", DBF_STRING, "0.0000000000000000000000000000000000000"); + testdbPutFieldOk("test_calc.PROC", DBF_LONG, 1); + testdbGetFieldEqual("test_calc", DBF_DOUBLE, 1e-40); + + testIocShutdownOk(); + testdbCleanup(); +} MAIN(regressTest) { - testPlan(34); + testPlan(43); testArrayLength1(); testHexConstantLinks(); testLinkMS(); testCADisconn(); + testLongCalc(); return testDone(); }