aboutsummaryrefslogtreecommitdiff
path: root/test/suites/api/test_array.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/suites/api/test_array.c')
-rw-r--r--test/suites/api/test_array.c73
1 files changed, 73 insertions, 0 deletions
diff --git a/test/suites/api/test_array.c b/test/suites/api/test_array.c
index 34bdc51..9991fa0 100644
--- a/test/suites/api/test_array.c
+++ b/test/suites/api/test_array.c
@@ -419,6 +419,78 @@ static void test_array_foreach()
json_decref(array2);
}
+static void test_bad_args(void)
+{
+ json_t *arr = json_array();
+ json_t *num = json_integer(1);
+
+ if(!arr || !num)
+ fail("failed to create required objects");
+
+ if(json_array_size(NULL) != 0)
+ fail("NULL array has nonzero size");
+ if(json_array_size(num) != 0)
+ fail("non-array has nonzero array size");
+
+ if(json_array_get(NULL, 0))
+ fail("json_array_get did not return NULL for non-array");
+ if(json_array_get(num, 0))
+ fail("json_array_get did not return NULL for non-array");
+
+ if(!json_array_set_new(NULL, 0, json_incref(num)))
+ fail("json_array_set_new did not return error for non-array");
+ if(!json_array_set_new(num, 0, json_incref(num)))
+ fail("json_array_set_new did not return error for non-array");
+ if(!json_array_set_new(arr, 0, NULL))
+ fail("json_array_set_new did not return error for NULL value");
+ if(!json_array_set_new(arr, 0, json_incref(arr)))
+ fail("json_array_set_new did not return error for value == array");
+
+ if(!json_array_remove(NULL, 0))
+ fail("json_array_remove did not return error for non-array");
+ if(!json_array_remove(num, 0))
+ fail("json_array_remove did not return error for non-array");
+
+ if(!json_array_clear(NULL))
+ fail("json_array_clear did not return error for non-array");
+ if(!json_array_clear(num))
+ fail("json_array_clear did not return error for non-array");
+
+ if(!json_array_append_new(NULL, json_incref(num)))
+ fail("json_array_append_new did not return error for non-array");
+ if(!json_array_append_new(num, json_incref(num)))
+ fail("json_array_append_new did not return error for non-array");
+ if(!json_array_append_new(arr, NULL))
+ fail("json_array_append_new did not return error for NULL value");
+ if(!json_array_append_new(arr, json_incref(arr)))
+ fail("json_array_append_new did not return error for value == array");
+
+ if(!json_array_insert_new(NULL, 0, json_incref(num)))
+ fail("json_array_insert_new did not return error for non-array");
+ if(!json_array_insert_new(num, 0, json_incref(num)))
+ fail("json_array_insert_new did not return error for non-array");
+ if(!json_array_insert_new(arr, 0, NULL))
+ fail("json_array_insert_new did not return error for NULL value");
+ if(!json_array_insert_new(arr, 0, json_incref(arr)))
+ fail("json_array_insert_new did not return error for value == array");
+
+ if(!json_array_extend(NULL, arr))
+ fail("json_array_extend did not return error for first argument non-array");
+ if(!json_array_extend(num, arr))
+ fail("json_array_extend did not return error for first argument non-array");
+ if(!json_array_extend(arr, NULL))
+ fail("json_array_extend did not return error for second arguemnt non-array");
+ if(!json_array_extend(arr, num))
+ fail("json_array_extend did not return error for second arguemnt non-array");
+
+ if(num->refcount != 1)
+ fail("unexpected reference count on num");
+ if(arr->refcount != 1)
+ fail("unexpected reference count on arr");
+
+ json_decref(num);
+ json_decref(arr);
+}
static void run_tests()
{
@@ -429,4 +501,5 @@ static void run_tests()
test_extend();
test_circular();
test_array_foreach();
+ test_bad_args();
}