# HG changeset patch # User Atul Varma # Date 1246427251 25200 # Node ID 5d3d3b25f23fc2e47ab732fac24b966d15352ca2 # Parent 3f8a2db496f53f9318e352608cd866b8ce36bb63 JS wrapped Python functions can now return booleans. diff -r 3f8a2db496f5 -r 5d3d3b25f23f test_pymonkey.py --- a/test_pymonkey.py Tue Jun 30 22:42:48 2009 -0700 +++ b/test_pymonkey.py Tue Jun 30 22:47:31 2009 -0700 @@ -22,6 +22,18 @@ self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), u"o hai") + def testJsWrappedPythonFunctionReturnsTrue(self): + def hai2u(): + return True + self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), + True) + + def testJsWrappedPythonFunctionReturnsFalse(self): + def hai2u(): + return False + self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), + False) + def testJsWrappedPythonFunctionReturnsSmallInt(self): def hai2u(): return 5 diff -r 3f8a2db496f5 -r 5d3d3b25f23f utils.c --- a/utils.c Tue Jun 30 22:42:48 2009 -0700 +++ b/utils.c Tue Jun 30 22:47:31 2009 -0700 @@ -50,6 +50,16 @@ if (PyFloat_Check(object)) return PYM_doubleToJsval(cx, PyFloat_AS_DOUBLE(object), rval); + if (object == Py_True) { + *rval = JSVAL_TRUE; + return 0; + } + + if (object == Py_False) { + *rval = JSVAL_FALSE; + return 0; + } + // TODO: Support more types. PyErr_SetString(PyExc_NotImplementedError, "Data type conversion not implemented.");