changeset 3:d6a0819ca6ca

Added return value support for doubles.
author Atul Varma <varmaa@toolness.com>
date Sun, 28 Jun 2009 12:38:36 -0700
parents 2f6bdc9f7245
children 2711b636f8e6
files pymonkey.c test_pymonkey.py
diffstat 2 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/pymonkey.c	Sun Jun 28 12:26:46 2009 -0700
+++ b/pymonkey.c	Sun Jun 28 12:38:36 2009 -0700
@@ -15,6 +15,11 @@
   if (JSVAL_IS_INT(value))
     return PyInt_FromLong(JSVAL_TO_INT(value));
 
+  if (JSVAL_IS_DOUBLE(value)) {
+    jsdouble *doubleRef = JSVAL_TO_DOUBLE(value);
+    return PyFloat_FromDouble(*doubleRef);
+  }
+
   // TODO: Support more types.
 
   Py_INCREF(Py_None);
@@ -78,11 +83,13 @@
     return NULL;
   }
 
+  PyObject *pyRval = PYM_jsvalToPyObject(rval);
+
   JS_EndRequest(cx);
   JS_DestroyContext(cx);
   JS_DestroyRuntime(rt);
 
-  return PYM_jsvalToPyObject(rval);
+  return pyRval;
 }
 
 static PyMethodDef PYM_methods[] = {
--- a/test_pymonkey.py	Sun Jun 28 12:26:46 2009 -0700
+++ b/test_pymonkey.py	Sun Jun 28 12:38:36 2009 -0700
@@ -2,9 +2,13 @@
 import pymonkey
 
 class PymonkeyTests(unittest.TestCase):
-    def test_evaluate(self):
+    def testEvaluateReturnsIntegers(self):
         self.assertEqual(pymonkey.evaluate('1+3', '<string>', 1),
                          4)
 
+    def testEvaluateReturnsFloats(self):
+        self.assertEqual(pymonkey.evaluate('1.1+3', '<string>', 1),
+                         4.1)
+
 if __name__ == '__main__':
     unittest.main()