Lib.test.test_subclasses.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
import pickle
#myint and its test taken from pickletester, the other "my" classes and tests
# are based on it.
class myint(int):
def __init__(self, x):
self.str = str(x)
class mystr(str):
def __init__(self, x):
self.str = str(x)
class mytuple(tuple):
def __init__(self, x):
self.str = str(x)
class myint(int):
def __init__(self, x):
self.str = str(x)
class myint(int):
def __init__(self, x):
self.str = str(x)
class myint(int):
def __init__(self, x):
self.str = str(x)
class myint(int):
def __init__(self, x):
self.str = str(x)
class myint(int):
def __init__(self, x):
self.str = str(x)
class myint(int):
def __init__(self, x):
self.str = str(x)
class myint(int):
def __init__(self, x):
self.str = str(x)
class myint(int):
def __init__(self, x):
self.str = str(x)
class TestSubclasses(unittest.TestCase):
def test_float(self):
class Spam(float):
def __str__(self):
return "hi"
self.assertEqual(Spam(), 0.0)
self.assertEqual(str(Spam()), "hi")
def test_complex(self):
class Spam(complex):
def __str__(self):
return "hi"
self.assertEqual(Spam(), 0j)
self.assertEqual(str(Spam()), "hi")
def test_int(self):
class Spam(int):
def __str__(self):
return "hi"
self.assertEqual(Spam(), 0)
self.assertEqual(str(Spam()), "hi")
def test_long(self):
class Spam(long):
def __str__(self):
return "hi"
self.assertEqual(Spam(), 0L)
self.assertEqual(str(Spam()), "hi")
def test_tuple(self):
class Spam(tuple):
def __str__(self):
return "hi"
#XXX: subclasses of tuple are not coming out equal...
#self.assertEqual(Spam(), ())
self.assertEqual(str(Spam()), "hi")
def test_str(self):
class Spam(str):
def eggs(self):
return "I am eggs."
self.assertEqual(Spam(), "")
self.assertEqual(Spam().eggs(), "I am eggs.")
def test_unicode(self):
class Spam(unicode):
def eggs(self):
return "I am eggs."
self.assertEqual(Spam(), "")
self.assertEqual(Spam().eggs(), "I am eggs.")
def test_classic(self):
class Spam:
def eggs(self):
return "I am eggs."
class SubSpam(Spam):
pass
class SubSubSpam(SubSpam):
pass
self.assertEqual(Spam().eggs(), "I am eggs.")
self.assertEqual(SubSpam().eggs(), "I am eggs.")
self.assertEqual(SubSubSpam().eggs(), "I am eggs.")
def test_classic_multiple(self):
class Spam:
def eggs(self):
return "I am eggs."
class SubSpam(Spam):
pass
class SubSubStrSpam(SubSpam, str):
pass
class SubSubStrSpam2(str, SubSpam):
pass
self.assertEqual(Spam().eggs(), "I am eggs.")
self.assertEqual(SubSpam().eggs(), "I am eggs.")
self.assertEqual(SubSubStrSpam().eggs(), "I am eggs.")
self.assertEqual(SubSubStrSpam2().eggs(), "I am eggs.")
def test_newstyle(self):
class Spam(object):
def eggs(self):
return "I am eggs."
class SubSpam(Spam):
pass
class SubSubSpam(SubSpam):
pass
self.assertEqual(Spam().eggs(), "I am eggs.")
self.assertEqual(SubSpam().eggs(), "I am eggs.")
self.assertEqual(SubSubSpam().eggs(), "I am eggs.")
def test_newstyle_multiple(self):
class Spam(object):
def eggs(self):
return "I am eggs."
class SubSpam(Spam):
pass
class SubSubStrSpam(SubSpam, str):
pass
class SubSubStrSpam2(str, SubSpam):
pass
self.assertEqual(Spam().eggs(), "I am eggs.")
self.assertEqual(SubSpam().eggs(), "I am eggs.")
self.assertEqual(SubSubStrSpam().eggs(), "I am eggs.")
self.assertEqual(SubSubStrSpam2().eggs(), "I am eggs.")
def picklecheck(self, picklee):
s = pickle.dumps(picklee)
y = pickle.loads(s)
self.assertEqual(picklee, y)
def test_pickle_builtins(self):
#ignores cPickle for now.
self.picklecheck(myint(4))
self.picklecheck(mystr('x'))
self.picklecheck(mytuple([1,2]))
def test_main():
test_support.run_unittest(TestSubclasses)
if __name__ == "__main__":
test_main()