tizen 2.3.1 release
[external/libjson-glib.git] / TC / unit / TC_Gobject / utc_libjson_json_serialize_simple_func.c
1 #include <tet_api.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <string.h>
5 #include <glib-object.h>
6
7 #include <json-glib/json-glib.h>
8
9
10 static void startup(void);
11 static void cleanup(void);
12
13 void (*tet_startup)(void) = startup;
14 void (*tet_cleanup)(void) = cleanup;
15
16 static void utc_libjson_json_serialize_simple_func_01(void);
17
18 enum {
19         POSITIVE_TC_IDX = 0x01,
20         NEGATIVE_TC_IDX,
21 };
22
23 struct tet_testlist tet_testlist[] = {
24         { utc_libjson_json_serialize_simple_func_01, POSITIVE_TC_IDX },
25         { NULL, 0 }
26 };
27
28 #define TEST_TYPE_OBJECT                (test_object_get_type ())
29 #define TEST_OBJECT(obj)                (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_OBJECT, TestObject))
30 #define TEST_IS_OBJECT(obj)             (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_OBJECT))
31 #define TEST_OBJECT_CLASS(klass)        (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_OBJECT, TestObjectClass))
32 #define TEST_IS_OBJECT_CLASS(klass)     (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_TYPE_OBJECT))
33 #define TEST_OBJECT_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_TYPE_OBJECT, TestObjectClass))
34
35 typedef struct _TestObject              TestObject;
36 typedef struct _TestObjectClass         TestObjectClass;
37
38 struct _TestObject
39 {
40         GObject parent_instance;
41
42         gint foo;
43         gboolean bar;
44         gchar *baz;
45 };
46
47 struct _TestObjectClass
48 {
49         GObjectClass parent_class;
50 };
51
52 GType test_object_get_type (void);
53
54
55 static void startup(void)
56 {
57         g_type_init();
58 }
59
60 static void cleanup(void)
61 {
62 }
63
64
65 /*** implementation ***/
66
67 enum
68 {
69         PROP_0,
70
71         PROP_FOO,
72         PROP_BAR,
73         PROP_BAZ
74 };
75
76 G_DEFINE_TYPE (TestObject, test_object, G_TYPE_OBJECT);
77
78 static void
79 test_object_finalize (GObject *gobject)
80 {
81         g_free (TEST_OBJECT (gobject)->baz);
82
83         G_OBJECT_CLASS (test_object_parent_class)->finalize (gobject);
84 }
85
86 static void
87 test_object_set_property (GObject      *gobject,
88                                                         guint         prop_id,
89                                                         const GValue *value,
90                                                         GParamSpec   *pspec)
91 {
92         switch (prop_id)
93         {
94                 case PROP_FOO:
95                         TEST_OBJECT (gobject)->foo = g_value_get_int (value);
96                         break;
97                 case PROP_BAR:
98                         TEST_OBJECT (gobject)->bar = g_value_get_boolean (value);
99                         break;
100                 case PROP_BAZ:
101                         g_free (TEST_OBJECT (gobject)->baz);
102                         TEST_OBJECT (gobject)->baz = g_value_dup_string (value);
103                         break;
104                 default:
105                         G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
106         }
107 }
108
109 static void
110 test_object_get_property (GObject    *gobject,
111                                                         guint       prop_id,
112                                                         GValue     *value,
113                                                         GParamSpec *pspec)
114 {
115         switch (prop_id)
116         {
117                 case PROP_FOO:
118                         g_value_set_int (value, TEST_OBJECT (gobject)->foo);
119                         break;
120                 case PROP_BAR:
121                         g_value_set_boolean (value, TEST_OBJECT (gobject)->bar);
122                         break;
123                 case PROP_BAZ:
124                         g_value_set_string (value, TEST_OBJECT (gobject)->baz);
125                         break;
126                 default:
127                         G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
128         }
129 }
130
131 static void
132 test_object_class_init (TestObjectClass *klass)
133 {
134         GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
135
136         gobject_class->set_property = test_object_set_property;
137         gobject_class->get_property = test_object_get_property;
138         gobject_class->finalize = test_object_finalize;
139
140         g_object_class_install_property (gobject_class,
141                                                                         PROP_FOO,
142                                                                         g_param_spec_int ("foo", "Foo", "Foo",
143                                                                                                                 0, G_MAXINT, 42,
144                                                                                                                 G_PARAM_READWRITE));
145         g_object_class_install_property (gobject_class,
146                                                                         PROP_BAR,
147                                                                         g_param_spec_boolean ("bar", "Bar", "Bar",
148                                                                                                                 FALSE,
149                                                                                                                 G_PARAM_READWRITE));
150         g_object_class_install_property (gobject_class,
151                                                                         PROP_BAZ,
152                                                                         g_param_spec_string ("baz", "Baz", "Baz",
153                                                                                                                 NULL,
154                                                                                                                 G_PARAM_READWRITE));
155 }
156
157 static void
158 test_object_init (TestObject *object)
159 {
160         object->foo = 42;
161         object->bar = FALSE;
162         object->baz = g_strdup ("Test");
163 }
164
165 /**
166  * @brief Positive test case of json_serialize_simple()
167  */
168 static void utc_libjson_json_serialize_simple_func_01(void)
169 {
170         TestObject *obj = g_object_new(TEST_TYPE_OBJECT, "bar", TRUE, NULL);
171         gchar *data;
172         gsize len;
173
174         data = json_gobject_to_data(G_OBJECT(obj), &len);
175
176         dts_check_ne("json_serialize_simple", data, NULL);
177         dts_check_gt("json_serialize_simple", len, 0);
178         dts_check_eq("json_serialize_simple", len, strlen(data));
179
180         g_free (data);
181         g_object_unref (obj);
182 }
183
184