summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo J. A. M. Carneiro <gjc@src.gnome.org>2005-10-02 16:42:13 +0000
committerGustavo J. A. M. Carneiro <gjc@src.gnome.org>2005-10-02 16:42:13 +0000
commitc277e618c7f35416e4c36e3161fd412b7414f73f (patch)
tree676354328025f2d30d78b87e08b5f0ded02b567e
parent92df600efcf19616e013714315787802e93af2e4 (diff)
downloadpygtk-c277e618c7f35416e4c36e3161fd412b7414f73f.tar.gz
guint64 property fix
-rw-r--r--ChangeLog13
-rw-r--r--gobject/pygtype.c18
-rw-r--r--tests/test_properties.py5
3 files changed, 25 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 593f140b..6310ea54 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2005-10-02 Gustavo J. A. M. Carneiro <gjc@gnome.org>
+
+ * tests/test_properties.py (PropertyObject.__gproperties__)
+ (PropertyObject.do_get_property, PropertyObject.do_set_property)
+ (TestProperties.testUint64): Add guint64 property test case, by
+ Johan Dahlin.
+
+ * gobject/pygtype.c (pyg_value_from_pyobject): Accept conversion
+ from PyInt (not just PyLong) to guint64.
+ (_wrap_g_type_wrapper__get_children): Fix sign/unsigned warning.
+ (_wrap_g_type_wrapper__get_interfaces): idem.
+ (pyg_value_from_pyobject): idem.
+
2005-10-01 Gustavo J. A. M. Carneiro <gjc@gnome.org>
* tests/test_subtype.py (TestSubType.testGObjectNewError): Add new
diff --git a/gobject/pygtype.c b/gobject/pygtype.c
index 9b4dcda6..ebb9dd8c 100644
--- a/gobject/pygtype.c
+++ b/gobject/pygtype.c
@@ -95,7 +95,7 @@ _wrap_g_type_wrapper__get_fundamental(PyGTypeWrapper *self, void *closure)
static PyObject *
_wrap_g_type_wrapper__get_children(PyGTypeWrapper *self, void *closure)
{
- int n_children, i;
+ guint n_children, i;
GType *children;
PyObject *retval;
@@ -112,7 +112,7 @@ _wrap_g_type_wrapper__get_children(PyGTypeWrapper *self, void *closure)
static PyObject *
_wrap_g_type_wrapper__get_interfaces(PyGTypeWrapper *self, void *closure)
{
- int n_interfaces, i;
+ guint n_interfaces, i;
GType *interfaces;
PyObject *retval;
@@ -774,12 +774,12 @@ pyg_value_from_pyobject(GValue *value, PyObject *obj)
}
break;
case G_TYPE_UINT64:
- g_value_set_uint64(value, PyLong_AsUnsignedLongLong(obj));
- if (PyErr_Occurred()) {
- g_value_unset(value);
- PyErr_Clear();
- return -1;
- }
+ if (PyInt_Check(obj))
+ g_value_set_uint64(value, PyInt_AsLong(obj));
+ else if (PyLong_Check(obj))
+ g_value_set_uint64(value, PyLong_AsUnsignedLongLong(obj));
+ else
+ return -1;
break;
case G_TYPE_ENUM:
{
@@ -793,7 +793,7 @@ pyg_value_from_pyobject(GValue *value, PyObject *obj)
break;
case G_TYPE_FLAGS:
{
- guint val = 0;
+ gint val = 0;
if (pyg_flags_get_value(G_VALUE_TYPE(value), obj, &val) < 0) {
PyErr_Clear();
return -1;
diff --git a/tests/test_properties.py b/tests/test_properties.py
index 0df6481c..de290bee 100644
--- a/tests/test_properties.py
+++ b/tests/test_properties.py
@@ -44,7 +44,7 @@ class PropertyObject(GObject):
elif pspec.name == 'construct-only':
self._construct_only = value
elif pspec.name == 'uint64':
- self._uint64
+ self._uint64 = value
else:
raise AssertionError
@@ -102,10 +102,11 @@ class TestProperties(unittest.TestCase):
self.assertRaises(TypeError,
obj.set_property, 'construct-only', '456')
- def _testUint64(self):
+ def testUint64(self):
obj = new(PropertyObject)
self.assertEqual(obj.props.uint64, 0)
obj.props.uint64 = 1L
self.assertEqual(obj.props.uint64, 1L)
obj.props.uint64 = 1
self.assertEqual(obj.props.uint64, 1L)
+