Mercurial > pymonkey
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()