[Python-checkins] CVS: python/dist/src/Lib/test test_descr.py,1.104,1.105

Guido van Rossum gvanrossum@users.sourceforge.net
2001年11月24日 13:07:03 -0800


Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv16272
Modified Files:
	test_descr.py 
Log Message:
- Change all remaining assertions into verify() and vereq() calls.
- Add tests for the recent fixes to copy_reg.py:
 __getstate__/__setstate__ and mixed inheritance from new+classic
 classes.
Index: test_descr.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_descr.py,v
retrieving revision 1.104
retrieving revision 1.105
diff -C2 -d -r1.104 -r1.105
*** test_descr.py	2001年11月14日 23:56:45	1.104
--- test_descr.py	2001年11月24日 21:07:01	1.105
***************
*** 554,558 ****
 def __init__(self, *a, **kw):
 if a:
! assert len(a) == 1
 self.state = a[0]
 if kw:
--- 554,558 ----
 def __init__(self, *a, **kw):
 if a:
! vereq(len(a), 1)
 self.state = a[0]
 if kw:
***************
*** 561,565 ****
 return self.get(key, 0)
 def __setitem__(self, key, value):
! assert isinstance(key, type(0))
 dict.__setitem__(self, key, value)
 def setstate(self, state):
--- 561,565 ----
 return self.get(key, 0)
 def __setitem__(self, key, value):
! verify(isinstance(key, type(0)))
 dict.__setitem__(self, key, value)
 def setstate(self, state):
***************
*** 2258,2261 ****
--- 2258,2276 ----
 return "C2(%r, %r)<%r>" % (self.a, self.b, int(self))
 
+ global C3
+ class C3(object):
+ def __init__(self, foo):
+ self.foo = foo
+ def __getstate__(self):
+ return self.foo
+ def __setstate__(self, foo):
+ self.foo = foo
+ 
+ global C4classic, C4
+ class C4classic: # classic
+ pass
+ class C4(C4classic, object): # mixed inheritance
+ pass
+ 
 for p in pickle, cPickle:
 for bin in 0, 1:
***************
*** 2272,2284 ****
 s = p.dumps((a, b), bin)
 x, y = p.loads(s)
! assert x.__class__ == a.__class__
! assert sorteditems(x.__dict__) == sorteditems(a.__dict__)
! assert y.__class__ == b.__class__
! assert sorteditems(y.__dict__) == sorteditems(b.__dict__)
! assert `x` == `a`
! assert `y` == `b`
 if verbose:
 print "a = x =", a
 print "b = y =", b
 
 # Testing copy.deepcopy()
--- 2287,2312 ----
 s = p.dumps((a, b), bin)
 x, y = p.loads(s)
! vereq(x.__class__, a.__class__)
! vereq(sorteditems(x.__dict__), sorteditems(a.__dict__))
! vereq(y.__class__, b.__class__)
! vereq(sorteditems(y.__dict__), sorteditems(b.__dict__))
! vereq(`x`, `a`)
! vereq(`y`, `b`)
 if verbose:
 print "a = x =", a
 print "b = y =", b
+ # Test for __getstate__ and __setstate__ on new style class
+ u = C3(42)
+ s = p.dumps(u, bin)
+ v = p.loads(s)
+ veris(u.__class__, v.__class__)
+ vereq(u.foo, v.foo)
+ # Test for picklability of hybrid class
+ u = C4()
+ u.foo = 42
+ s = p.dumps(u, bin)
+ v = p.loads(s)
+ veris(u.__class__, v.__class__)
+ vereq(u.foo, v.foo)
 
 # Testing copy.deepcopy()
***************
*** 2293,2302 ****
 b = C2("hello", "world", 42)
 x, y = copy.deepcopy((a, b))
! assert x.__class__ == a.__class__
! assert sorteditems(x.__dict__) == sorteditems(a.__dict__)
! assert y.__class__ == b.__class__
! assert sorteditems(y.__dict__) == sorteditems(b.__dict__)
! assert `x` == `a`
! assert `y` == `b`
 if verbose:
 print "a = x =", a
--- 2321,2330 ----
 b = C2("hello", "world", 42)
 x, y = copy.deepcopy((a, b))
! vereq(x.__class__, a.__class__)
! vereq(sorteditems(x.__dict__), sorteditems(a.__dict__))
! vereq(y.__class__, b.__class__)
! vereq(sorteditems(y.__dict__), sorteditems(b.__dict__))
! vereq(`x`, `a`)
! vereq(`y`, `b`)
 if verbose:
 print "a = x =", a

AltStyle によって変換されたページ (->オリジナル) /