add tests for calculated numeric soft events

This commit is contained in:
2018-02-13 15:36:21 +01:00
parent 0691fc5f57
commit 1e9826d187
4 changed files with 41 additions and 7 deletions
+2
View File
@@ -144,7 +144,9 @@ scanEventTest_DBD += menuGlobal.dbd
scanEventTest_DBD += menuConvert.dbd
scanEventTest_DBD += menuScan.dbd
scanEventTest_DBD += eventRecord.dbd
scanEventTest_DBD += devEventSoft.dbd
scanEventTest_DBD += calcRecord.dbd
scanEventTest_DBD += dfanoutRecord.dbd
TESTPROD_HOST += scanEventTest
scanEventTest_SRCS += scanEventTest.c
scanEventTest_SRCS += scanEventTest_registerRecordDeviceDriver.cpp
+1
View File
@@ -0,0 +1 @@
device(event,CONSTANT,devEventSoft,"Soft Channel")
+27 -7
View File
@@ -35,14 +35,15 @@ const struct {char* name; int num;} events[] = {
{"-NAN", 0},
{"-inf", 0},
{"inf", 0},
{"info 1", -1},
{" info 1 ", -1},
{"-0.9", -2},
{"2", 2},
{"2.000000", 2},
{"2.5", 2},
{" 2.5 ", 2},
{"+0x02", 2},
{"3", 3},
{"info 1", -1},
{" info 1 ", -1},
{"-0.9", -2},
{"-2", -3},
{"-2.000000", -4},
{"-2.5", -5},
@@ -51,12 +52,13 @@ const struct {char* name; int num;} events[] = {
MAIN(scanEventTest)
{
unsigned int i;
int i, e;
int aliases[512] ;
int expected_count[512];
#define INDX(i) 256-events[i].num
#define MAXEV 5
testPlan(NELEMENTS(events)*2);
testPlan(NELEMENTS(events)*2+(MAXEV+1)*5);
memset(aliases, 0, sizeof(aliases));
memset(expected_count, 0, sizeof(expected_count));
@@ -75,6 +77,7 @@ MAIN(scanEventTest)
testAbort("Error reading test database 'scanEventTest.db'");
}
testIocInitOk();
testDiag("Test if eventNameToHandle() strips spaces and handles numeric events");
for (i = 0; i < NELEMENTS(events); i++) {
EVENTPVT pev = eventNameToHandle(events[i].name);
/* test that some names are not events (num=0) */
@@ -103,13 +106,30 @@ MAIN(scanEventTest)
}
}
}
post_event(events[i].num);
post_event(events[i].num); /* triggers numeric events only */
postEvent(pev);
}
testDiag("Check calculated numeric events (backward compatibility)");
for (e = 0; e <= MAXEV; e++) {
testdbPutFieldOk("eventnum", DBR_LONG, e);
testdbGetFieldEqual("e1", DBR_LONG, e);
testdbGetFieldEqual("e2", DBR_LONG, e);
testdbPutFieldOk("e3", DBR_LONG, e);
testdbPutFieldOk("e3.PROC", DBR_LONG, 1);
if (e != 0)
for (i = 0; i < NELEMENTS(events); i++)
if (events[i].num == e) {
expected_count[INDX(i)]+=3; /* +1 for eventnum->e1, +1 for e2<-eventnum, +1 for e3 */
break;
}
}
testDiag("Check if events have been processed the expected number of times");
for (i = 0; i < NELEMENTS(events); i++) {
char pvname[100];
sprintf(pvname, "c%d", i);
testDiag("Check if %s (event \"%s\") has processed %d times", pvname, events[i].name, expected_count[INDX(i)]);
testDiag("Event \"%s\" expected %d times", events[i].name, expected_count[INDX(i)]);
testdbGetFieldEqual(pvname, DBR_LONG, expected_count[INDX(i)]);
}
+11
View File
@@ -3,3 +3,14 @@ record(calc, "c$(N)") {
field(EVNT, "$(EVENT)")
field(CALC, "VAL+1")
}
record(dfanout, "eventnum") {
field(OUTA, "e1 PP")
field(FLNK, "e2")
}
record(event, "e1") {
}
record(event, "e2") {
field(INP, "eventnum")
}
record(event, "e3") {
}