~ubuntu-branches/ubuntu/oneiric/json-glib/oneiric

« back to all changes in this revision

Viewing changes to json-glib/tests/array-test.c

  • Committer: Package Import Robot
  • Author(s): Martin Pitt
  • Date: 2011-09-12 09:08:07 UTC
  • mfrom: (1.1.8 upstream)
  • Revision ID: package-import@ubuntu.com-20110912090807-3br793wiakn3yr8r
Tags: 0.13.90-1
* New upstream release.
* Drop 0001-Fix-GVariant-creation-on-some-architectures-bug-6504.patch:
  Applied upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include <stdio.h>
2
 
#include <stdlib.h>
3
 
#include <string.h>
4
 
 
5
 
#include <glib.h>
6
 
#include <json-glib/json-glib.h>
7
 
 
8
 
static void
9
 
test_empty_array (void)
10
 
{
11
 
  JsonArray *array = json_array_new ();
12
 
 
13
 
  g_assert_cmpint (json_array_get_length (array), ==, 0);
14
 
  g_assert (json_array_get_elements (array) == NULL);
15
 
 
16
 
  json_array_unref (array);
17
 
}
18
 
 
19
 
static void
20
 
test_add_element (void)
21
 
{
22
 
  JsonArray *array = json_array_new ();
23
 
  JsonNode *node = json_node_new (JSON_NODE_NULL);
24
 
 
25
 
  g_assert_cmpint (json_array_get_length (array), ==, 0);
26
 
 
27
 
  json_array_add_element (array, node);
28
 
  g_assert_cmpint (json_array_get_length (array), ==, 1);
29
 
 
30
 
  node = json_array_get_element (array, 0);
31
 
  g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_NULL);
32
 
 
33
 
  json_array_unref (array);
34
 
}
35
 
 
36
 
static void
37
 
test_remove_element (void)
38
 
{
39
 
  JsonArray *array = json_array_new ();
40
 
  JsonNode *node = json_node_new (JSON_NODE_NULL);
41
 
 
42
 
  json_array_add_element (array, node);
43
 
 
44
 
  json_array_remove_element (array, 0);
45
 
  g_assert_cmpint (json_array_get_length (array), ==, 0);
46
 
 
47
 
  json_array_unref (array);
48
 
}
49
 
 
50
 
typedef struct _TestForeachFixture
51
 
{
52
 
  GList *elements;
53
 
  gint n_elements;
54
 
  gint iterations;
55
 
} TestForeachFixture;
56
 
 
57
 
static const struct {
58
 
  JsonNodeType element_type;
59
 
  GType element_gtype;
60
 
} type_verify[] = {
61
 
  { JSON_NODE_VALUE, G_TYPE_INT64   },
62
 
  { JSON_NODE_VALUE, G_TYPE_BOOLEAN },
63
 
  { JSON_NODE_VALUE, G_TYPE_STRING  },
64
 
  { JSON_NODE_NULL,  G_TYPE_INVALID }
65
 
};
66
 
 
67
 
static void
68
 
verify_foreach (JsonArray *array,
69
 
                guint      index_,
70
 
                JsonNode  *element_node,
71
 
                gpointer   user_data)
72
 
{
73
 
  TestForeachFixture *fixture = user_data;
74
 
 
75
 
  g_assert (g_list_find (fixture->elements, element_node));
76
 
  g_assert (json_node_get_node_type (element_node) == type_verify[index_].element_type);
77
 
  g_assert (json_node_get_value_type (element_node) == type_verify[index_].element_gtype);
78
 
 
79
 
  fixture->iterations += 1;
80
 
}
81
 
 
82
 
static void
83
 
test_foreach_element (void)
84
 
{
85
 
  JsonArray *array = json_array_new ();
86
 
  TestForeachFixture fixture = { 0, };
87
 
 
88
 
  json_array_add_int_element (array, 42);
89
 
  json_array_add_boolean_element (array, TRUE);
90
 
  json_array_add_string_element (array, "hello");
91
 
  json_array_add_null_element (array);
92
 
 
93
 
  fixture.elements = json_array_get_elements (array);
94
 
  g_assert (fixture.elements != NULL);
95
 
 
96
 
  fixture.n_elements = json_array_get_length (array);
97
 
  g_assert_cmpint (fixture.n_elements, ==, g_list_length (fixture.elements));
98
 
 
99
 
  fixture.iterations = 0;
100
 
 
101
 
  json_array_foreach_element (array, verify_foreach, &fixture);
102
 
 
103
 
  g_assert_cmpint (fixture.iterations, ==, fixture.n_elements);
104
 
 
105
 
  g_list_free (fixture.elements);
106
 
  json_array_unref (array);
107
 
}
108
 
 
109
 
int
110
 
main (int   argc,
111
 
      char *argv[])
112
 
{
113
 
  g_type_init ();
114
 
  g_test_init (&argc, &argv, NULL);
115
 
 
116
 
  g_test_add_func ("/array/empty-array", test_empty_array);
117
 
  g_test_add_func ("/array/add-element", test_add_element);
118
 
  g_test_add_func ("/array/remove-element", test_remove_element);
119
 
  g_test_add_func ("/array/foreach-element", test_foreach_element);
120
 
 
121
 
  return g_test_run ();
122
 
}