summaryrefslogtreecommitdiff
path: root/json-glib/tests/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'json-glib/tests/parser.c')
-rw-r--r--json-glib/tests/parser.c482
1 files changed, 153 insertions, 329 deletions
diff --git a/json-glib/tests/parser.c b/json-glib/tests/parser.c
index bd23798..afe3653 100644
--- a/json-glib/tests/parser.c
+++ b/json-glib/tests/parser.c
@@ -120,10 +120,11 @@ static const gchar *test_nested_objects[] = {
static const struct {
const gchar *str;
const gchar *var;
+ JsonNodeType type;
} test_assignments[] = {
- { "var foo = [ false, false, true ]", "foo" },
- { "var bar = [ true, 42 ];", "bar" },
- { "var baz = { \"foo\" : false }", "baz" }
+ { "var foo = [ false, false, true ]", "foo", JSON_NODE_ARRAY },
+ { "var bar = [ true, 42 ];", "bar", JSON_NODE_ARRAY },
+ { "var baz = { \"foo\" : false }", "baz", JSON_NODE_OBJECT }
};
static const struct
@@ -148,24 +149,9 @@ test_empty_with_parser (JsonParser *parser)
{
GError *error = NULL;
- if (g_test_verbose ())
- g_print ("checking json_parser_load_from_data with empty string...\n");
-
- if (!json_parser_load_from_data (parser, test_empty_string, -1, &error))
- {
- if (g_test_verbose ())
- g_print ("Error: %s\n", error->message);
- g_error_free (error);
- g_object_unref (parser);
- exit (1);
- }
- else
- {
- if (g_test_verbose ())
- g_print ("checking json_parser_get_root...\n");
-
- g_assert_null (json_parser_get_root (parser));
- }
+ json_parser_load_from_data (parser, test_empty_string, -1, &error);
+ g_assert_no_error (error);
+ g_assert_null (json_parser_get_root (parser));
}
static void
@@ -194,42 +180,25 @@ test_base_value (void)
parser = json_parser_new ();
g_assert_true (JSON_IS_PARSER (parser));
- if (g_test_verbose ())
- g_print ("checking json_parser_load_from_data with base-values...\n");
-
for (guint i = 0; i < n_test_base_values; i++)
{
GError *error = NULL;
- if (!json_parser_load_from_data (parser, test_base_values[i].str, -1, &error))
- {
- if (g_test_verbose ())
- g_print ("Error: %s\n", error->message);
-
- g_error_free (error);
- g_object_unref (parser);
- exit (1);
- }
- else
- {
- JsonNode *root;
-
- g_assert_nonnull (json_parser_get_root (parser));
-
- root = json_parser_get_root (parser);
- g_assert_nonnull (root);
- g_assert_null (json_node_get_parent (root));
-
- if (g_test_verbose ())
- g_print ("checking root node is of the desired type %s...\n",
- test_base_values[i].gtype == G_TYPE_INVALID ? "<null>"
- : g_type_name (test_base_values[i].gtype));
- g_assert_cmpint (JSON_NODE_TYPE (root), ==, test_base_values[i].type);
- g_assert_cmpint (json_node_get_value_type (root), ==, test_base_values[i].gtype);
-
- if (test_base_values[i].verify_value)
- test_base_values[i].verify_value (root);
- }
+ json_parser_load_from_data (parser, test_base_values[i].str, -1, &error);
+ g_assert_no_error (error);
+
+ JsonNode *root = json_parser_get_root (parser);
+
+ g_assert_nonnull (root);
+ g_assert_null (json_node_get_parent (root));
+
+ g_test_message ("Checking root node type '%s'...",
+ json_node_type_name (root));
+ g_assert_cmpint (JSON_NODE_TYPE (root), ==, test_base_values[i].type);
+ g_assert_cmpint (json_node_get_value_type (root), ==, test_base_values[i].gtype);
+
+ if (test_base_values[i].verify_value)
+ test_base_values[i].verify_value (root);
}
g_object_unref (parser);
@@ -244,37 +213,19 @@ test_empty_array (void)
parser = json_parser_new ();
g_assert_true (JSON_IS_PARSER (parser));
- if (g_test_verbose ())
- g_print ("checking json_parser_load_from_data with empty array...\n");
+ json_parser_load_from_data (parser, test_empty_array_string, -1, &error);
- if (!json_parser_load_from_data (parser, test_empty_array_string, -1, &error))
- {
- if (g_test_verbose ())
- g_print ("Error: %s\n", error->message);
- g_error_free (error);
- g_object_unref (parser);
- exit (1);
- }
- else
- {
- JsonNode *root;
- JsonArray *array;
-
- g_assert_nonnull (json_parser_get_root (parser));
+ g_assert_no_error (error);
- if (g_test_verbose ())
- g_print ("checking root node is an array...\n");
- root = json_parser_get_root (parser);
- g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_ARRAY);
- g_assert_null (json_node_get_parent (root));
+ JsonNode *root = json_parser_get_root (parser);
+ g_assert_nonnull (root);
+ g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_ARRAY);
+ g_assert_null (json_node_get_parent (root));
- array = json_node_get_array (root);
- g_assert_nonnull (array);
+ JsonArray *array = json_node_get_array (root);
+ g_assert_nonnull (array);
- if (g_test_verbose ())
- g_print ("checking array is empty...\n");
- g_assert_cmpint (json_array_get_length (array), ==, 0);
- }
+ g_assert_cmpint (json_array_get_length (array), ==, 0);
g_object_unref (parser);
}
@@ -287,56 +238,34 @@ test_simple_array (void)
parser = json_parser_new ();
g_assert_true (JSON_IS_PARSER (parser));
- if (g_test_verbose ())
- g_print ("checking json_parser_load_from_data with simple arrays...\n");
-
for (guint i = 0; i < n_test_simple_arrays; i++)
{
GError *error = NULL;
- if (g_test_verbose ())
- g_print ("Parsing: '%s'\n", test_simple_arrays[i].str);
-
- if (!json_parser_load_from_data (parser, test_simple_arrays[i].str, -1, &error))
- {
- if (g_test_verbose ())
- g_print ("Error: %s\n", error->message);
-
- g_error_free (error);
- g_object_unref (parser);
- exit (1);
- }
- else
- {
- JsonNode *root, *node;
- JsonArray *array;
-
- g_assert_nonnull (json_parser_get_root (parser));
-
- if (g_test_verbose ())
- g_print ("checking root node is an array...\n");
- root = json_parser_get_root (parser);
- g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_ARRAY);
- g_assert_null (json_node_get_parent (root));
-
- array = json_node_get_array (root);
- g_assert_nonnull (array);
-
- if (g_test_verbose ())
- g_print ("checking array is of the desired length (%d)...\n",
- test_simple_arrays[i].len);
- g_assert_cmpint (json_array_get_length (array), ==, test_simple_arrays[i].len);
-
- if (g_test_verbose ())
- g_print ("checking element %d is of the desired type %s...\n",
- test_simple_arrays[i].element,
- g_type_name (test_simple_arrays[i].gtype));
- node = json_array_get_element (array, test_simple_arrays[i].element);
- g_assert_nonnull (node);
- g_assert_true (json_node_get_parent (node) == root);
- g_assert_cmpint (JSON_NODE_TYPE (node), ==, test_simple_arrays[i].type);
- g_assert_cmpint (json_node_get_value_type (node), ==, test_simple_arrays[i].gtype);
- }
+ g_test_message ("Parsing: '%s'", test_simple_arrays[i].str);
+
+ json_parser_load_from_data (parser, test_simple_arrays[i].str, -1, &error);
+
+ JsonNode *root = json_parser_get_root (parser);
+ g_assert_nonnull (root);
+
+ g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_ARRAY);
+ g_assert_null (json_node_get_parent (root));
+
+ JsonArray *array = json_node_get_array (root);
+ g_assert_nonnull (array);
+
+ g_assert_cmpint (json_array_get_length (array), ==, test_simple_arrays[i].len);
+
+ g_test_message ("checking element %d is of the desired type %s...",
+ test_simple_arrays[i].element,
+ g_type_name (test_simple_arrays[i].gtype));
+
+ JsonNode *node = json_array_get_element (array, test_simple_arrays[i].element);
+ g_assert_nonnull (node);
+ g_assert_true (json_node_get_parent (node) == root);
+ g_assert_cmpint (JSON_NODE_TYPE (node), ==, test_simple_arrays[i].type);
+ g_assert_cmpint (json_node_get_value_type (node), ==, test_simple_arrays[i].gtype);
}
g_object_unref (parser);
@@ -350,42 +279,21 @@ test_nested_array (void)
parser = json_parser_new ();
g_assert_true (JSON_IS_PARSER (parser));
- if (g_test_verbose ())
- g_print ("checking json_parser_load_from_data with nested arrays...\n");
-
for (guint i = 0; i < n_test_nested_arrays; i++)
{
GError *error = NULL;
- if (!json_parser_load_from_data (parser, test_nested_arrays[i], -1, &error))
- {
- if (g_test_verbose ())
- g_print ("Error: %s\n", error->message);
-
- g_error_free (error);
- g_object_unref (parser);
- exit (1);
- }
- else
- {
- JsonNode *root;
- JsonArray *array;
-
- g_assert_nonnull (json_parser_get_root (parser));
-
- if (g_test_verbose ())
- g_print ("checking root node is an array...\n");
- root = json_parser_get_root (parser);
- g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_ARRAY);
- g_assert_null (json_node_get_parent (root));
-
- array = json_node_get_array (root);
- g_assert_nonnull (array);
-
- if (g_test_verbose ())
- g_print ("checking array is not empty...\n");
- g_assert_cmpint (json_array_get_length (array), >, 0);
- }
+ json_parser_load_from_data (parser, test_nested_arrays[i], -1, &error);
+ g_assert_no_error (error);
+
+ JsonNode *root = json_parser_get_root (parser);
+ g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_ARRAY);
+ g_assert_null (json_node_get_parent (root));
+
+ JsonArray *array = json_node_get_array (root);
+ g_assert_nonnull (array);
+
+ g_assert_cmpint (json_array_get_length (array), >, 0);
}
g_object_unref (parser);
@@ -400,38 +308,17 @@ test_empty_object (void)
parser = json_parser_new ();
g_assert_true (JSON_IS_PARSER (parser));
- if (g_test_verbose ())
- g_print ("checking json_parser_load_from_data with empty object...\n");
-
- if (!json_parser_load_from_data (parser, test_empty_object_string, -1, &error))
- {
- if (g_test_verbose ())
- g_print ("Error: %s\n", error->message);
- g_error_free (error);
- g_object_unref (parser);
- exit (1);
- }
- else
- {
- JsonNode *root;
- JsonObject *object;
-
- g_assert_nonnull (json_parser_get_root (parser));
-
- if (g_test_verbose ())
- g_print ("checking root node is an object...\n");
- root = json_parser_get_root (parser);
- g_assert_null (json_node_get_parent (root));
- g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT);
- g_assert_null (json_node_get_parent (root));
+ json_parser_load_from_data (parser, test_empty_object_string, -1, &error);
+ g_assert_no_error (error);
- object = json_node_get_object (root);
- g_assert_nonnull (object);
+ JsonNode *root = json_parser_get_root (parser);
+ g_assert_nonnull (root);
+ g_assert_null (json_node_get_parent (root));
+ g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT);
- if (g_test_verbose ())
- g_print ("checking object is empty...\n");
- g_assert_cmpint (json_object_get_size (object), ==, 0);
- }
+ JsonObject *object = json_node_get_object (root);
+ g_assert_nonnull (object);
+ g_assert_cmpint (json_object_get_size (object), ==, 0);
g_object_unref (parser);
}
@@ -444,53 +331,35 @@ test_simple_object (void)
parser = json_parser_new ();
g_assert_true (JSON_IS_PARSER (parser));
- if (g_test_verbose ())
- g_print ("checking json_parser_load_from_data with simple objects...\n");
-
for (guint i = 0; i < n_test_simple_objects; i++)
{
GError *error = NULL;
- if (!json_parser_load_from_data (parser, test_simple_objects[i].str, -1, &error))
- {
- if (g_test_verbose ())
- g_print ("Error: %s\n", error->message);
-
- g_error_free (error);
- g_object_unref (parser);
- exit (1);
- }
- else
- {
- JsonNode *root, *node;
- JsonObject *object;
-
- g_assert_nonnull (json_parser_get_root (parser));
-
- if (g_test_verbose ())
- g_print ("checking root node is an object...\n");
- root = json_parser_get_root (parser);
- g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT);
- g_assert_null (json_node_get_parent (root));
-
- object = json_node_get_object (root);
- g_assert_nonnull (object);
-
- if (g_test_verbose ())
- g_print ("checking object is of the desired size (%d)...\n",
- test_simple_objects[i].size);
- g_assert_cmpint (json_object_get_size (object), ==, test_simple_objects[i].size);
-
- if (g_test_verbose ())
- g_print ("checking member '%s' is of the desired type %s...\n",
- test_simple_objects[i].member,
- g_type_name (test_simple_objects[i].gtype));
- node = json_object_get_member (object, test_simple_objects[i].member);
- g_assert_nonnull (node);
- g_assert_true (json_node_get_parent (node) == root);
- g_assert_cmpint (JSON_NODE_TYPE (node), ==, test_simple_objects[i].type);
- g_assert_cmpint (json_node_get_value_type (node), ==, test_simple_objects[i].gtype);
- }
+ json_parser_load_from_data (parser, test_simple_objects[i].str, -1, &error);
+ g_assert_no_error (error);
+
+ JsonNode *root = json_parser_get_root (parser);
+ g_assert_nonnull (root);
+
+ g_test_message ("checking root node is an object...");
+ g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT);
+ g_assert_null (json_node_get_parent (root));
+
+ JsonObject *object = json_node_get_object (root);
+ g_assert_nonnull (object);
+
+ g_test_message ("checking object is of the desired size '%d'...",
+ test_simple_objects[i].size);
+ g_assert_cmpint (json_object_get_size (object), ==, test_simple_objects[i].size);
+
+ g_test_message ("checking member '%s' exists and is of the desired type '%s'...",
+ test_simple_objects[i].member,
+ g_type_name (test_simple_objects[i].gtype));
+ JsonNode *node = json_object_get_member (object, test_simple_objects[i].member);
+ g_assert_nonnull (node);
+ g_assert_true (json_node_get_parent (node) == root);
+ g_assert_cmpint (JSON_NODE_TYPE (node), ==, test_simple_objects[i].type);
+ g_assert_cmpint (json_node_get_value_type (node), ==, test_simple_objects[i].gtype);
}
g_object_unref (parser);
@@ -504,42 +373,25 @@ test_nested_object (void)
parser = json_parser_new ();
g_assert_true (JSON_IS_PARSER (parser));
- if (g_test_verbose ())
- g_print ("checking json_parser_load_from_data with nested objects...\n");
-
for (guint i = 0; i < n_test_nested_objects; i++)
{
GError *error = NULL;
- if (!json_parser_load_from_data (parser, test_nested_objects[i], -1, &error))
- {
- if (g_test_verbose ())
- g_print ("Error: %s\n", error->message);
-
- g_error_free (error);
- g_object_unref (parser);
- exit (1);
- }
- else
- {
- JsonNode *root;
- JsonObject *object;
-
- g_assert_nonnull (json_parser_get_root (parser));
-
- if (g_test_verbose ())
- g_print ("checking root node is an object...\n");
- root = json_parser_get_root (parser);
- g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT);
- g_assert_null (json_node_get_parent (root));
-
- object = json_node_get_object (root);
- g_assert_nonnull (object);
-
- if (g_test_verbose ())
- g_print ("checking object is not empty...\n");
- g_assert_cmpint (json_object_get_size (object), >, 0);
- }
+ json_parser_load_from_data (parser, test_nested_objects[i], -1, &error);
+ g_assert_no_error (error);
+
+ JsonNode *root = json_parser_get_root (parser);
+ g_assert_nonnull (root);
+
+ g_test_message ("checking root node is an object...");
+ g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT);
+ g_assert_null (json_node_get_parent (root));
+
+ JsonObject *object = json_node_get_object (root);
+ g_assert_nonnull (object);
+
+ g_test_message ("checking object is not empty...");
+ g_assert_cmpint (json_object_get_size (object), >, 0);
}
g_object_unref (parser);
@@ -553,34 +405,25 @@ test_assignment (void)
parser = json_parser_new ();
g_assert_true (JSON_IS_PARSER (parser));
- if (g_test_verbose ())
- g_print ("checking json_parser_load_from_data with assignments...\n");
-
for (guint i = 0; i < n_test_assignments; i++)
{
GError *error = NULL;
- if (!json_parser_load_from_data (parser, test_assignments[i].str, -1, &error))
- {
- if (g_test_verbose ())
- g_print ("Error: %s\n", error->message);
-
- g_error_free (error);
- g_object_unref (parser);
- exit (1);
- }
- else
- {
- gchar *var;
-
- if (g_test_verbose ())
- g_print ("checking assignment...\n");
-
- g_assert_true (json_parser_has_assignment (parser, &var));
- g_assert_nonnull (var);
- g_assert_cmpstr (var, ==, test_assignments[i].var);
- g_assert_nonnull (json_parser_get_root (parser));
- }
+ json_parser_load_from_data (parser, test_assignments[i].str, -1, &error);
+ g_assert_no_error (error);
+
+ g_test_message ("checking variable '%s' is assigned...",
+ test_assignments[i].var);
+
+ char *var = NULL;
+ g_assert_true (json_parser_has_assignment (parser, &var));
+ g_assert_nonnull (var);
+ g_assert_cmpstr (var, ==, test_assignments[i].var);
+
+ g_test_message ("checking for a root of the desired type...");
+ JsonNode *root = json_parser_get_root (parser);
+ g_assert_nonnull (root);
+ g_assert_cmpint (JSON_NODE_TYPE (root), ==, test_assignments[i].type);
}
g_object_unref (parser);
@@ -594,52 +437,33 @@ test_unicode_escape (void)
parser = json_parser_new ();
g_assert_true (JSON_IS_PARSER (parser));
- if (g_test_verbose ())
- g_print ("checking json_parser_load_from_data with unicode escape...\n");
-
for (guint i = 0; i < n_test_unicode; i++)
{
GError *error = NULL;
- if (!json_parser_load_from_data (parser, test_unicode[i].str, -1, &error))
- {
- if (g_test_verbose ())
- g_print ("Error: %s\n", error->message);
-
- g_error_free (error);
- g_object_unref (parser);
- exit (1);
- }
- else
- {
- JsonNode *root, *node;
- JsonObject *object;
-
- g_assert_nonnull (json_parser_get_root (parser));
-
- if (g_test_verbose ())
- g_print ("checking root node is an object...\n");
- root = json_parser_get_root (parser);
- g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT);
-
- object = json_node_get_object (root);
- g_assert_true (object);
-
- if (g_test_verbose ())
- g_print ("checking object is not empty...\n");
- g_assert_cmpint (json_object_get_size (object), >, 0);
-
- node = json_object_get_member (object, test_unicode[i].member);
- g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_VALUE);
-
- if (g_test_verbose ())
- g_print ("checking simple string equality...\n");
- g_assert_cmpstr (json_node_get_string (node), ==, test_unicode[i].match);
-
- if (g_test_verbose ())
- g_print ("checking for valid UTF-8...\n");
- g_assert_true (g_utf8_validate (json_node_get_string (node), -1, NULL));
- }
+ json_parser_load_from_data (parser, test_unicode[i].str, -1, &error);
+ g_assert_no_error (error);
+
+ g_test_message ("checking root node is an object...");
+ JsonNode *root = json_parser_get_root (parser);
+ g_assert_nonnull (root);
+ g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT);
+
+ JsonObject *object = json_node_get_object (root);
+ g_assert_nonnull (object);
+
+ g_test_message ("checking object is not empty...");
+ g_assert_cmpint (json_object_get_size (object), >, 0);
+
+ g_test_message ("checking for object member '%s'...", test_unicode[i].member);
+ JsonNode *node = json_object_get_member (object, test_unicode[i].member);
+ g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_VALUE);
+
+ g_test_message ("checking simple string equality...");
+ g_assert_cmpstr (json_node_get_string (node), ==, test_unicode[i].match);
+
+ g_test_message ("checking for valid UTF-8...");
+ g_assert_true (g_utf8_validate (json_node_get_string (node), -1, NULL));
}
g_object_unref (parser);