Modify database tests to use JSON5
(except for the tests that check parsing). Remove escaped double-quotes in map keys where possible. Replace escaped double-quotes with single quotes.
This commit is contained in:
@@ -178,7 +178,7 @@ static void check(short dbr_type) {
|
||||
/* Default: should not change anything */
|
||||
|
||||
testHead("Ten %s elements from rec, increment 1, full size (default)", typname);
|
||||
createAndOpen(valname, "{\"arr\":{}}", "(default)", &pch, 1);
|
||||
createAndOpen(valname, "{arr:{}}", "(default)", &pch, 1);
|
||||
testOk(pch->final_type == valaddr.field_type,
|
||||
"final type unchanged (%d->%d)", valaddr.field_type, pch->final_type);
|
||||
testOk(pch->final_no_elements == valaddr.no_elements,
|
||||
@@ -188,7 +188,7 @@ static void check(short dbr_type) {
|
||||
dbChannelDelete(pch);
|
||||
|
||||
testHead("Ten %s elements from rec, increment 1, out-of-bound start parameter", typname);
|
||||
createAndOpen(valname, "{\"arr\":{\"s\":-500}}", "out-of-bound start", &pch, 1);
|
||||
createAndOpen(valname, "{arr:{s:-500}}", "out-of-bound start", &pch, 1);
|
||||
testOk(pch->final_type == valaddr.field_type,
|
||||
"final type unchanged (%d->%d)", valaddr.field_type, pch->final_type);
|
||||
testOk(pch->final_no_elements == valaddr.no_elements,
|
||||
@@ -197,7 +197,7 @@ static void check(short dbr_type) {
|
||||
dbChannelDelete(pch);
|
||||
|
||||
testHead("Ten %s elements from rec, increment 1, out-of-bound end parameter", typname);
|
||||
createAndOpen(valname, "{\"arr\":{\"e\":500}}", "out-of-bound end", &pch, 1);
|
||||
createAndOpen(valname, "{arr:{e:500}}", "out-of-bound end", &pch, 1);
|
||||
testOk(pch->final_type == valaddr.field_type,
|
||||
"final type unchanged (%d->%d)", valaddr.field_type, pch->final_type);
|
||||
testOk(pch->final_no_elements == valaddr.no_elements,
|
||||
@@ -206,7 +206,7 @@ static void check(short dbr_type) {
|
||||
dbChannelDelete(pch);
|
||||
|
||||
testHead("Ten %s elements from rec, increment 1, zero increment parameter", typname);
|
||||
createAndOpen(valname, "{\"arr\":{\"i\":0}}", "zero increment", &pch, 1);
|
||||
createAndOpen(valname, "{arr:{i:0}}", "zero increment", &pch, 1);
|
||||
testOk(pch->final_type == valaddr.field_type,
|
||||
"final type unchanged (%d->%d)", valaddr.field_type, pch->final_type);
|
||||
testOk(pch->final_no_elements == valaddr.no_elements,
|
||||
@@ -215,7 +215,7 @@ static void check(short dbr_type) {
|
||||
dbChannelDelete(pch);
|
||||
|
||||
testHead("Ten %s elements from rec, increment 1, invalid increment parameter", typname);
|
||||
createAndOpen(valname, "{\"arr\":{\"i\":-30}}", "invalid increment", &pch, 1);
|
||||
createAndOpen(valname, "{arr:{i:-30}}", "invalid increment", &pch, 1);
|
||||
testOk(pch->final_type == valaddr.field_type,
|
||||
"final type unchanged (%d->%d)", valaddr.field_type, pch->final_type);
|
||||
testOk(pch->final_no_elements == valaddr.no_elements,
|
||||
@@ -225,7 +225,7 @@ static void check(short dbr_type) {
|
||||
|
||||
#define TEST5(Incr, Left, Right, Type) \
|
||||
testHead("Five %s elements from rec, increment " #Incr ", " Type " addressing", typname); \
|
||||
createAndOpen(valname, "{\"arr\":{\"s\":" #Left ",\"e\":" #Right ",\"i\":" #Incr "}}", \
|
||||
createAndOpen(valname, "{arr:{s:" #Left ",e:" #Right ",i:" #Incr "}}", \
|
||||
"(" #Left ":" #Incr ":" #Right ")", &pch, 1); \
|
||||
testOk(pch->final_type == valaddr.field_type, \
|
||||
"final type unchanged (%d->%d)", valaddr.field_type, pch->final_type); \
|
||||
@@ -262,7 +262,7 @@ static void check(short dbr_type) {
|
||||
|
||||
#define TEST5B(Incr, Left, Right, Type) \
|
||||
testHead("Five %s elements from buffer, increment " #Incr ", " Type " addressing", typname); \
|
||||
createAndOpen(valname, "{\"arr\":{},\"arr\":{\"s\":" #Left ",\"e\":" #Right ",\"i\":" #Incr "}}", \
|
||||
createAndOpen(valname, "{arr:{},arr:{s:" #Left ",e:" #Right ",i:" #Incr "}}", \
|
||||
"(" #Left ":" #Incr ":" #Right ")", &pch, 2); \
|
||||
testOk(pch->final_type == valaddr.field_type, \
|
||||
"final type unchanged (%d->%d)", valaddr.field_type, pch->final_type); \
|
||||
|
||||
@@ -148,7 +148,7 @@ MAIN(dbndTest)
|
||||
|
||||
testOk(!!(plug = dbFindFilter(dbnd, strlen(dbnd))), "plugin dbnd registered correctly");
|
||||
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"dbnd\":{}}")), "dbChannel with plugin dbnd (delta=0) created");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{dbnd:{}}")), "dbChannel with plugin dbnd (delta=0) created");
|
||||
testOk((ellCount(&pch->filters) == 1), "channel has one plugin");
|
||||
|
||||
/* Start the free-list */
|
||||
@@ -202,7 +202,7 @@ MAIN(dbndTest)
|
||||
/* Delta = -1: pass any update */
|
||||
|
||||
testHead("Delta = -1: pass any update");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"dbnd\":{\"d\":-1.0}}")), "dbChannel with plugin dbnd (delta=-1) created");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{dbnd:{d:-1.0}}")), "dbChannel with plugin dbnd (delta=-1) created");
|
||||
testOk(!(dbChannelOpen(pch)), "dbChannel with plugin dbnd opened");
|
||||
|
||||
pfl2 = db_create_read_log(pch);
|
||||
@@ -220,7 +220,7 @@ MAIN(dbndTest)
|
||||
/* Delta = absolute */
|
||||
|
||||
testHead("Delta = absolute");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"dbnd\":{\"d\":3}}")), "dbChannel with plugin dbnd (delta=3) created");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{dbnd:{d:3}}")), "dbChannel with plugin dbnd (delta=3) created");
|
||||
testOk(!(dbChannelOpen(pch)), "dbChannel with plugin dbnd opened");
|
||||
|
||||
pfl2 = db_create_read_log(pch);
|
||||
@@ -254,7 +254,7 @@ MAIN(dbndTest)
|
||||
/* Delta = relative */
|
||||
|
||||
testHead("Delta = relative");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"dbnd\":{\"m\":\"rel\",\"d\":50}}")),
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{dbnd:{m:'rel',d:50}}")),
|
||||
"dbChannel with plugin dbnd (mode=rel, delta=50) created");
|
||||
testOk(!(dbChannelOpen(pch)), "dbChannel with plugin dbnd opened");
|
||||
|
||||
|
||||
@@ -149,20 +149,20 @@ MAIN(decTest)
|
||||
"plugin '%s' registered correctly", myname);
|
||||
|
||||
/* N < 1 */
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{\"dec\":{\"n\":-1}}")),
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{dec:{n:-1}}")),
|
||||
"dbChannel with dec (n=-1) failed");
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{\"dec\":{\"n\":0}}")),
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{dec:{n:0}}")),
|
||||
"dbChannel with dec (n=0) failed");
|
||||
/* Bad parms */
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{\"dec\":{}}")),
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{dec:{}}")),
|
||||
"dbChannel with dec (no parm) failed");
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{\"dec\":{\"x\":true}}")),
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{dec:{x:true}}")),
|
||||
"dbChannel with dec (x=true) failed");
|
||||
|
||||
/* No Decimation (N=1) */
|
||||
|
||||
testHead("No Decimation (n=1)");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"dec\":{\"n\":1}}")),
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{dec:{n:1}}")),
|
||||
"dbChannel with plugin dec (n=1) created");
|
||||
|
||||
/* Start the free-list */
|
||||
@@ -192,7 +192,7 @@ MAIN(decTest)
|
||||
/* Decimation (N=2) */
|
||||
|
||||
testHead("Decimation (n=2)");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"dec\":{\"n\":2}}")),
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{dec:{n:2}}")),
|
||||
"dbChannel with plugin dec (n=2) created");
|
||||
|
||||
checkAndOpenChannel(pch, plug);
|
||||
@@ -222,7 +222,7 @@ MAIN(decTest)
|
||||
/* Decimation (N=3) */
|
||||
|
||||
testHead("Decimation (n=3)");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"dec\":{\"n\":3}}")),
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{dec:{n:3}}")),
|
||||
"dbChannel with plugin dec (n=3) created");
|
||||
|
||||
checkAndOpenChannel(pch, plug);
|
||||
@@ -252,7 +252,7 @@ MAIN(decTest)
|
||||
/* Decimation (N=4) */
|
||||
|
||||
testHead("Decimation (n=4)");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"dec\":{\"n\":4}}")),
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{dec:{n:4}}")),
|
||||
"dbChannel with plugin dec (n=4) created");
|
||||
|
||||
checkAndOpenChannel(pch, plug);
|
||||
|
||||
@@ -225,19 +225,19 @@ MAIN(syncTest)
|
||||
testOk(!!(red = dbStateCreate("red")), "state 'red' created successfully");
|
||||
|
||||
/* nonexisting state */
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{\"sync\":{\"m\":\"while\",\"s\":\"blue\"}}")),
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{sync:{m:'while',s:'blue'}}")),
|
||||
"dbChannel with sync (m='while' s='blue') (nonex state) failed");
|
||||
/* missing state */
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{\"sync\":{\"m\":\"while\"}}")),
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{sync:{m:'while'}}")),
|
||||
"dbChannel with sync (m='while') (no state) failed");
|
||||
/* missing mode */
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{\"sync\":{\"s\":\"red\"}}")),
|
||||
testOk(!(pch = dbChannelCreate("x.VAL{sync:{s:'red'}}")),
|
||||
"dbChannel with sync (s='red') (no mode) failed");
|
||||
|
||||
/* mode WHILE */
|
||||
|
||||
testHead("Mode WHILE (m='while', s='red')");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"sync\":{\"m\":\"while\",\"s\":\"red\"}}")),
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{sync:{m:'while',s:'red'}}")),
|
||||
"dbChannel with plugin sync (m='while' s='red') created");
|
||||
|
||||
/* Start the free-list */
|
||||
@@ -274,7 +274,7 @@ MAIN(syncTest)
|
||||
/* mode UNLESS */
|
||||
|
||||
testHead("Mode UNLESS (m='unless', s='red')");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"sync\":{\"m\":\"unless\",\"s\":\"red\"}}")),
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{sync:{m:'unless',s:'red'}}")),
|
||||
"dbChannel with plugin sync (m='unless' s='red') created");
|
||||
|
||||
checkAndOpenChannel(pch, plug);
|
||||
@@ -306,7 +306,7 @@ MAIN(syncTest)
|
||||
/* mode BEFORE */
|
||||
|
||||
testHead("Mode BEFORE (m='before', s='red')");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"sync\":{\"m\":\"before\",\"s\":\"red\"}}")),
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{sync:{m:'before',s:'red'}}")),
|
||||
"dbChannel with plugin sync (m='before' s='red') created");
|
||||
|
||||
checkAndOpenChannel(pch, plug);
|
||||
@@ -340,7 +340,7 @@ MAIN(syncTest)
|
||||
/* mode FIRST */
|
||||
|
||||
testHead("Mode FIRST (m='first', s='red')");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"sync\":{\"m\":\"first\",\"s\":\"red\"}}")),
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{sync:{m:'first',s:'red'}}")),
|
||||
"dbChannel with plugin sync (m='first' s='red') created");
|
||||
|
||||
checkAndOpenChannel(pch, plug);
|
||||
@@ -373,7 +373,7 @@ MAIN(syncTest)
|
||||
/* mode LAST */
|
||||
|
||||
testHead("Mode LAST (m='last', s='red')");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"sync\":{\"m\":\"last\",\"s\":\"red\"}}")),
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{sync:{m:'last',s:'red'}}")),
|
||||
"dbChannel with plugin sync (m='last' s='red') created");
|
||||
|
||||
checkAndOpenChannel(pch, plug);
|
||||
@@ -407,7 +407,7 @@ MAIN(syncTest)
|
||||
/* mode AFTER */
|
||||
|
||||
testHead("Mode AFTER (m='after', s='red')");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"sync\":{\"m\":\"after\",\"s\":\"red\"}}")),
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{sync:{m:'after',s:'red'}}")),
|
||||
"dbChannel with plugin sync (m='after' s='red') created");
|
||||
|
||||
checkAndOpenChannel(pch, plug);
|
||||
|
||||
@@ -74,7 +74,7 @@ MAIN(tsTest)
|
||||
|
||||
testOk(!!(plug = dbFindFilter(ts, strlen(ts))), "plugin ts registered correctly");
|
||||
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{\"ts\":{}}")), "dbChannel with plugin ts created");
|
||||
testOk(!!(pch = dbChannelCreate("x.VAL{ts:{}}")), "dbChannel with plugin ts created");
|
||||
testOk((ellCount(&pch->filters) == 1), "channel has one plugin");
|
||||
|
||||
memset(&fl, PATTERN, sizeof(fl));
|
||||
|
||||
@@ -53,9 +53,9 @@ static void testCalc()
|
||||
{
|
||||
dbStateId red;
|
||||
|
||||
testPutLongStr("io.INPUT", "{\"calc\":{"
|
||||
"\"expr\":\"a\","
|
||||
"\"args\":[{\"state\":\"red\"}]"
|
||||
testPutLongStr("io.INPUT", "{calc:{"
|
||||
"expr:'a',"
|
||||
"args:[{state:'red'}]"
|
||||
"}}");
|
||||
if (testOk1(pinp->type == JSON_LINK))
|
||||
testDiag("Link was set to '%s'", pinp->value.json.string);
|
||||
@@ -78,11 +78,11 @@ static void testCalc()
|
||||
dbStateId minor = dbStateCreate("minor");
|
||||
epicsEnum16 stat, sevr;
|
||||
|
||||
testPutLongStr("io.INPUT", "{\"calc\":{"
|
||||
"\"expr\":\"0\","
|
||||
"\"major\":\"A\","
|
||||
"\"minor\":\"B\","
|
||||
"\"args\":[{\"state\":\"major\"},{\"state\":\"minor\"}]"
|
||||
testPutLongStr("io.INPUT", "{calc:{"
|
||||
"expr:'0',"
|
||||
"major:'A',"
|
||||
"minor:'B',"
|
||||
"args:[{state:'major'},{state:'minor'}]"
|
||||
"}}");
|
||||
if (testOk1(pinp->type == JSON_LINK))
|
||||
testDiag("Link was set to '%s'", pinp->value.json.string);
|
||||
@@ -114,12 +114,12 @@ static void testCalc()
|
||||
dbStateId red = dbStateFind("red");
|
||||
dbStateId out = dbStateCreate("out");
|
||||
|
||||
testPutLongStr("io.OUTPUT", "{\"calc\":{"
|
||||
"\"expr\":\"!a\","
|
||||
"\"out\":{\"state\":\"out\"},"
|
||||
"\"args\":[{\"state\":\"red\"}],"
|
||||
"\"units\":\"things\","
|
||||
"\"prec\":3"
|
||||
testPutLongStr("io.OUTPUT", "{calc:{"
|
||||
"expr:'!a',"
|
||||
"out:{state:'out'},"
|
||||
"args:[{state:'red'}],"
|
||||
"units:'things',"
|
||||
"prec:3"
|
||||
"}}");
|
||||
if (testOk1(pout->type == JSON_LINK))
|
||||
testDiag("Link was set to '%s'", pout->value.json.string);
|
||||
|
||||
@@ -50,7 +50,7 @@ static void testState()
|
||||
red = dbStateFind("red");
|
||||
testOk(!red, "No state red exists");
|
||||
|
||||
testdbPutFieldOk("io.INPUT", DBF_STRING, "{\"state\":\"red\"}");
|
||||
testdbPutFieldOk("io.INPUT", DBF_STRING, "{state:'red'}");
|
||||
if (testOk1(pinp->type == JSON_LINK))
|
||||
testDiag("Link was set to '%s'", pinp->value.json.string);
|
||||
red = dbStateFind("red");
|
||||
@@ -64,7 +64,7 @@ static void testState()
|
||||
testOk(!status, "dbGetLink succeeded (status = %ld)", status);
|
||||
testOk(i16, "Got TRUE");
|
||||
|
||||
testdbPutFieldOk("io.INPUT", DBF_STRING, "{\"state\":\"!red\"}");
|
||||
testdbPutFieldOk("io.INPUT", DBF_STRING, "{state:'!red'}");
|
||||
if (testOk1(pinp->type == JSON_LINK))
|
||||
testDiag("Link was set to '%s'", pinp->value.json.string);
|
||||
|
||||
@@ -72,7 +72,7 @@ static void testState()
|
||||
testOk(!status, "dbGetLink succeeded (status = %ld)", status);
|
||||
testOk(!i16, "Got FALSE");
|
||||
|
||||
testdbPutFieldOk("io.OUTPUT", DBF_STRING, "{\"state\":\"red\"}");
|
||||
testdbPutFieldOk("io.OUTPUT", DBF_STRING, "{state:'red'}");
|
||||
if (testOk1(pout->type == JSON_LINK))
|
||||
testDiag("Link was set to '%s'", pout->value.json.string);
|
||||
|
||||
@@ -106,7 +106,7 @@ static void testState()
|
||||
testOk(!status, "dbPutLink %g succeeded (status = %ld)", f64, status);
|
||||
testOk(dbStateGet(red), "state was set");
|
||||
|
||||
testdbPutFieldOk("io.OUTPUT", DBF_STRING, "{\"state\":\"!red\"}");
|
||||
testdbPutFieldOk("io.OUTPUT", DBF_STRING, "{state:'!red'}");
|
||||
if (testOk1(pout->type == JSON_LINK))
|
||||
testDiag("Link was set to '%s'", pout->value.json.string);
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@ MAIN(analogMonitorTest)
|
||||
for (irec = 0; irec < NO_OF_RECORD_TYPES; irec++) {
|
||||
strcpy(cval, t_Record[irec]);
|
||||
strcpy(chan, cval);
|
||||
strcat(chan, ".VAL{\"test\":{}}");
|
||||
strcat(chan, ".VAL{test:{}}");
|
||||
if ((strcmp(t_Record[irec], "sel") == 0)
|
||||
|| (strcmp(t_Record[irec], "calc") == 0)
|
||||
|| (strcmp(t_Record[irec], "calcout") == 0)) {
|
||||
|
||||
@@ -18,7 +18,7 @@ record(stringout, "rec:link2") {
|
||||
|
||||
record(ai, "rec:j1") {
|
||||
field(INP, {calc:{
|
||||
expr:"A+5",
|
||||
expr:'A+5',
|
||||
args:5
|
||||
}})
|
||||
field(PINI, "YES")
|
||||
|
||||
@@ -75,18 +75,18 @@ static void testRetargetJLink(void)
|
||||
|
||||
testdbGetFieldEqual("rec:j1", DBF_DOUBLE, 10.0);
|
||||
/* minimal args */
|
||||
testLongStrEq("rec:j1.INP$", "{calc:{expr:\"A+5\",args:5}}");
|
||||
testLongStrEq("rec:j1.INP$", "{calc:{expr:'A+5',args:5}}");
|
||||
|
||||
/* with [] */
|
||||
testPutLongStr("rec:j1.INP$", "{\"calc\":{\"expr\":\"A+5\",\"args\":[7]}}");
|
||||
testPutLongStr("rec:j1.INP$", "{calc:{expr:'A+5',args:[7]}}");
|
||||
testdbPutFieldOk("rec:j1.PROC", DBF_LONG, 1);
|
||||
|
||||
/* with const */
|
||||
testPutLongStr("rec:j1.INP$", "{calc:{expr:\"A+5\",args:[{const:7}]}}");
|
||||
testPutLongStr("rec:j1.INP$", "{calc:{expr:'A+5',args:[{const:7}]}}");
|
||||
testdbPutFieldOk("rec:j1.PROC", DBF_LONG, 1);
|
||||
|
||||
testdbGetFieldEqual("rec:j1", DBF_DOUBLE, 12.0);
|
||||
testLongStrEq("rec:j1.INP$", "{calc:{expr:\"A+5\",args:[{const:7}]}}");
|
||||
testLongStrEq("rec:j1.INP$", "{calc:{expr:'A+5',args:[{const:7}]}}");
|
||||
}
|
||||
|
||||
MAIN(linkRetargetLinkTest)
|
||||
|
||||
Reference in New Issue
Block a user