[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 07/10] add some tests for invalid JSON
From: |
Luiz Capitulino |
Subject: |
[Qemu-devel] [PATCH 07/10] add some tests for invalid JSON |
Date: |
Fri, 11 Jun 2010 16:58:12 -0300 |
From: Paolo Bonzini <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Luiz Capitulino <address@hidden>
---
check-qjson.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 97 insertions(+), 1 deletions(-)
diff --git a/check-qjson.c b/check-qjson.c
index d365799..2e52450 100644
--- a/check-qjson.c
+++ b/check-qjson.c
@@ -638,11 +638,90 @@ START_TEST(simple_varargs)
}
END_TEST
+START_TEST(empty_input)
+{
+ QObject *obj = qobject_from_json("");
+ fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_string)
+{
+ QObject *obj = qobject_from_json("\"abc");
+ fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_sq_string)
+{
+ QObject *obj = qobject_from_json("'abc");
+ fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_escape)
+{
+ QObject *obj = qobject_from_json("\"abc\\\"");
+ fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_array)
+{
+ QObject *obj = qobject_from_json("[32");
+ fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_array_comma)
+{
+ QObject *obj = qobject_from_json("[32,");
+ fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(invalid_array_comma)
+{
+ QObject *obj = qobject_from_json("[32,}");
+ fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_dict)
+{
+ QObject *obj = qobject_from_json("{'abc':32");
+ fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_dict_comma)
+{
+ QObject *obj = qobject_from_json("{'abc':32,");
+ fail_unless(obj == NULL);
+}
+END_TEST
+
+#if 0
+START_TEST(invalid_dict_comma)
+{
+ QObject *obj = qobject_from_json("{'abc':32,}");
+ fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_literal)
+{
+ QObject *obj = qobject_from_json("nul");
+ fail_unless(obj == NULL);
+}
+END_TEST
+#endif
+
static Suite *qjson_suite(void)
{
Suite *suite;
TCase *string_literals, *number_literals, *keyword_literals;
- TCase *dicts, *lists, *whitespace, *varargs;
+ TCase *dicts, *lists, *whitespace, *varargs, *errors;
string_literals = tcase_create("String Literals");
tcase_add_test(string_literals, simple_string);
@@ -668,6 +747,22 @@ static Suite *qjson_suite(void)
varargs = tcase_create("Varargs");
tcase_add_test(varargs, simple_varargs);
+ errors = tcase_create("Invalid JSON");
+ tcase_add_test(errors, empty_input);
+ tcase_add_test(errors, unterminated_string);
+ tcase_add_test(errors, unterminated_escape);
+ tcase_add_test(errors, unterminated_sq_string);
+ tcase_add_test(errors, unterminated_array);
+ tcase_add_test(errors, unterminated_array_comma);
+ tcase_add_test(errors, invalid_array_comma);
+ tcase_add_test(errors, unterminated_dict);
+ tcase_add_test(errors, unterminated_dict_comma);
+#if 0
+ /* FIXME: this print parse error messages on stderr. */
+ tcase_add_test(errors, invalid_dict_comma);
+ tcase_add_test(errors, unterminated_literal);
+#endif
+
suite = suite_create("QJSON test-suite");
suite_add_tcase(suite, string_literals);
suite_add_tcase(suite, number_literals);
@@ -676,6 +771,7 @@ static Suite *qjson_suite(void)
suite_add_tcase(suite, lists);
suite_add_tcase(suite, whitespace);
suite_add_tcase(suite, varargs);
+ suite_add_tcase(suite, errors);
return suite;
}
--
1.7.1.251.g92a7
- [Qemu-devel] [PATCH 00/10][PULL]: QMP/Monitor queue, Luiz Capitulino, 2010/06/11
- [Qemu-devel] [PATCH 01/10] json-lexer: Initialize 'x' and 'y', Luiz Capitulino, 2010/06/11
- [Qemu-devel] [PATCH 02/10] json-lexer: Handle missing escapes, Luiz Capitulino, 2010/06/11
- [Qemu-devel] [PATCH 04/10] check-qjson: Add more escape tests, Luiz Capitulino, 2010/06/11
- [Qemu-devel] [PATCH 03/10] qjson: Handle "\f", Luiz Capitulino, 2010/06/11
- [Qemu-devel] [PATCH 05/10] json-lexer: Drop 'buf', Luiz Capitulino, 2010/06/11
- [Qemu-devel] [PATCH 06/10] json-streamer: Don't use qdict_put_obj(), Luiz Capitulino, 2010/06/11
- [Qemu-devel] [PATCH 08/10] implement optional lookahead in json lexer, Luiz Capitulino, 2010/06/11
- [Qemu-devel] [PATCH 07/10] add some tests for invalid JSON,
Luiz Capitulino <=
- [Qemu-devel] [PATCH 09/10] remove unnecessary lookaheads, Luiz Capitulino, 2010/06/11
- [Qemu-devel] [PATCH 10/10] hxtool: Fix line number reporting on SQMP/EQMP errors, Luiz Capitulino, 2010/06/11
- Re: [Qemu-devel] [PATCH 00/10][PULL]: QMP/Monitor queue, Anthony Liguori, 2010/06/14