diff options
| author | Emmanuele Bassi <ebassi@gnome.org> | 2011-06-19 12:08:03 +0100 | 
|---|---|---|
| committer | Emmanuele Bassi <ebassi@gnome.org> | 2011-06-19 12:08:03 +0100 | 
| commit | 78e896c64e8cbccf1b55291521f11a3f5093080a (patch) | |
| tree | d685216ec40f95a82808f5ec2d52322148d07bed /json-glib/tests/object.c | |
| parent | cef1f16cec529eeb03338f995a8b3d32b262df8b (diff) | |
| download | json-glib-78e896c64e8cbccf1b55291521f11a3f5093080a.tar.gz | |
build: Rename test binaries
It's pointless to add the '-test' suffix to files under the tests/ directory.
Diffstat (limited to 'json-glib/tests/object.c')
| -rw-r--r-- | json-glib/tests/object.c | 165 | 
1 files changed, 165 insertions, 0 deletions
| diff --git a/json-glib/tests/object.c b/json-glib/tests/object.c new file mode 100644 index 0000000..2f00078 --- /dev/null +++ b/json-glib/tests/object.c @@ -0,0 +1,165 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <glib.h> +#include <json-glib/json-glib.h> + +static void +test_empty_object (void) +{ +  JsonObject *object = json_object_new (); + +  g_assert_cmpint (json_object_get_size (object), ==, 0); +  g_assert (json_object_get_members (object) == NULL); + +  json_object_unref (object); +} + +static void +test_add_member (void) +{ +  JsonObject *object = json_object_new (); +  JsonNode *node = json_node_new (JSON_NODE_NULL); + +  g_assert_cmpint (json_object_get_size (object), ==, 0); + +  json_object_set_member (object, "Null", node); +  g_assert_cmpint (json_object_get_size (object), ==, 1); + +  node = json_object_get_member (object, "Null"); +  g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_NULL); + +  json_object_unref (object); +} + +static void +test_set_member (void) +{ +  JsonNode *node = json_node_new (JSON_NODE_VALUE); +  JsonObject *object = json_object_new (); + +  g_assert_cmpint (json_object_get_size (object), ==, 0); + +  json_node_set_string (node, "Hello"); + +  json_object_set_member (object, "String", node); +  g_assert_cmpint (json_object_get_size (object), ==, 1); + +  node = json_object_get_member (object, "String"); +  g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_VALUE); +  g_assert_cmpstr (json_node_get_string (node), ==, "Hello"); + +  json_object_set_string_member (object, "String", "World"); +  node = json_object_get_member (object, "String"); +  g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_VALUE); +  g_assert_cmpstr (json_node_get_string (node), ==, "World"); + +  json_object_set_string_member (object, "String", "Goodbye"); +  g_assert_cmpstr (json_object_get_string_member (object, "String"), ==, "Goodbye"); + +  json_object_unref (object); +} + +static void +test_remove_member (void) +{ +  JsonObject *object = json_object_new (); +  JsonNode *node = json_node_new (JSON_NODE_NULL); + +  json_object_set_member (object, "Null", node); + +  json_object_remove_member (object, "Null"); +  g_assert_cmpint (json_object_get_size (object), ==, 0); + +  json_object_unref (object); +} + +typedef struct _TestForeachFixture +{ +  gint n_members; +} TestForeachFixture; + +static const struct { +  const gchar *member_name; +  JsonNodeType member_type; +  GType member_gtype; +} type_verify[] = { +  { "integer", JSON_NODE_VALUE, G_TYPE_INT64 }, +  { "boolean", JSON_NODE_VALUE, G_TYPE_BOOLEAN }, +  { "string", JSON_NODE_VALUE, G_TYPE_STRING }, +  { "null", JSON_NODE_NULL, G_TYPE_INVALID } +}; + +static void +verify_foreach (JsonObject  *object, +                const gchar *member_name, +                JsonNode    *member_node, +                gpointer     user_data) +{ +  TestForeachFixture *fixture = user_data; +  gint i; + +  for (i = 0; i < G_N_ELEMENTS (type_verify); i++) +    { +      if (strcmp (member_name, type_verify[i].member_name) == 0) +        { +          g_assert (json_node_get_node_type (member_node) == type_verify[i].member_type); +          g_assert (json_node_get_value_type (member_node) == type_verify[i].member_gtype); +          break; +        } +    } + +  fixture->n_members += 1; +} + +static void +test_foreach_member (void) +{ +  JsonObject *object = json_object_new (); +  TestForeachFixture fixture = { 0, }; + +  json_object_set_int_member (object, "integer", 42); +  json_object_set_boolean_member (object, "boolean", TRUE); +  json_object_set_string_member (object, "string", "hello"); +  json_object_set_null_member (object, "null"); + +  json_object_foreach_member (object, verify_foreach, &fixture); + +  g_assert_cmpint (fixture.n_members, ==, json_object_get_size (object)); + +  json_object_unref (object); +} + +static void +test_empty_member (void) +{ +  JsonObject *object = json_object_new (); + +  json_object_set_string_member (object, "string", ""); +  g_assert (json_object_has_member (object, "string")); +  g_assert_cmpstr (json_object_get_string_member (object, "string"), ==, ""); + +  json_object_set_string_member (object, "null", NULL); +  g_assert (json_object_has_member (object, "null")); +  g_assert (json_object_get_string_member (object, "null") == NULL); + +  json_object_unref (object); +} + +int +main (int   argc, +      char *argv[]) +{ +  g_type_init (); +  g_test_init (&argc, &argv, NULL); + +  g_test_add_func ("/object/empty-object", test_empty_object); +  g_test_add_func ("/object/add-member", test_add_member); +  g_test_add_func ("/object/set-member", test_set_member); +  g_test_add_func ("/object/remove-member", test_remove_member); +  g_test_add_func ("/object/foreach-member", test_foreach_member); +  g_test_add_func ("/object/empty-member", test_empty_member); + +  return g_test_run (); +} | 
