pybank r95 - in trunk: . bank



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]