123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- __author__ = 'mchat'
- import unittest
- object_methods = ["__repr__", "__str__", "__hash__", "__eq__", "__ne__",
- "__lt__", "__le__", "__gt__", "__ge__", "__getattr__", "__setattr__"]
- numeric_methods = ["__abs__", "__neg__", "__pos__", "__int__", "__long__",
- "__float__", "__add__", "__radd__", "__sub__", "__rsub__", "__mul__",
- "__rmul__", "__div__", "__rdiv__", "__floordiv__", "__rfloordiv__",
- "__mod__", "__rmod__", "__divmod__", "__rdivmod__", "__pow__", "__rpow__",
- "__coerce__"]
- sequence_methods = ["__len__", "__iter__", "__contains__", "__getitem__",
- "__add__", "__mul__", "__rmul__"]
- class BuiltinInheritance(unittest.TestCase):
- def check_magic_methods(self, obj, isnum=False, isseq=False):
- def check_methods(methods):
- for method in methods:
- self.assertTrue(hasattr(obj, method),
- "Expected " + str(type(obj)) + " to have method '" + method + "'")
- self.assertIsInstance(obj, object)
- check_methods(object_methods)
- if (isnum):
- check_methods(numeric_methods)
- if (isseq):
- check_methods(sequence_methods)
- def test_object(self):
- self.check_magic_methods(object()) # object
- def test_none_notimplemented(self):
- self.check_magic_methods(None) # None
- self.check_magic_methods(NotImplemented) # NotImplemented
- def test_numeric_types(self):
- self.check_magic_methods(1, isnum=True) # int
- self.check_magic_methods(3L, isnum=True) # long
- self.check_magic_methods(2.5, isnum=True) # float
- self.check_magic_methods(3j, isnum=True) # complex
- self.check_magic_methods(True, isnum=True) # bool
- self.assertIsInstance(True, int)
- self.assertNotIsInstance(True, long)
- def test_sequence_types(self):
- self.check_magic_methods("hello world", isseq=True) # str
- self.check_magic_methods([1, 2, 3, 4], isseq=True) # list
- self.check_magic_methods((1, 2, 3, 4), isseq=True) # tuple
- def test_other_types(self):
- self.check_magic_methods({1:2, 3:4}) # dict
- self.check_magic_methods(enumerate([1, 2, 3, 4])) # enumerate
- self.check_magic_methods(open("skulpt.py")) # file
- self.check_magic_methods(set([1, 2, 3, 4])) # set
- self.check_magic_methods(slice(1, 2)) # slice
- if __name__ == '__main__':
- unittest.main()
|