aboutsummaryrefslogtreecommitdiff
path: root/test/suites/api/test_pack.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/suites/api/test_pack.c')
-rw-r--r--test/suites/api/test_pack.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/suites/api/test_pack.c b/test/suites/api/test_pack.c
index 798a057..65783b1 100644
--- a/test/suites/api/test_pack.c
+++ b/test/suites/api/test_pack.c
@@ -240,6 +240,18 @@ static void run_tests()
fail("json_pack object refcount failed");
json_decref(value);
+ /* object with optional members */
+ value = json_pack("{s:s,s:o,s:O}", "a", NULL, "b", NULL, "c", NULL);
+ if(value)
+ fail("json_pack object optional incorrectly succeeded");
+ value = json_pack("{s:**}", "a", NULL);
+ if(value)
+ fail("json_pack object optional invalid incorrectly succeeded");
+ value = json_pack("{s:s*,s:o*,s:O*}", "a", NULL, "b", NULL, "c", NULL);
+ if(!json_is_object(value) || json_object_size(value) != 0)
+ fail("json_pack object optional failed");
+ json_decref(value);
+
/* simple array */
value = json_pack("[i,i,i]", 0, 1, 2);
if(!json_is_array(value) || json_array_size(value) != 3)
@@ -253,6 +265,18 @@ static void run_tests()
}
json_decref(value);
+ /* simple array with optional members */
+ value = json_pack("[s,o,O]", NULL, NULL, NULL);
+ if(value)
+ fail("json_pack array optional incorrectly succeeded");
+ value = json_pack("[**]", NULL);
+ if(value)
+ fail("json_pack array optional invalid incorrectly succeeded");
+ value = json_pack("[s*,o*,O*]", NULL, NULL, NULL);
+ if(!json_is_array(value) || json_array_size(value) != 0)
+ fail("json_pack array optional failed");
+ json_decref(value);
+
/* Whitespace; regular string */
value = json_pack(" s ", "test");
if(!json_is_string(value) || strcmp("test", json_string_value(value)))