On Tue, Nov 05, 2013 at 03:59:55PM +0100, Ján Tomko wrote: > --- > tests/jsontest.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/tests/jsontest.c b/tests/jsontest.c > index 6add816..808a2ea 100644 > --- a/tests/jsontest.c > +++ b/tests/jsontest.c > @@ -145,6 +145,10 @@ mymain(void) > #define DO_TEST_PARSE(name, doc) \ > DO_TEST_FULL(name, FromString, doc, NULL, true) > > +#define DO_TEST_PARSE_FAIL(name, doc) \ > + DO_TEST_FULL(name, FromString, doc, NULL, false) > + > + You're testing virJSONValueFromString() here ... > DO_TEST_PARSE("Simple", "{\"return\": {}, \"id\": \"libvirt-1\"}"); > DO_TEST_PARSE("NotSoSimple", "{\"QMP\": {\"version\": {\"qemu\":" > "{\"micro\": 91, \"minor\": 13, \"major\": 0}," > @@ -188,6 +192,15 @@ mymain(void) > DO_TEST_FULL("add and remove", AddRemove, > "[ 1 ]", NULL, false); > > + > + DO_TEST_PARSE_FAIL("nothing", ""); > + DO_TEST_PARSE_FAIL("number with garbage", "2345b45"); > + DO_TEST_PARSE_FAIL("float with garbage", "0.0314159ee+100"); > + DO_TEST_PARSE_FAIL("unterminated string", "\"The meaning of lif"); ... that not only cannot parse these, but it can't even parse proper numbers (e.g. "12345", "1.2e+34"), because it expects object (array or map). You can do two things with this. Either create new testJSON...() which will test numbers only (requires v2) or squash this in (which makes it work properly and shows that also): diff --git a/tests/jsontest.c b/tests/jsontest.c index e806b6f..a7ee2ef 100644 --- a/tests/jsontest.c +++ b/tests/jsontest.c @@ -193,10 +193,18 @@ mymain(void) "[ 1 ]", NULL, false); + DO_TEST_PARSE("almost nothing", "[]"); DO_TEST_PARSE_FAIL("nothing", ""); - DO_TEST_PARSE_FAIL("number with garbage", "2345b45"); - DO_TEST_PARSE_FAIL("float with garbage", "0.0314159ee+100"); - DO_TEST_PARSE_FAIL("unterminated string", "\"The meaning of lif"); + + DO_TEST_PARSE("number without garbage", "[ 234545 ]"); + DO_TEST_PARSE_FAIL("number with garbage", "[ 2345b45 ]"); + + DO_TEST_PARSE("float without garbage", "[ 0.0314159e+100 ]"); + DO_TEST_PARSE_FAIL("float with garbage", "[ 0.0314159ee+100 ]"); + + DO_TEST_PARSE("string", "[ \"The meaning of life\" ]"); + DO_TEST_PARSE_FAIL("unterminated string", "[ \"The meaning of lif ]"); + DO_TEST_PARSE_FAIL("unterminated array", "[ 1, 2, 3"); DO_TEST_PARSE_FAIL("object with numeric keys", "{ 1:1, 2:1, 3:2 }"); DO_TEST_PARSE_FAIL("unterminated object", "{ \"1\":1, \"2\":1, \"3\":2"); -- ACK if you want to use the second option. Martin
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list