[pygobject] Add test cases for GValue signal arguments
- From: Martin Pitt <martinpitt src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pygobject] Add test cases for GValue signal arguments
- Date: Tue, 11 Sep 2012 07:44:23 +0000 (UTC)
commit 4559247553b792db956f69c9674c12344d719c82
Author: Martin Pitt <martinpitt gnome org>
Date: Tue Sep 11 09:43:14 2012 +0200
Add test cases for GValue signal arguments
These cover various types, (u)int(64) and string.
Keep the test case for implicit int64 GValues disabled, as this currently does
not work and it is not clear whether it should:
https://bugzilla.gnome.org/show_bug.cgi?id=683775
tests/test_signal.py | 41 +++++++++++++++++++++++++++++++++++++++++
tests/testhelpermodule.c | 17 +++++++++++++++++
2 files changed, 58 insertions(+), 0 deletions(-)
---
diff --git a/tests/test_signal.py b/tests/test_signal.py
index 510d8af..bffb43b 100644
--- a/tests/test_signal.py
+++ b/tests/test_signal.py
@@ -362,6 +362,7 @@ class CM(GObject.GObject):
test_string=(l, str, (str, )),
test_object=(l, object, (object, )),
test_paramspec=(l, GObject.ParamSpec, ()),
+ test_gvalue=(l, GObject.Value, (GObject.Value, )),
test_gvalue_ret=(l, GObject.Value, (GObject.TYPE_GTYPE, )),
)
@@ -429,6 +430,46 @@ class _TestCMarshaller:
self.obj.set_property("testprop", 42)
self.assertTrue(self.notify_called)
+ def testTestValue(self):
+ # implicit int
+ rv = self.obj.emit("test-gvalue", 42)
+ self.assertEqual(rv, 42)
+
+ # explicit float
+ v = GObject.Value()
+ v.init(gfloat)
+ v.set_float(1.234)
+ rv = self.obj.emit("test-gvalue", v)
+ self.assertAlmostEqual(rv, 1.234, 4)
+
+ # implicit float
+ rv = self.obj.emit("test-gvalue", 1.234)
+ self.assertAlmostEqual(rv, 1.234, 4)
+
+ # explicit int64
+ v = GObject.Value()
+ v.init(gint64)
+ v.set_int64(GObject.G_MAXINT64)
+ rv = self.obj.emit("test-gvalue", v)
+ self.assertEqual(rv, GObject.G_MAXINT64)
+
+ # implicit int64
+ # does not work, see https://bugzilla.gnome.org/show_bug.cgi?id=683775
+ #rv = self.obj.emit("test-gvalue", GObject.G_MAXINT64)
+ #self.assertEqual(rv, GObject.G_MAXINT64)
+
+ # explicit uint64
+ v = GObject.Value()
+ v.init(GObject.TYPE_UINT64)
+ v.set_uint64(GObject.G_MAXUINT64)
+ rv = self.obj.emit("test-gvalue", v)
+ self.assertEqual(rv, GObject.G_MAXUINT64)
+
+ # implicit uint64
+ # does not work, see https://bugzilla.gnome.org/show_bug.cgi?id=683775
+ #rv = self.obj.emit("test-gvalue", GObject.G_MAXUINT64)
+ #self.assertEqual(rv, GObject.G_MAXUINT64)
+
def testTestReturnValue(self):
self.assertEqual(self.obj.emit("test-gvalue-ret", GObject.TYPE_INT),
GObject.G_MAXINT)
diff --git a/tests/testhelpermodule.c b/tests/testhelpermodule.c
index fa95752..608b8b1 100644
--- a/tests/testhelpermodule.c
+++ b/tests/testhelpermodule.c
@@ -358,6 +358,19 @@ test_paramspec_callback (GObject *object)
}
static GValue *
+test_gvalue_callback (GObject *object, const GValue *v)
+{
+ GValue *ret = g_malloc0 (sizeof (GValue));
+
+ g_return_val_if_fail (G_IS_OBJECT (object), NULL);
+ g_return_val_if_fail (G_IS_VALUE (v), NULL);
+
+ g_value_init (ret, G_VALUE_TYPE (v));
+ g_value_copy (v, ret);
+ return ret;
+}
+
+static GValue *
test_gvalue_ret_callback (GObject *object, GType type)
{
GValue *ret = g_malloc0 (sizeof (GValue));
@@ -440,6 +453,10 @@ connectcallbacks (GObject *object)
G_CALLBACK (test_paramspec_callback),
NULL);
g_signal_connect (G_OBJECT (object),
+ "test_gvalue",
+ G_CALLBACK (test_gvalue_callback),
+ NULL);
+ g_signal_connect (G_OBJECT (object),
"test_gvalue_ret",
G_CALLBACK (test_gvalue_ret_callback),
NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]