summaryrefslogtreecommitdiff
path: root/tests/test-02.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-02.c')
-rw-r--r--tests/test-02.c225
1 files changed, 0 insertions, 225 deletions
diff --git a/tests/test-02.c b/tests/test-02.c
deleted file mode 100644
index 46938ef..0000000
--- a/tests/test-02.c
+++ /dev/null
@@ -1,225 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <json-glib/json-glib.h>
-
-static const gchar *test_arrays[] = {
- "[ ]",
- "[ true ]",
- "[ true, false, null ]",
- "[ 1, 2, 3.14, \"test\" ]",
- "[ 42, [ ], null ]",
- "[ [ ], [ true, [ true ] ] ]",
- "[ [ false, true, 42 ], [ true, false, 3.14 ], \"test\" ]",
- "[ true, { } ]",
- "[ false, { \"test\" : 42 } ]",
- "var test = [ false, false, true ]",
- "var test = [ true, 42 ];",
-};
-
-static guint n_test_arrays = G_N_ELEMENTS (test_arrays);
-
-static void print_array (gint indent, JsonArray *array);
-static void print_value (gint indent, JsonNode *node);
-static void print_object (gint indent, JsonObject *object);
-
-static void
-print_value (gint indent,
- JsonNode *node)
-{
- gint j;
- gchar indent_str[80];
- GValue value = { 0, };
-
- for (j = 0; j < indent; j++)
- indent_str[j] = ' ';
-
- indent_str[j] = '\0';
-
- json_node_get_value (node, &value);
-
- switch (G_VALUE_TYPE (&value))
- {
- case G_TYPE_INT:
- g_print ("%sFound integer: `%d'\n",
- indent_str,
- g_value_get_int (&value));
- break;
-
- case G_TYPE_STRING:
- g_print ("%sFound string: `%s'\n",
- indent_str,
- g_value_get_string (&value));
- break;
-
- case G_TYPE_DOUBLE:
- g_print ("%sFound float: `%f'\n",
- indent_str,
- g_value_get_double (&value));
- break;
-
- case G_TYPE_BOOLEAN:
- g_print ("%sFound boolean: `%s'\n",
- indent_str,
- g_value_get_boolean (&value) ? "true" : "false");
- break;
-
- default:
- g_print ("%sUnknown value\n", indent_str);
- break;
- }
-
- g_value_unset (&value);
-}
-
-static void
-print_array (gint indent,
- JsonArray *array)
-{
- gint array_len = json_array_get_length (array);
- gint j;
- gchar indent_str[80];
-
- for (j = 0; j < indent; j++)
- indent_str[j] = ' ';
-
- indent_str[j] = '\0';
-
- if (array_len == 0)
- {
- g_print ("%sFound empty array\n", indent_str);
- return;
- }
-
- for (j = 0; j < array_len; j++)
- {
- JsonNode *node = json_array_get_element (array, j);
-
- switch (JSON_NODE_TYPE (node))
- {
- case JSON_NODE_ARRAY:
- g_print ("%sFound array (index: %d, len: %d)\n",
- indent_str,
- j,
- json_array_get_length (json_node_get_array (node)));
- print_array (indent + 1, json_node_get_array (node));
- break;
- case JSON_NODE_OBJECT:
- g_print ("%sFound object (index: %d, size: %d)\n",
- indent_str,
- j,
- json_object_get_size (json_node_get_object (node)));
- print_object (indent + 1, json_node_get_object (node));
- break;
- case JSON_NODE_VALUE:
- g_print ("%sFound value (index: %d)\n", indent_str, j);
- print_value (indent + 1, node);
- break;
- case JSON_NODE_NULL:
- g_print ("%sFound null (index: %d)\n", indent_str, j);
- break;
- }
- }
-}
-
-static void
-print_object (gint indent,
- JsonObject *object)
-{
- gint object_size = json_object_get_size (object);
- gint j;
- gchar indent_str[80];
- GList *members, *l;
-
- for (j = 0; j < indent; j++)
- indent_str[j] = ' ';
-
- indent_str[j] = '\0';
-
- if (object_size == 0)
- {
- g_print ("%sFound empty object\n", indent_str);
- return;
- }
-
- members = json_object_get_members (object);
- for (l = members; l; l = l->next)
- {
- const gchar *name = l->data;
- JsonNode *node = json_object_get_member (object, name);
-
- switch (JSON_NODE_TYPE (node))
- {
- case JSON_NODE_ARRAY:
- g_print ("%sFound array (member: `%s', len: %d)\n",
- indent_str,
- name,
- json_array_get_length (json_node_get_array (node)));
- print_array (indent + 1, json_node_get_array (node));
- break;
- case JSON_NODE_OBJECT:
- g_print ("%sFound object (member: `%s', size: %d)\n",
- indent_str,
- name,
- json_object_get_size (json_node_get_object (node)));
- print_object (indent + 1, json_node_get_object (node));
- break;
- case JSON_NODE_VALUE:
- g_print ("%sFound value (member: `%s')\n", indent_str, name);
- print_value (indent + 1, node);
- break;
- case JSON_NODE_NULL:
- g_print ("%sFound null (member: `%s')\n", indent_str, name);
- break;
- }
- }
-
- g_list_free (members);
-}
-
-int
-main (int argc, char *argv[])
-{
- JsonParser *parser;
- gint i;
-
- g_type_init ();
-
- parser = json_parser_new ();
-
- for (i = 0; i < n_test_arrays; i++)
- {
- GError *error = NULL;
- JsonNode *node;
- JsonArray *array;
- gchar *var_name;
-
- if (!json_parser_load_from_data (parser, test_arrays[i], -1, &error))
- {
- g_print ("* Error, test %d:\n"
- "* \t%s:\n"
- "* Message: %s\n",
- i, test_arrays[i], error->message);
- g_error_free (error);
- g_object_unref (parser);
- return EXIT_FAILURE;
- }
-
- node = json_parser_get_root (parser);
- g_assert (node != NULL);
- g_assert (JSON_NODE_TYPE (node) == JSON_NODE_ARRAY);
-
- array = json_node_get_array (node);
- g_assert (array != NULL);
-
- g_print ("*** Test %d: '%s' ***\n", i, test_arrays[i]);
- if (json_parser_has_assignment (parser, &var_name))
- g_print ("*** Test %d: assigns '%s'\n", i, var_name);
-
- print_array (1, array);
- }
-
- g_object_unref (parser);
-
- return EXIT_SUCCESS;
-}