Mercurial > pymonkey
annotate test_pymonkey.py @ 22:988a8998c75f
JS objects reflected into Python are now identity-preserving, though the implementation for this is pretty bad right now.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Sun, 28 Jun 2009 21:49:07 -0700 |
parents | abede8af8cf5 |
children | 74b7ad049542 |
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 |
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
|
12 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
|
13 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
|
14 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
|
15 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
|
16 cx.evaluate_script(obj, 'foo = {bar: 1}', '<string>', 1) |
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
|
17 self.assertTrue(isinstance(cx.get_property(obj, "foo"), |
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
|
18 pymonkey.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
|
19 self.assertTrue(cx.get_property(obj, "foo") is |
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
|
20 cx.get_property(obj, "foo")) |
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
|
21 |
17
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
22 def testObjectGetattrWorks(self): |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
23 cx = pymonkey.Runtime().new_context() |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
24 obj = cx.new_object() |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
25 cx.init_standard_classes(obj) |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
26 cx.evaluate_script(obj, 'boop = 5', '<string>', 1) |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
27 cx.evaluate_script(obj, 'this["blarg\u2026"] = 5', '<string>', 1) |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
28 self.assertEqual(cx.get_property(obj, "beans"), |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
29 pymonkey.undefined) |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
30 self.assertEqual(cx.get_property(obj, u"blarg\u2026"), 5) |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
31 self.assertEqual(cx.get_property(obj, "boop"), 5) |
0812422ec99e
Added a context.get_property() method.
Atul Varma <varmaa@toolness.com>
parents:
16
diff
changeset
|
32 |
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
|
33 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
|
34 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
|
35 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
|
36 |
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
|
37 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
|
38 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
|
39 |
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
|
40 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
|
41 obj = pymonkey.Runtime().new_context().new_object() |
13 | 42 self.assertTrue(isinstance(obj, pymonkey.Object)) |
43 | |
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
|
44 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
|
45 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
|
46 |
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
|
47 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
|
48 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
|
49 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
|
50 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
|
51 |
8
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
52 def testUndefinedCannotBeInstantiated(self): |
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
53 self.assertRaises(TypeError, pymonkey.undefined) |
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
54 |
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
55 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
|
56 retval = self._evaljs("") |
8
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
57 self.assertTrue(retval is pymonkey.undefined) |
6647870380cc
Added support for undefined.
Atul Varma <varmaa@toolness.com>
parents:
7
diff
changeset
|
58 |
7
0d0ce6415b66
Added support for unicode strings.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
59 def testEvaluateReturnsUnicode(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
|
60 retval = self._evaljs("'o hai\u2026'") |
7
0d0ce6415b66
Added support for unicode strings.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
61 self.assertTrue(type(retval) == unicode) |
0d0ce6415b66
Added support for unicode strings.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
62 self.assertEqual(retval, u'o hai\u2026') |
0d0ce6415b66
Added support for unicode strings.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
63 |
20
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
64 def testEvaluateReturnsObject(self): |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
65 rt = pymonkey.Runtime() |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
66 cx = rt.new_context() |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
67 obj = cx.new_object() |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
68 cx.init_standard_classes(obj) |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
69 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
|
70 self.assertTrue(isinstance(obj, pymonkey.Object)) |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
71 self.assertEqual(cx.get_property(obj, "boop"), 1) |
abede8af8cf5
PYM_jsvalToPyObject() can now deal with JSObjects.
Atul Varma <varmaa@toolness.com>
parents:
17
diff
changeset
|
72 |
5 | 73 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
|
74 self.assertTrue(self._evaljs('true') is True) |
5 | 75 |
76 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
|
77 self.assertTrue(self._evaljs('false') is False) |
5 | 78 |
4
2711b636f8e6
Added support for NULL return values.
Atul Varma <varmaa@toolness.com>
parents:
3
diff
changeset
|
79 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
|
80 self.assertTrue(self._evaljs('null') is None) |
4
2711b636f8e6
Added support for NULL return values.
Atul Varma <varmaa@toolness.com>
parents:
3
diff
changeset
|
81 |
3
d6a0819ca6ca
Added return value support for doubles.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
82 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
|
83 self.assertEqual(self._evaljs('1+3'), 4) |
0 | 84 |
3
d6a0819ca6ca
Added return value support for doubles.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
85 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
|
86 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
|
87 |
0 | 88 if __name__ == '__main__': |
89 unittest.main() |