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

Guido van Rossum gvanrossum@users.sourceforge.net
Thu, 07 Jun 2001 12:17:41 -0700


Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv8217

Modified Files:
      Tag: descr-branch
	test_descr.py 
Log Message:
- Reduce the size of the pydict stress test (I got tired of waiting
  :-).  The size is now parameterized through a local variable so it's
  easy to change.

- Add a test for __mro__ to the multi() test.

- Add diamond(), a test for proper method resolution order in diamond
  diagrams.


Index: test_descr.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/Attic/test_descr.py,v
retrieving revision 1.1.2.12
retrieving revision 1.1.2.13
diff -C2 -r1.1.2.12 -r1.1.2.13
*** test_descr.py	2001/06/07 15:45:04	1.1.2.12
--- test_descr.py	2001/06/07 19:17:39	1.1.2.13
***************
*** 299,308 ****
      verify(a[42] == 24)
      if verbose: print "pydict stress test ..."
!     for i in range(100):
          a[i] = C()
!         for j in range(100):
              a[i][j] = i*j
!     for i in range(100):
!         for j in range(100):
              verify(a[i][j] == i*j)
  
--- 299,309 ----
      verify(a[42] == 24)
      if verbose: print "pydict stress test ..."
!     N = 50
!     for i in range(N):
          a[i] = C()
!         for j in range(N):
              a[i][j] = i*j
!     for i in range(N):
!         for j in range(N):
              verify(a[i][j] == i*j)
  
***************
*** 379,383 ****
--- 380,416 ----
      d.setstate(10)
      verify(d.getstate() == 10)
+     verify(D.__mro__ == (D, dictionary, C, object))
  
+ def diamond():
+     if verbose: print "Testing multiple inheritance special cases..."
+     class A(object):
+         def spam(self): return "A"
+     verify(A().spam() == "A")
+     class B(A):
+         def boo(self): return "B"
+         def spam(self): return "B"
+     verify(B().spam() == "B")
+     verify(B().boo() == "B")
+     class C(A):
+         def boo(self): return "C"
+     verify(C().spam() == "A")
+     verify(C().boo() == "C")
+     class D(B, C): pass
+     verify(D().spam() == "B")
+     verify(D().boo() == "B")
+     verify(D.__mro__ == (D, B, C, A, object))
+     class E(C, B): pass
+     verify(E().spam() == "B")
+     verify(E().boo() == "C")
+     verify(E.__mro__ == (E, C, B, A, object))
+     class F(D, E): pass
+     verify(F().spam() == "B")
+     verify(F().boo() == "B")
+     verify(F.__mro__ == (F, D, E, B, C, A, object))
+     class G(E, D): pass
+     verify(G().spam() == "B")
+     verify(G().boo() == "C")
+     verify(G.__mro__ == (G, E, D, C, B, A, object))
+ 
  def all():
      lists()
***************
*** 392,395 ****
--- 425,429 ----
      pymods()
      multi()
+     diamond()
  
  all()