Mercurial > pymonkey
annotate test_pymonkey.py @ 49:7401af070bb8
Moved README to Sphinx documentation. Keeping the rendered docs in the repository so that they can be viewed via HG and locally by people who don't have Sphinx installed.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Tue, 07 Jul 2009 09:26:36 -0700 |
parents | 3f4982759e55 |
children | 427b01954b22 |
rev | line source |
---|---|
46
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
1 import sys |
0 | 2 import unittest |
46
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
3 |
0 | 4 import pymonkey |
5 | |
6 class PymonkeyTests(unittest.TestCase): | |
16
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
7 def _evaljs(self, code): |
9
032cfc448079
Added pymonkey.Runtime and pymonkey.Context as new types.
Atul Varma <varmaa@toolness.com>
parents:
8
diff
changeset
|
8 rt = pymonkey.Runtime() |
032cfc448079
Added pymonkey.Runtime and pymonkey.Context as new types.
Atul Varma <varmaa@toolness.com>
parents:
8
diff
changeset
|
9 cx = rt.new_context() |
16
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
10 obj = cx.new_object() |
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
11 cx.init_standard_classes(obj) |
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
12 return cx.evaluate_script(obj, code, '<string>', 1) |
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
13 |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
14 def _evalJsWrappedPyFunc(self, func, code): |
24
74b7ad049542
Added very primitive support for calling python functions from JS.
Atul Varma <varmaa@toolness.com>
parents:
22
diff
changeset
|
15 cx = pymonkey.Runtime().new_context() |
74b7ad049542
Added very primitive support for calling python functions from JS.
Atul Varma <varmaa@toolness.com>
parents:
22
diff
changeset
|
16 obj = cx.new_object() |
74b7ad049542
Added very primitive support for calling python functions from JS.
Atul Varma <varmaa@toolness.com>
parents:
22
diff
changeset
|
17 cx.init_standard_classes(obj) |
37
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
18 jsfunc = cx.new_function(func, func.__name__) |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
19 cx.define_property(obj, func.__name__, jsfunc) |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
20 return cx.evaluate_script(obj, code, '<string>', 1) |
24
74b7ad049542
Added very primitive support for calling python functions from JS.
Atul Varma <varmaa@toolness.com>
parents:
22
diff
changeset
|
21 |
46
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
22 def assertRaises(self, exctype, func, *args): |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
23 was_raised = False |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
24 try: |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
25 func(*args) |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
26 except exctype, e: |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
27 self.last_exception = e |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
28 was_raised = True |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
29 self.assertTrue(was_raised) |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
30 |
43
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
31 def testJsWrappedPythonFuncPassesContext(self): |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
32 contexts = [] |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
33 |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
34 def func(cx): |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
35 contexts.append(cx) |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
36 return True |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
37 |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
38 code = "func()" |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
39 cx = pymonkey.Runtime().new_context() |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
40 obj = cx.new_object() |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
41 cx.init_standard_classes(obj) |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
42 jsfunc = cx.new_function(func, func.__name__) |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
43 cx.define_property(obj, func.__name__, jsfunc) |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
44 cx.evaluate_script(obj, code, '<string>', 1) |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
45 self.assertEqual(contexts[0], cx) |
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
46 |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
47 def testJsWrappedPythonFunctionReturnsUnicode(self): |
43
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
48 def hai2u(cx): |
29
608d086d12e3
Added a new PYM_pyObjectToJsval() function that only supports unicode for the moment. Also, whereever we're assuming that Py_UNICODE is UCS-2, we're surrounding such code with #ifndef Py_UNICODE_WIDE.
Atul Varma <varmaa@toolness.com>
parents:
28
diff
changeset
|
49 return u"o hai" |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
50 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
51 u"o hai") |
24
74b7ad049542
Added very primitive support for calling python functions from JS.
Atul Varma <varmaa@toolness.com>
parents:
22
diff
changeset
|
52 |
46
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
53 def testJsWrappedPythonFunctionThrowsException(self): |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
54 def hai2u(cx): |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
55 raise Exception("hello") |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
56 self.assertRaises(pymonkey.error, |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
57 self._evalJsWrappedPyFunc, |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
58 hai2u, 'hai2u()') |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
59 self.assertEqual(self.last_exception.message, |
47
3f4982759e55
Converting JS exceptions into Python exceptions is now doable, albeit not yet implemented, thanks to the discovery of JSOPTION_DONT_REPORT_UNCAUGHT. Also, JS warnings are now converted into Python warnings.
Atul Varma <varmaa@toolness.com>
parents:
46
diff
changeset
|
60 "hello") |
46
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
61 |
45
03aec8572461
Python-wrapped JS functions can now return null/None.
Atul Varma <varmaa@toolness.com>
parents:
43
diff
changeset
|
62 def testJsWrappedPythonFunctionReturnsNone(self): |
03aec8572461
Python-wrapped JS functions can now return null/None.
Atul Varma <varmaa@toolness.com>
parents:
43
diff
changeset
|
63 def hai2u(cx): |
03aec8572461
Python-wrapped JS functions can now return null/None.
Atul Varma <varmaa@toolness.com>
parents:
43
diff
changeset
|
64 pass |
03aec8572461
Python-wrapped JS functions can now return null/None.
Atul Varma <varmaa@toolness.com>
parents:
43
diff
changeset
|
65 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
03aec8572461
Python-wrapped JS functions can now return null/None.
Atul Varma <varmaa@toolness.com>
parents:
43
diff
changeset
|
66 None) |
03aec8572461
Python-wrapped JS functions can now return null/None.
Atul Varma <varmaa@toolness.com>
parents:
43
diff
changeset
|
67 |
34
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
68 def testJsWrappedPythonFunctionReturnsTrue(self): |
43
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
69 def hai2u(cx): |
34
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
70 return True |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
71 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
72 True) |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
73 |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
74 def testJsWrappedPythonFunctionReturnsFalse(self): |
43
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
75 def hai2u(cx): |
34
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
76 return False |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
77 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
78 False) |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
79 |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
80 def testJsWrappedPythonFunctionReturnsSmallInt(self): |
43
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
81 def hai2u(cx): |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
82 return 5 |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
83 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
84 5) |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
85 |
32
abf14cba9ef5
JS wrapped Python functions can now return floats.
Atul Varma <varmaa@toolness.com>
parents:
31
diff
changeset
|
86 def testJsWrappedPythonFunctionReturnsFloat(self): |
43
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
87 def hai2u(cx): |
32
abf14cba9ef5
JS wrapped Python functions can now return floats.
Atul Varma <varmaa@toolness.com>
parents:
31
diff
changeset
|
88 return 5.1 |
abf14cba9ef5
JS wrapped Python functions can now return floats.
Atul Varma <varmaa@toolness.com>
parents:
31
diff
changeset
|
89 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
abf14cba9ef5
JS wrapped Python functions can now return floats.
Atul Varma <varmaa@toolness.com>
parents:
31
diff
changeset
|
90 5.1) |
abf14cba9ef5
JS wrapped Python functions can now return floats.
Atul Varma <varmaa@toolness.com>
parents:
31
diff
changeset
|
91 |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
92 def testJsWrappedPythonFunctionReturnsNegativeInt(self): |
43
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
93 def hai2u(cx): |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
94 return -5 |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
95 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
96 -5) |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
97 |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
98 def testJsWrappedPythonFunctionReturnsBigInt(self): |
43
5727675b1bcb
JS-wrapped python functions now take a context object as their first parameter.
Atul Varma <varmaa@toolness.com>
parents:
41
diff
changeset
|
99 def hai2u(cx): |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
100 return 2147483647 |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
101 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
102 2147483647) |
24
74b7ad049542
Added very primitive support for calling python functions from JS.
Atul Varma <varmaa@toolness.com>
parents:
22
diff
changeset
|
103 |
37
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
104 def testDefinePropertyWorksWithObject(self): |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
105 cx = pymonkey.Runtime().new_context() |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
106 obj = cx.new_object() |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
107 cx.init_standard_classes(obj) |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
108 foo = cx.new_object() |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
109 cx.define_property(obj, "foo", foo) |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
110 self.assertEqual( |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
111 cx.evaluate_script(obj, 'foo', '<string>', 1), |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
112 foo |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
113 ) |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
114 |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
115 def testDefinePropertyWorksWithString(self): |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
116 cx = pymonkey.Runtime().new_context() |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
117 obj = cx.new_object() |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
118 cx.init_standard_classes(obj) |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
119 foo = cx.new_object() |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
120 cx.define_property(obj, "foo", u"hello") |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
121 self.assertEqual( |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
122 cx.evaluate_script(obj, 'foo', '<string>', 1), |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
123 u"hello" |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
124 ) |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
125 |
22
988a8998c75f
JS objects reflected into Python are now identity-preserving, though the implementation for this is pretty bad right now.
Atul Varma <varmaa@toolness.com>
parents:
20
diff
changeset
|
126 def testObjectIsIdentityPreserving(self): |
988a8998c75f
JS objects reflected into Python are now identity-preserving, though the implementation for this is pretty bad right now.
Atul Varma <varmaa@toolness.com>
parents:
20
diff
changeset
|
127 cx = pymonkey.Runtime().new_context() |
988a8998c75f
JS objects reflected into Python are now identity-preserving, though the implementation for this is pretty bad right now.
Atul Varma <varmaa@toolness.com>
parents:
20
diff
changeset
|
128 obj = cx.new_object() |
988a8998c75f
JS objects reflected into Python are now identity-preserving, though the implementation for this is pretty bad right now.
Atul Varma <varmaa@toolness.com>
parents:
20
diff
changeset
|
129 cx.init_standard_classes(obj) |
47
3f4982759e55
Converting JS exceptions into Python exceptions is now doable, albeit not yet implemented, thanks to the discovery of JSOPTION_DONT_REPORT_UNCAUGHT. Also, JS warnings are now converted into Python warnings.
Atul Varma <varmaa@toolness.com>
parents:
46
diff
changeset
|
130 cx.evaluate_script(obj, 'var foo = {bar: 1}', '<string>', 1) |
27
21045074139f
Based on my new understanding of JSString */jschar * thanks to folks on #jsapi, I've removed the requirement that SpiderMonkey be in UTF-8 mode to translate strings between Python and SpiderMonkey.
Atul Varma <varmaa@toolness.com>
parents:
24
diff
changeset
|
131 self.assertTrue(isinstance(cx.get_property(obj, u"foo"), |
22
988a8998c75f
JS objects reflected into Python are now identity-preserving, though the implementation for this is pretty bad right now.
Atul Varma <varmaa@toolness.com>
parents:
20
diff
changeset
|
132 pymonkey.Object)) |
27
21045074139f
Based on my new understanding of JSString */jschar * thanks to folks on #jsapi, I've removed the requirement that SpiderMonkey be in UTF-8 mode to translate strings between Python and SpiderMonkey.
Atul Varma <varmaa@toolness.com>
parents:
24
diff
changeset
|
133 self.assertTrue(cx.get_property(obj, u"foo") is |
21045074139f
Based on my new understanding of JSString */jschar * thanks to folks on #jsapi, I've removed the requirement that SpiderMonkey be in UTF-8 mode to translate strings between Python and SpiderMonkey.
Atul Varma <varmaa@toolness.com>
parents:
24
diff
changeset
|
134 cx.get_property(obj, u"foo")) |
22
988a8998c75f
JS objects reflected into Python are now identity-preserving, though the implementation for this is pretty bad right now.
Atul Varma <varmaa@toolness.com>
parents:
20
diff
changeset
|
135 |
17
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
136 def testObjectGetattrWorks(self): |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
137 cx = pymonkey.Runtime().new_context() |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
138 obj = cx.new_object() |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
139 cx.init_standard_classes(obj) |
47
3f4982759e55
Converting JS exceptions into Python exceptions is now doable, albeit not yet implemented, thanks to the discovery of JSOPTION_DONT_REPORT_UNCAUGHT. Also, JS warnings are now converted into Python warnings.
Atul Varma <varmaa@toolness.com>
parents:
46
diff
changeset
|
140 cx.evaluate_script(obj, 'var boop = 5', '<string>', 1) |
17
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
141 cx.evaluate_script(obj, 'this["blarg\u2026"] = 5', '<string>', 1) |
27
21045074139f
Based on my new understanding of JSString */jschar * thanks to folks on #jsapi, I've removed the requirement that SpiderMonkey be in UTF-8 mode to translate strings between Python and SpiderMonkey.
Atul Varma <varmaa@toolness.com>
parents:
24
diff
changeset
|
142 self.assertEqual(cx.get_property(obj, u"beans"), |
17
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
143 pymonkey.undefined) |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
144 self.assertEqual(cx.get_property(obj, u"blarg\u2026"), 5) |
27
21045074139f
Based on my new understanding of JSString */jschar * thanks to folks on #jsapi, I've removed the requirement that SpiderMonkey be in UTF-8 mode to translate strings between Python and SpiderMonkey.
Atul Varma <varmaa@toolness.com>
parents:
24
diff
changeset
|
145 self.assertEqual(cx.get_property(obj, u"boop"), 5) |
17
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
146 |
16
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
147 def testContextIsInstance(self): |
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
148 cx = pymonkey.Runtime().new_context() |
9
032cfc448079
Added pymonkey.Runtime and pymonkey.Context as new types.
Atul Varma <varmaa@toolness.com>
parents:
8
diff
changeset
|
149 self.assertTrue(isinstance(cx, pymonkey.Context)) |
032cfc448079
Added pymonkey.Runtime and pymonkey.Context as new types.
Atul Varma <varmaa@toolness.com>
parents:
8
diff
changeset
|
150 |
16
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
151 def testContextTypeCannotBeInstantiated(self): |
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
152 self.assertRaises(TypeError, pymonkey.Context) |
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
153 |
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
154 def testObjectIsInstance(self): |
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
155 obj = pymonkey.Runtime().new_context().new_object() |
13 | 156 self.assertTrue(isinstance(obj, pymonkey.Object)) |
37
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
157 self.assertFalse(isinstance(obj, pymonkey.Function)) |
13 | 158 |
16
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
159 def testObjectTypeCannotBeInstantiated(self): |
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
160 self.assertRaises(TypeError, pymonkey.Object) |
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
161 |
37
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
162 def testFunctionIsInstance(self): |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
163 def boop(): |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
164 pass |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
165 obj = pymonkey.Runtime().new_context().new_function(boop, "boop") |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
166 self.assertTrue(isinstance(obj, pymonkey.Object)) |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
167 self.assertTrue(isinstance(obj, pymonkey.Function)) |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
168 |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
169 def testFunctionTypeCannotBeInstantiated(self): |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
170 self.assertRaises(TypeError, pymonkey.Function) |
d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
171 |
16
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
172 def testGetRuntimeWorks(self): |
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
173 rt = pymonkey.Runtime() |
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
174 cx = rt.new_context() |
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
175 self.assertEqual(cx.get_runtime(), rt) |
14
9edcdb4ab12d
added an init_standard_classes() method to context objects.
Atul Varma <varmaa@toolness.com>
parents:
13
diff
changeset
|
176 |
8
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
177 def testUndefinedCannotBeInstantiated(self): |
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
178 self.assertRaises(TypeError, pymonkey.undefined) |
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
179 |
46
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
180 def testEvaluateThrowsException(self): |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
181 self.assertRaises(pymonkey.error, |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
182 self._evaljs, 'hai2u()') |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
183 self.assertEqual(self.last_exception.message, |
47
3f4982759e55
Converting JS exceptions into Python exceptions is now doable, albeit not yet implemented, thanks to the discovery of JSOPTION_DONT_REPORT_UNCAUGHT. Also, JS warnings are now converted into Python warnings.
Atul Varma <varmaa@toolness.com>
parents:
46
diff
changeset
|
184 'ReferenceError: hai2u is not defined') |
46
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
185 |
8
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
186 def testEvaluateReturnsUndefined(self): |
16
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
187 retval = self._evaljs("") |
8
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
188 self.assertTrue(retval is pymonkey.undefined) |
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
189 |
28
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
190 def testEvaluateReturnsSMPUnicode(self): |
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
191 # This is 'LINEAR B SYLLABLE B008 A', in the supplementary |
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
192 # multilingual plane (SMP). |
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
193 retval = self._evaljs("'\uD800\uDC00'") |
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
194 self.assertEqual(retval, u'\U00010000') |
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
195 self.assertEqual(retval.encode('utf-16'), |
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
196 '\xff\xfe\x00\xd8\x00\xdc') |
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
197 |
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
198 def testEvaluateReturnsBMPUnicode(self): |
16
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
199 retval = self._evaljs("'o hai\u2026'") |
7
0d0ce6415b66
Added support for unicode strings.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
200 self.assertTrue(type(retval) == unicode) |
0d0ce6415b66
Added support for unicode strings.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
201 self.assertEqual(retval, u'o hai\u2026') |
0d0ce6415b66
Added support for unicode strings.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
202 |
20
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
203 def testEvaluateReturnsObject(self): |
41
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
204 cx = pymonkey.Runtime().new_context() |
20
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
205 obj = cx.new_object() |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
206 cx.init_standard_classes(obj) |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
207 obj = cx.evaluate_script(obj, '({boop: 1})', '<string>', 1) |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
208 self.assertTrue(isinstance(obj, pymonkey.Object)) |
27
21045074139f
Based on my new understanding of JSString */jschar * thanks to folks on #jsapi, I've removed the requirement that SpiderMonkey be in UTF-8 mode to translate strings between Python and SpiderMonkey.
Atul Varma <varmaa@toolness.com>
parents:
24
diff
changeset
|
209 self.assertEqual(cx.get_property(obj, u"boop"), 1) |
20
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
210 |
40
8a7abd0bb48d
Renamed PYM_newJSFunction() to PYM_newJSFunctionFromCallable(). PYM_newJSObject() now returns objects of type PYM_JSFunctionType as needed.
Atul Varma <varmaa@toolness.com>
parents:
37
diff
changeset
|
211 def testEvaluateReturnsFunction(self): |
41
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
212 cx = pymonkey.Runtime().new_context() |
40
8a7abd0bb48d
Renamed PYM_newJSFunction() to PYM_newJSFunctionFromCallable(). PYM_newJSObject() now returns objects of type PYM_JSFunctionType as needed.
Atul Varma <varmaa@toolness.com>
parents:
37
diff
changeset
|
213 obj = cx.new_object() |
8a7abd0bb48d
Renamed PYM_newJSFunction() to PYM_newJSFunctionFromCallable(). PYM_newJSObject() now returns objects of type PYM_JSFunctionType as needed.
Atul Varma <varmaa@toolness.com>
parents:
37
diff
changeset
|
214 cx.init_standard_classes(obj) |
8a7abd0bb48d
Renamed PYM_newJSFunction() to PYM_newJSFunctionFromCallable(). PYM_newJSObject() now returns objects of type PYM_JSFunctionType as needed.
Atul Varma <varmaa@toolness.com>
parents:
37
diff
changeset
|
215 obj = cx.evaluate_script(obj, '(function boop() { return 1; })', |
8a7abd0bb48d
Renamed PYM_newJSFunction() to PYM_newJSFunctionFromCallable(). PYM_newJSObject() now returns objects of type PYM_JSFunctionType as needed.
Atul Varma <varmaa@toolness.com>
parents:
37
diff
changeset
|
216 '<string>', 1) |
8a7abd0bb48d
Renamed PYM_newJSFunction() to PYM_newJSFunctionFromCallable(). PYM_newJSObject() now returns objects of type PYM_JSFunctionType as needed.
Atul Varma <varmaa@toolness.com>
parents:
37
diff
changeset
|
217 self.assertTrue(isinstance(obj, pymonkey.Function)) |
8a7abd0bb48d
Renamed PYM_newJSFunction() to PYM_newJSFunctionFromCallable(). PYM_newJSObject() now returns objects of type PYM_JSFunctionType as needed.
Atul Varma <varmaa@toolness.com>
parents:
37
diff
changeset
|
218 |
41
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
219 def testCallFunctionRaisesErrorOnBadFuncArgs(self): |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
220 cx = pymonkey.Runtime().new_context() |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
221 obj = cx.new_object() |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
222 obj = cx.evaluate_script( |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
223 obj, |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
224 '(function boop(a, b) { return a+b+this.c; })', |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
225 '<string>', 1 |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
226 ) |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
227 self.assertRaises( |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
228 NotImplementedError, |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
229 cx.call_function, |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
230 obj, obj, (1, self) |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
231 ) |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
232 |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
233 def testCallFunctionRaisesErrorFromJS(self): |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
234 cx = pymonkey.Runtime().new_context() |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
235 obj = cx.new_object() |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
236 obj = cx.evaluate_script( |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
237 obj, |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
238 '(function boop(a, b) { blarg(); })', |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
239 '<string>', 1 |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
240 ) |
46
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
241 self.assertRaises(pymonkey.error, |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
242 cx.call_function, |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
243 obj, obj, (1,)) |
a0f677cfc679
Added basic functionality for passing useful exceptions between Python and JS code.
Atul Varma <varmaa@toolness.com>
parents:
45
diff
changeset
|
244 self.assertEqual(self.last_exception.message, |
47
3f4982759e55
Converting JS exceptions into Python exceptions is now doable, albeit not yet implemented, thanks to the discovery of JSOPTION_DONT_REPORT_UNCAUGHT. Also, JS warnings are now converted into Python warnings.
Atul Varma <varmaa@toolness.com>
parents:
46
diff
changeset
|
245 'ReferenceError: blarg is not defined') |
41
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
246 |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
247 def testCallFunctionWorks(self): |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
248 cx = pymonkey.Runtime().new_context() |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
249 obj = cx.new_object() |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
250 thisArg = cx.new_object() |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
251 cx.define_property(thisArg, "c", 3) |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
252 cx.init_standard_classes(obj) |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
253 obj = cx.evaluate_script( |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
254 obj, |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
255 '(function boop(a, b) { return a+b+this.c; })', |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
256 '<string>', 1 |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
257 ) |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
258 self.assertEqual(cx.call_function(thisArg, obj, (1,2)), 6) |
71ab5e977dd3
Added a context.call_function() method.
Atul Varma <varmaa@toolness.com>
parents:
40
diff
changeset
|
259 |
5 | 260 def testEvaluateReturnsTrue(self): |
16
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
261 self.assertTrue(self._evaljs('true') is True) |
5 | 262 |
263 def testEvaluateReturnsFalse(self): | |
16
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
264 self.assertTrue(self._evaljs('false') is False) |
5 | 265 |
4
2711b636f8e6
Added support for NULL return values.
Atul Varma <varmaa@toolness.com>
parents:
3
diff
changeset
|
266 def testEvaluateReturnsNone(self): |
16
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
267 self.assertTrue(self._evaljs('null') is None) |
4
2711b636f8e6
Added support for NULL return values.
Atul Varma <varmaa@toolness.com>
parents:
3
diff
changeset
|
268 |
3
d6a0819ca6ca
Added return value support for doubles.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
269 def testEvaluateReturnsIntegers(self): |
16
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
270 self.assertEqual(self._evaljs('1+3'), 4) |
0 | 271 |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
272 def testEvaluateReturnsNegativeIntegers(self): |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
273 self.assertEqual(self._evaljs('-5'), -5) |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
274 |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
275 def testEvaluateReturnsBigIntegers(self): |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
276 self.assertEqual(self._evaljs('2147483647*2'), |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
277 2147483647*2) |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
278 |
3
d6a0819ca6ca
Added return value support for doubles.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
279 def testEvaluateReturnsFloats(self): |
16
532b7ddca616
Created a new context.evaluate_script() function, replacing pymonkey.evaluate(). Separated out one of the big unit tests into several.
Atul Varma <varmaa@toolness.com>
parents:
14
diff
changeset
|
280 self.assertEqual(self._evaljs('1.1+3'), 4.1) |
3
d6a0819ca6ca
Added return value support for doubles.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
281 |
0 | 282 if __name__ == '__main__': |
283 unittest.main() |