Lib.test.test_jser2.py Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jython-standalone Show documentation
Show all versions of jython-standalone Show documentation
Jython is an implementation of the high-level, dynamic, object-oriented
language Python written in 100% Pure Java, and seamlessly integrated with
the Java platform. It thus allows you to run Python on any Java platform.
from test import test_support
import unittest
from java.io import ByteArrayInputStream, ByteArrayOutputStream, ObjectInputStream, ObjectOutputStream
from org.python.util import PythonObjectInputStream
def serialize(o, special=False):
b = ByteArrayOutputStream()
objs = ObjectOutputStream(b)
objs.writeObject(o)
if not special:
OIS = ObjectInputStream
else:
OIS = PythonObjectInputStream
objs = OIS(ByteArrayInputStream(b.toByteArray()))
return objs.readObject()
from jser2_classes import A, AJ, N, NL, NT
class TestJavaSerialisation(unittest.TestCase):
def serialize_and_check(self, obj, special=False):
obj1 = serialize(obj, special)
self.assertEqual(obj, obj1)
def test_list(self):
self.serialize_and_check([1,"a", 3.0])
def test_dict(self):
self.serialize_and_check({'a': 3.0})
def test_tuple(self):
self.serialize_and_check((1, 'a'))
def test_oldstyle(self):
self.serialize_and_check(A('x'))
def test_jsubcl(self):
self.serialize_and_check(AJ('x'), special=True)
def test_singletons(self):
for v in (None, Ellipsis):
v1 = serialize(v)
self.assert_(v is v1)
v1 = serialize((v,))[0]
self.assert_(v is v1)
def test_NotImplemented(self):
# XXX serialize(NotImplemented) is None because of __tojava__
v1 = serialize((NotImplemented,))[0]
self.assert_(v1 is NotImplemented)
def test_type(self):
list1 = serialize(list)
self.assert_(list1 is list)
list1 = serialize((list,))[0]
self.assert_(list1 is list)
def test_user_type(self):
N1 = serialize(N)
self.assert_(N1 is N)
N1 = serialize((N,))[0]
self.assert_(N1 is N)
def test_newstyle(self):
self.serialize_and_check(N('x'))
def test_newstyle_list(self):
self.serialize_and_check(NL('x',1,2,3))
def test_newstyle_tuple(self):
self.serialize_and_check(NT('x',1,2,3))
def test_main():
test_support.run_unittest(TestJavaSerialisation)
if __name__ == "__main__":
test_main()