Added a simple NEWOBJ test. This is in the pickle-only part of the

test for now (cPickle can't yet produce NEWOBJ).
This commit is contained in:
Tim Peters 2003-02-13 18:42:00 +00:00
parent c1eea67d93
commit e9ef203ea6
1 changed files with 15 additions and 0 deletions

View File

@ -724,6 +724,16 @@ class AbstractPickleTests(unittest.TestCase):
# XXX along with the references to it in test_pickle.py. # XXX along with the references to it in test_pickle.py.
class TempAbstractPickleTests(unittest.TestCase): class TempAbstractPickleTests(unittest.TestCase):
def test_simple_newobj(self):
x = object.__new__(SimpleNewObj) # avoid __init__
x.abc = 666
for proto in protocols:
s = self.dumps(x, proto)
self.assertEqual(opcode_in_pickle(pickle.NEWOBJ, s), proto >= 2)
y = self.loads(s) # will raise TypeError if __init__ called
self.assertEqual(y.abc, 666)
self.assertEqual(x.__dict__, y.__dict__)
def test_newobj_list_slots(self): def test_newobj_list_slots(self):
x = SlotList([1, 2, 3]) x = SlotList([1, 2, 3])
x.foo = 42 x.foo = 42
@ -771,6 +781,11 @@ myclasses = [MyInt, MyLong, MyFloat,
class SlotList(MyList): class SlotList(MyList):
__slots__ = ["foo"] __slots__ = ["foo"]
class SimpleNewObj(object):
def __init__(self, a, b, c):
# raise an error, to make sure this isn't called
raise TypeError("SimpleNewObj.__init__() didn't expect to get called")
class AbstractPickleModuleTests(unittest.TestCase): class AbstractPickleModuleTests(unittest.TestCase):
def test_dump_closed_file(self): def test_dump_closed_file(self):