/** * json_builder_add_null_value: * @builder: a #JsonBuilder * * If called after json_builder_set_member_name(), sets null as member of the * most recent opened object, otherwise null is added as element of the most * recent opened array. * * See also: json_builder_add_value() * * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent */ JsonBuilder * json_builder_add_null_value (JsonBuilder *builder) { JsonBuilderState *state; g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL); g_return_val_if_fail (!g_queue_is_empty (builder->priv->stack), NULL); g_return_val_if_fail (json_builder_is_valid_add_mode (builder), NULL); state = g_queue_peek_head (builder->priv->stack); switch (state->mode) { case JSON_BUILDER_MODE_MEMBER: json_object_set_null_member (state->data.object, state->member_name); g_free (state->member_name); state->member_name = NULL; state->mode = JSON_BUILDER_MODE_OBJECT; break; case JSON_BUILDER_MODE_ARRAY: json_array_add_null_element (state->data.array); break; default: g_assert_not_reached (); } return builder; }
} END_TEST /* FIXME: more tests required for: * * - array containing an array (of various types). * - array containing an object (containing various types). */ START_TEST(test_cc_oci_json_arr_to_string) { gchar *str; JsonArray *array; gboolean ret; ck_assert (! cc_oci_json_arr_to_string (NULL, false)); ck_assert (! cc_oci_json_arr_to_string (NULL, true)); array = json_array_new (); /* empty array, non-pretty */ str = cc_oci_json_arr_to_string (array, false); ck_assert (str); ck_assert (! g_strcmp0 (str, "[]")); g_free (str); /* empty array, pretty */ str = cc_oci_json_arr_to_string (array, true); ck_assert (str); ret = g_regex_match_simple ( /* pair of braces containing optional * whitespace. */ "[\\s*]", str, 0, 0); ck_assert (ret); g_free (str); json_array_add_null_element (array); json_array_add_null_element (array); json_array_add_boolean_element (array, false); json_array_add_boolean_element (array, true); json_array_add_int_element (array, 123); json_array_add_double_element (array, 3.1412); json_array_add_string_element (array, "foo bar"); str = cc_oci_json_arr_to_string (array, false); ck_assert (str); ret = g_regex_match_simple ( "[\\s*" /* opening bracket */ "\\s*null\\s*," /* null */ "\\s*null\\s*," /* null */ "\\s*false\\s*," /* false */ "\\s*true\\s*," /* true */ "\\s*123\\s*," /* int */ "\\s*3\\.1412\\s*," /* double */ "\\s*\"foo\\ bar\"\\s*," /* string */ "\\s*]", /* closing bracket */ str, 0, 0); ck_assert (ret); g_free (str); /* clean up */ json_array_unref (array); } END_TEST