From da27db55c42e875d7de5d5ffeb744fe4e15c2f64 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Wed, 5 Aug 2026 10:58:18 -0700 Subject: [PATCH] dbCaLinkTest: test dbr_size_n --- modules/database/test/ioc/db/dbCACTest.cpp | 29 +++++++++++++++++++++ modules/database/test/ioc/db/dbCaLinkTest.c | 4 ++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/modules/database/test/ioc/db/dbCACTest.cpp b/modules/database/test/ioc/db/dbCACTest.cpp index e008fb0db..502dc799c 100644 --- a/modules/database/test/ioc/db/dbCACTest.cpp +++ b/modules/database/test/ioc/db/dbCACTest.cpp @@ -83,3 +83,32 @@ void dbCaLinkTest_testCAC(void) testAbort("Unexpected exception in testCAC: %s", e.what()); } } + +extern "C" +void dbCaLinkTest_testMacros() +{ +#define testEq(A,B) do { \ + epicsInt64 a = (A), b = (B); \ + testOk(a==b, #A " (%lld) == " #B " (%lld)", a, b); \ +}while(0) + testEq(dbr_size_n(DBR_STRING, 2), 2*MAX_STRING_SIZE); + testEq(dbr_size_n(DBR_STRING, 1), MAX_STRING_SIZE); + testEq(dbr_size_n(DBR_STRING, 0), 0); + testTodoBegin("overflow"); + testEq(dbr_size_n(DBR_INT, 0xffffffff), 0x1fffffffellu); // result truncated to 0xfffffffe + testEq(dbr_size_n(DBR_INT, 0x7fffffff), 0xfffffffe); // underflows in intermediate, on some targets + testTodoEnd(); + testEq(dbr_size_n(DBR_INT, 0x3fffffff), 0x7ffffffe); + testEq(dbr_size_n(DBR_INT, 2), 4); + testEq(dbr_size_n(DBR_INT, 1), 2); + testEq(dbr_size_n(DBR_INT, 0), 0); + testEq(dbr_size_n(DBR_STS_INT, 2), 4+2*2); + testEq(dbr_size_n(DBR_STS_INT, 1), 4+2); + testEq(dbr_size_n(DBR_STS_INT, 0), 4); + testEq(dbr_size_n(DBR_CHAR, 0xffffffff), 0xffffffff); + testEq(dbr_size_n(DBR_CHAR, 0x7fffffff), 0x7fffffff); + testEq(dbr_size_n(DBR_CHAR, 2), 2); + testEq(dbr_size_n(DBR_CHAR, 1), 1); + testEq(dbr_size_n(DBR_CHAR, 0), 0); +#undef testEq +} diff --git a/modules/database/test/ioc/db/dbCaLinkTest.c b/modules/database/test/ioc/db/dbCaLinkTest.c index bb7eaf79c..e41ff5ce6 100644 --- a/modules/database/test/ioc/db/dbCaLinkTest.c +++ b/modules/database/test/ioc/db/dbCaLinkTest.c @@ -561,6 +561,7 @@ static void testreTargetTypeChange(void) } void dbCaLinkTest_testCAC(void); +void dbCaLinkTest_testMacros(void); static void testCAC(void) { @@ -590,6 +591,7 @@ static void testCAC(void) buftarg2= ptarg2->bptr; dbCaLinkTest_testCAC(); + dbCaLinkTest_testMacros(); testIocShutdownOk(); @@ -605,7 +607,7 @@ static void testCAC(void) MAIN(dbCaLinkTest) { - testPlan(101); + testPlan(118); testNativeLink(); testStringLink(); testCP();