pybank r95 - in trunk: . bank
- From: marklee svn gnome org
- To: svn-commits-list gnome org
- Subject: pybank r95 - in trunk: . bank
- Date: Sat, 28 Mar 2009 21:10:44 +0000 (UTC)
Author: marklee
Date: Sat Mar 28 21:10:44 2009
New Revision: 95
URL: http://svn.gnome.org/viewvc/pybank?rev=95&view=rev
Log:
Make the float and double unit tests pass.
* bank/bank-argument.c (pyg_argument_from_pyobject,
pyg_argument_to_pyobject):
* bank/btypes.py (Callable.type_check): Add proper support for floats
and doubles.
* everything_unittest.py (TestGIEverything.testFloat): Adjust the number
of decimal places the test uses to determine whether a value is almost
equal.
Modified:
trunk/ChangeLog
trunk/bank/bank-argument.c
trunk/bank/btypes.py
trunk/everything_unittest.py
Modified: trunk/bank/bank-argument.c
==============================================================================
--- trunk/bank/bank-argument.c (original)
+++ trunk/bank/bank-argument.c Sat Mar 28 21:10:44 2009
@@ -45,6 +45,12 @@
case GI_TYPE_TAG_BOOLEAN:
arg.v_int = PyInt_AsLong(object);
break;
+ case GI_TYPE_TAG_FLOAT:
+ arg.v_float = (float)PyFloat_AsDouble(object);
+ break;
+ case GI_TYPE_TAG_DOUBLE:
+ arg.v_double = PyFloat_AsDouble(object);
+ break;
case GI_TYPE_TAG_INTERFACE:
if (object == Py_None)
arg.v_pointer = NULL;
@@ -102,6 +108,9 @@
case GI_TYPE_TAG_INT:
obj = PyInt_FromLong(arg->v_int);
break;
+ case GI_TYPE_TAG_FLOAT:
+ obj = PyFloat_FromDouble(arg->v_float);
+ break;
case GI_TYPE_TAG_DOUBLE:
obj = PyFloat_FromDouble(arg->v_double);
break;
Modified: trunk/bank/btypes.py
==============================================================================
--- trunk/bank/btypes.py (original)
+++ trunk/bank/btypes.py Sat Mar 28 21:10:44 2009
@@ -46,6 +46,10 @@
repo.TYPE_TAG_UINT8):
if not isinstance(value, int):
raise TypeError("%s must be int, not %s" % (name, type(value).__name__))
+ elif tag in (repo.TYPE_TAG_FLOAT,
+ repo.TYPE_TAG_DOUBLE):
+ if not isinstance(value, float):
+ raise TypeError("%s must be float, not %s" % (name, type(value).__name__))
elif tag == repo.TYPE_TAG_INTERFACE:
# TODO
pass
Modified: trunk/everything_unittest.py
==============================================================================
--- trunk/everything_unittest.py (original)
+++ trunk/everything_unittest.py Sat Mar 28 21:10:44 2009
@@ -116,8 +116,8 @@
self.assertRaises(TypeError, Everything.test_size, -3)
def testFloat(self):
- self.assertAlmostEqual(3.14, Everything.test_float(3.14))
- self.assertAlmostEqual(-3.14, Everything.test_float(-3.14))
+ self.assertAlmostEqual(3.14, Everything.test_float(3.14), 6)
+ self.assertAlmostEqual(-3.14, Everything.test_float(-3.14), 6)
self.assertRaises(TypeError, Everything.test_float, 'a')
def testDouble(self):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]