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

Guido van Rossum gvanrossum@users.sourceforge.net
Sat, 24 Nov 2001 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