Mercurial > pymonkey
annotate test_pymonkey.py @ 37:d4efcbb06964
Added a new PYM_JSFunction type, PYM_JSContext.define_property(), and PYM_JSContext.new_function(). Also fixed a memory leak.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Thu, 02 Jul 2009 22:42:31 -0700 |
parents | 5d3d3b25f23f |
children | 8a7abd0bb48d |
rev | line source |
---|---|
0 | 1 import unittest |
2 import pymonkey | |
3 | |
4 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
|
5 def _evaljs(self, code): |
9
032cfc448079
Added pymonkey.Runtime and pymonkey.Context as new types.
Atul Varma <varmaa@toolness.com>
parents:
8
diff
changeset
|
6 rt = pymonkey.Runtime() |
032cfc448079
Added pymonkey.Runtime and pymonkey.Context as new types.
Atul Varma <varmaa@toolness.com>
parents:
8
diff
changeset
|
7 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
|
8 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
|
9 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
|
10 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
|
11 |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
12 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
|
13 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
|
14 obj = cx.new_object() |
74b7ad049542
Added very primitive support for calling python functions from JS.
Atul Varma <varmaa@toolness.com>
parents:
22
diff
changeset
|
15 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
|
16 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
|
17 cx.define_property(obj, func.__name__, jsfunc) |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
18 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
|
19 |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
20 def testJsWrappedPythonFunctionReturnsUnicode(self): |
24
74b7ad049542
Added very primitive support for calling python functions from JS.
Atul Varma <varmaa@toolness.com>
parents:
22
diff
changeset
|
21 def hai2u(): |
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
|
22 return u"o hai" |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
23 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
24 u"o hai") |
24
74b7ad049542
Added very primitive support for calling python functions from JS.
Atul Varma <varmaa@toolness.com>
parents:
22
diff
changeset
|
25 |
34
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
26 def testJsWrappedPythonFunctionReturnsTrue(self): |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
27 def hai2u(): |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
28 return True |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
29 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
30 True) |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
31 |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
32 def testJsWrappedPythonFunctionReturnsFalse(self): |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
33 def hai2u(): |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
34 return False |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
35 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
36 False) |
5d3d3b25f23f
JS wrapped Python functions can now return booleans.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
37 |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
38 def testJsWrappedPythonFunctionReturnsSmallInt(self): |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
39 def hai2u(): |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
40 return 5 |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
41 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
42 5) |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
43 |
32
abf14cba9ef5
JS wrapped Python functions can now return floats.
Atul Varma <varmaa@toolness.com>
parents:
31
diff
changeset
|
44 def testJsWrappedPythonFunctionReturnsFloat(self): |
abf14cba9ef5
JS wrapped Python functions can now return floats.
Atul Varma <varmaa@toolness.com>
parents:
31
diff
changeset
|
45 def hai2u(): |
abf14cba9ef5
JS wrapped Python functions can now return floats.
Atul Varma <varmaa@toolness.com>
parents:
31
diff
changeset
|
46 return 5.1 |
abf14cba9ef5
JS wrapped Python functions can now return floats.
Atul Varma <varmaa@toolness.com>
parents:
31
diff
changeset
|
47 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
abf14cba9ef5
JS wrapped Python functions can now return floats.
Atul Varma <varmaa@toolness.com>
parents:
31
diff
changeset
|
48 5.1) |
abf14cba9ef5
JS wrapped Python functions can now return floats.
Atul Varma <varmaa@toolness.com>
parents:
31
diff
changeset
|
49 |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
50 def testJsWrappedPythonFunctionReturnsNegativeInt(self): |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
51 def hai2u(): |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
52 return -5 |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
53 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
54 -5) |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
55 |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
56 def testJsWrappedPythonFunctionReturnsBigInt(self): |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
57 def hai2u(): |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
58 return 2147483647 |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
59 self.assertEqual(self._evalJsWrappedPyFunc(hai2u, 'hai2u()'), |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
60 2147483647) |
24
74b7ad049542
Added very primitive support for calling python functions from JS.
Atul Varma <varmaa@toolness.com>
parents:
22
diff
changeset
|
61 |
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
|
62 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
|
63 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
|
64 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
|
65 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
|
66 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
|
67 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
|
68 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
|
69 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
|
70 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
|
71 ) |
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
|
72 |
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
|
73 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
|
74 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
|
75 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
|
76 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
|
77 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
|
78 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
|
79 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
|
80 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
|
81 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
|
82 ) |
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
|
83 |
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
|
84 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
|
85 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
|
86 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
|
87 cx.init_standard_classes(obj) |
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
|
88 cx.evaluate_script(obj, '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
|
89 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
|
90 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
|
91 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
|
92 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
|
93 |
17
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
94 def testObjectGetattrWorks(self): |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
95 cx = pymonkey.Runtime().new_context() |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
96 obj = cx.new_object() |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
97 cx.init_standard_classes(obj) |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
98 cx.evaluate_script(obj, 'boop = 5', '<string>', 1) |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
99 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
|
100 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
|
101 pymonkey.undefined) |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
102 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
|
103 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
|
104 |
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
|
105 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
|
106 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
|
107 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
|
108 |
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
|
109 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
|
110 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
|
111 |
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
|
112 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
|
113 obj = pymonkey.Runtime().new_context().new_object() |
13 | 114 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
|
115 self.assertFalse(isinstance(obj, pymonkey.Function)) |
13 | 116 |
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
|
117 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
|
118 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
|
119 |
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
|
120 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
|
121 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
|
122 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
|
123 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
|
124 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
|
125 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
|
126 |
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
|
127 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
|
128 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
|
129 |
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
|
130 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
|
131 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
|
132 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
|
133 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
|
134 |
8
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
135 def testUndefinedCannotBeInstantiated(self): |
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
136 self.assertRaises(TypeError, pymonkey.undefined) |
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
137 |
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
138 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
|
139 retval = self._evaljs("") |
8
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
140 self.assertTrue(retval is pymonkey.undefined) |
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
141 |
28
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
142 def testEvaluateReturnsSMPUnicode(self): |
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
143 # 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
|
144 # multilingual plane (SMP). |
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
145 retval = self._evaljs("'\uD800\uDC00'") |
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
146 self.assertEqual(retval, u'\U00010000') |
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
147 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
|
148 '\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
|
149 |
bd30f5c02fc3
Added a new test for supplementary multilingual plane unicode.
Atul Varma <varmaa@toolness.com>
parents:
27
diff
changeset
|
150 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
|
151 retval = self._evaljs("'o hai\u2026'") |
7
0d0ce6415b66
Added support for unicode strings.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
152 self.assertTrue(type(retval) == unicode) |
0d0ce6415b66
Added support for unicode strings.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
153 self.assertEqual(retval, u'o hai\u2026') |
0d0ce6415b66
Added support for unicode strings.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
154 |
20
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
155 def testEvaluateReturnsObject(self): |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
156 rt = pymonkey.Runtime() |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
157 cx = rt.new_context() |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
158 obj = cx.new_object() |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
159 cx.init_standard_classes(obj) |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
160 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
|
161 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
|
162 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
|
163 |
5 | 164 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
|
165 self.assertTrue(self._evaljs('true') is True) |
5 | 166 |
167 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
|
168 self.assertTrue(self._evaljs('false') is False) |
5 | 169 |
4
2711b636f8e6
Added support for NULL return values.
Atul Varma <varmaa@toolness.com>
parents:
3
diff
changeset
|
170 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
|
171 self.assertTrue(self._evaljs('null') is None) |
4
2711b636f8e6
Added support for NULL return values.
Atul Varma <varmaa@toolness.com>
parents:
3
diff
changeset
|
172 |
3
d6a0819ca6ca
Added return value support for doubles.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
173 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
|
174 self.assertEqual(self._evaljs('1+3'), 4) |
0 | 175 |
31
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
176 def testEvaluateReturnsNegativeIntegers(self): |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
177 self.assertEqual(self._evaljs('-5'), -5) |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
178 |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
179 def testEvaluateReturnsBigIntegers(self): |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
180 self.assertEqual(self._evaljs('2147483647*2'), |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
181 2147483647*2) |
d0a3f358072a
gcc now shows all warnings (-Wall).
Atul Varma <varmaa@toolness.com>
parents:
29
diff
changeset
|
182 |
3
d6a0819ca6ca
Added return value support for doubles.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
183 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
|
184 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
|
185 |
0 | 186 if __name__ == '__main__': |
187 unittest.main() |