diff --git a/modules/database/test/std/rec/Makefile b/modules/database/test/std/rec/Makefile index 0bb8c7a42..f489b7545 100644 --- a/modules/database/test/std/rec/Makefile +++ b/modules/database/test/std/rec/Makefile @@ -126,8 +126,8 @@ regressTest_DBD += base.dbd TESTPROD_HOST += regressTest regressTest_SRCS += regressTest.c regressTest_SRCS += regressTest_registerRecordDeviceDriver.cpp -TESTFILES += $(COMMON_DIR)/regressTest.dbd ../regressArray1.db ../regressHex.db ../regressLinkMS.db -TESTFILES += ../badCaLink.db +TESTFILES += $(COMMON_DIR)/regressTest.dbd ../regressArray1.db ../regressHex.db +TESTFILES += ../regressLinkMS.db ../badCaLink.db ../regressCalcout.db TESTS += regressTest TARGETS += $(COMMON_DIR)/simmTest.dbd diff --git a/modules/database/test/std/rec/regressCalcout.db b/modules/database/test/std/rec/regressCalcout.db new file mode 100644 index 000000000..4c1ed1933 --- /dev/null +++ b/modules/database/test/std/rec/regressCalcout.db @@ -0,0 +1,6 @@ +record(calcout, "cout") { + field(INPA, "99") + field(INPB, "99") + field(INPC, "99") + field(INPD, "99") +} diff --git a/modules/database/test/std/rec/regressTest.c b/modules/database/test/std/rec/regressTest.c index 0daa8a6d0..bd8fadbf0 100644 --- a/modules/database/test/std/rec/regressTest.c +++ b/modules/database/test/std/rec/regressTest.c @@ -134,15 +134,44 @@ void testCADisconn(void) testdbPutFieldFail(-1, "ai:disconn.PROC", DBF_LONG, 1); testdbGetFieldEqual("ai:disconn.SEVR", DBF_LONG, INVALID_ALARM); testdbGetFieldEqual("ai:disconn.STAT", DBF_LONG, LINK_ALARM); + + testIocShutdownOk(); + testdbCleanup(); +} + +/* lp:1824277 Regression in calcout, setting links at runtime */ +static void +testSpecialLinks(void) +{ + testDiag("In testSpecialLinks()"); + + startRegressTestIoc("regressCalcout.db"); + + testdbPutFieldOk("cout.INPA", DBF_STRING, "10"); + testdbGetFieldEqual("cout.A", DBF_LONG, 10); + testdbGetFieldEqual("cout.INAV", DBF_LONG, calcoutINAV_CON); + testdbPutFieldOk("cout.INPB", DBF_STRING, "{\"const\":20}"); + testdbGetFieldEqual("cout.B", DBF_LONG, 20); + testdbGetFieldEqual("cout.INBV", DBF_LONG, calcoutINAV_CON); + testdbPutFieldOk("cout.INPC", DBF_STRING, "cout.A"); + testdbGetFieldEqual("cout.C", DBF_LONG, 99); + testdbGetFieldEqual("cout.INCV", DBF_LONG, calcoutINAV_LOC); + testdbPutFieldOk("cout.INPD", DBF_STRING, "no-such-pv"); + testdbGetFieldEqual("cout.D", DBF_LONG, 99); + testdbGetFieldEqual("cout.INDV", DBF_LONG, calcoutINAV_EXT_NC); + + testIocShutdownOk(); + testdbCleanup(); } MAIN(regressTest) { - testPlan(34); + testPlan(46); testArrayLength1(); testHexConstantLinks(); testLinkMS(); testCADisconn(); + testSpecialLinks(); return testDone(); }