5 #include <glib-object.h>
7 #include <json-glib/json-glib.h>
8 #include <json-glib/json-gobject.h>
10 #define TEST_TYPE_OBJECT (test_object_get_type ())
11 #define TEST_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_OBJECT, TestObject))
12 #define TEST_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_OBJECT))
13 #define TEST_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_OBJECT, TestObjectClass))
14 #define TEST_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_TYPE_OBJECT))
15 #define TEST_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_TYPE_OBJECT, TestObjectClass))
17 typedef struct _TestObject TestObject;
18 typedef struct _TestObjectClass TestObjectClass;
22 GObject parent_instance;
29 struct _TestObjectClass
31 GObjectClass parent_class;
34 GType test_object_get_type (void);
36 /*** implementation ***/
47 G_DEFINE_TYPE (TestObject, test_object, G_TYPE_OBJECT);
50 test_object_finalize (GObject *gobject)
52 g_free (TEST_OBJECT (gobject)->baz);
54 G_OBJECT_CLASS (test_object_parent_class)->finalize (gobject);
58 test_object_set_property (GObject *gobject,
66 TEST_OBJECT (gobject)->foo = g_value_get_int (value);
69 TEST_OBJECT (gobject)->bar = g_value_get_boolean (value);
72 g_free (TEST_OBJECT (gobject)->baz);
73 TEST_OBJECT (gobject)->baz = g_value_dup_string (value);
76 G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
81 test_object_get_property (GObject *gobject,
89 g_value_set_int (value, TEST_OBJECT (gobject)->foo);
92 g_value_set_boolean (value, TEST_OBJECT (gobject)->bar);
95 g_value_set_string (value, TEST_OBJECT (gobject)->baz);
98 G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
103 test_object_class_init (TestObjectClass *klass)
105 GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
107 gobject_class->set_property = test_object_set_property;
108 gobject_class->get_property = test_object_get_property;
109 gobject_class->finalize = test_object_finalize;
111 g_object_class_install_property (gobject_class,
113 g_param_spec_int ("foo", "Foo", "Foo",
116 g_object_class_install_property (gobject_class,
118 g_param_spec_boolean ("bar", "Bar", "Bar",
121 g_object_class_install_property (gobject_class,
123 g_param_spec_string ("baz", "Baz", "Baz",
129 test_object_init (TestObject *object)
133 object->baz = g_strdup ("Test");
137 test_serialize (void)
139 TestObject *obj = g_object_new (TEST_TYPE_OBJECT, "bar", TRUE, NULL);
143 data = json_gobject_to_data (G_OBJECT (obj), &len);
145 g_assert (data != NULL);
146 g_assert_cmpint (len, >, 0);
147 g_assert_cmpint (len, ==, strlen (data));
149 if (g_test_verbose ())
150 g_print ("TestObject:\n%s\n", data);
153 g_object_unref (obj);
160 g_test_init (&argc, &argv, NULL);
162 g_test_add_func ("/serialize/gobject", test_serialize);
164 return g_test_run ();