diff options
Diffstat (limited to 'contrib/libucl/tests/test_generate.c')
-rw-r--r-- | contrib/libucl/tests/test_generate.c | 52 |
1 files changed, 29 insertions, 23 deletions
diff --git a/contrib/libucl/tests/test_generate.c b/contrib/libucl/tests/test_generate.c index b2081ba..2b1bf8d 100644 --- a/contrib/libucl/tests/test_generate.c +++ b/contrib/libucl/tests/test_generate.c @@ -29,7 +29,7 @@ int main (int argc, char **argv) { - ucl_object_t *obj, *cur, *ar; + ucl_object_t *obj, *cur, *ar, *ref; FILE *out; unsigned char *emitted; const char *fname_out = NULL; @@ -55,62 +55,64 @@ main (int argc, char **argv) obj = ucl_object_typed_new (UCL_OBJECT); /* Create some strings */ cur = ucl_object_fromstring_common (" test string ", 0, UCL_STRING_TRIM); - obj = ucl_object_insert_key (obj, cur, "key1", 0, false); + ucl_object_insert_key (obj, cur, "key1", 0, false); cur = ucl_object_fromstring_common (" test \nstring\n ", 0, UCL_STRING_TRIM | UCL_STRING_ESCAPE); - obj = ucl_object_insert_key (obj, cur, "key2", 0, false); + ucl_object_insert_key (obj, cur, "key2", 0, false); cur = ucl_object_fromstring_common (" test string \n", 0, 0); - obj = ucl_object_insert_key (obj, cur, "key3", 0, false); + ucl_object_insert_key (obj, cur, "key3", 0, false); /* Array of numbers */ + ar = ucl_object_typed_new (UCL_ARRAY); cur = ucl_object_fromint (10); - ar = ucl_array_append (NULL, cur); + ucl_array_append (ar, cur); cur = ucl_object_fromdouble (10.1); - ar = ucl_array_append (ar, cur); + ucl_array_append (ar, cur); cur = ucl_object_fromdouble (9.999); - ar = ucl_array_prepend (ar, cur); + ucl_array_prepend (ar, cur); /* Removing from an array */ cur = ucl_object_fromdouble (1.0); - ar = ucl_array_append (ar, cur); + ucl_array_append (ar, cur); cur = ucl_array_delete (ar, cur); assert (ucl_object_todouble (cur) == 1.0); ucl_object_unref (cur); cur = ucl_object_fromdouble (2.0); - ar = ucl_array_append (ar, cur); + ucl_array_append (ar, cur); cur = ucl_array_pop_last (ar); assert (ucl_object_todouble (cur) == 2.0); ucl_object_unref (cur); cur = ucl_object_fromdouble (3.0); - ar = ucl_array_prepend (ar, cur); + ucl_array_prepend (ar, cur); cur = ucl_array_pop_first (ar); assert (ucl_object_todouble (cur) == 3.0); ucl_object_unref (cur); - obj = ucl_object_insert_key (obj, ar, "key4", 0, false); + ucl_object_insert_key (obj, ar, "key4", 0, false); cur = ucl_object_frombool (true); - obj = ucl_object_insert_key (obj, cur, "key4", 0, false); + /* Ref object to test refcounts */ + ref = ucl_object_ref (cur); + ucl_object_insert_key (obj, cur, "key4", 0, false); /* Empty strings */ cur = ucl_object_fromstring_common (" ", 0, UCL_STRING_TRIM); - obj = ucl_object_insert_key (obj, cur, "key5", 0, false); + ucl_object_insert_key (obj, cur, "key5", 0, false); cur = ucl_object_fromstring_common ("", 0, UCL_STRING_ESCAPE); - obj = ucl_object_insert_key (obj, cur, "key6", 0, false); + ucl_object_insert_key (obj, cur, "key6", 0, false); cur = ucl_object_fromstring_common (" \n", 0, UCL_STRING_ESCAPE); - obj = ucl_object_insert_key (obj, cur, "key7", 0, false); + ucl_object_insert_key (obj, cur, "key7", 0, false); /* Numbers and booleans */ cur = ucl_object_fromstring_common ("1mb", 0, UCL_STRING_ESCAPE | UCL_STRING_PARSE); - obj = ucl_object_insert_key (obj, cur, "key8", 0, false); + ucl_object_insert_key (obj, cur, "key8", 0, false); cur = ucl_object_fromstring_common ("3.14", 0, UCL_STRING_PARSE); - obj = ucl_object_insert_key (obj, cur, "key9", 0, false); + ucl_object_insert_key (obj, cur, "key9", 0, false); cur = ucl_object_fromstring_common ("true", 0, UCL_STRING_PARSE); - obj = ucl_object_insert_key (obj, cur, "key10", 0, false); + ucl_object_insert_key (obj, cur, "key10", 0, false); cur = ucl_object_fromstring_common (" off ", 0, UCL_STRING_PARSE | UCL_STRING_TRIM); - obj = ucl_object_insert_key (obj, cur, "key11", 0, false); + ucl_object_insert_key (obj, cur, "key11", 0, false); cur = ucl_object_fromstring_common ("gslin@gslin.org", 0, UCL_STRING_PARSE_INT); - obj = ucl_object_insert_key (obj, cur, "key12", 0, false); + ucl_object_insert_key (obj, cur, "key12", 0, false); cur = ucl_object_fromstring_common ("#test", 0, UCL_STRING_PARSE_INT); - obj = ucl_object_insert_key (obj, cur, "key13", 0, false); + ucl_object_insert_key (obj, cur, "key13", 0, false); cur = ucl_object_frombool (true); - obj = ucl_object_insert_key (obj, cur, "k=3", 0, false); - + ucl_object_insert_key (obj, cur, "k=3", 0, false); emitted = ucl_object_emit (obj, UCL_EMIT_CONFIG); @@ -122,5 +124,9 @@ main (int argc, char **argv) } fclose (out); + /* Ref should still be accessible */ + ref->value.iv = 100500; + ucl_object_unref (ref); + return ret; } |