home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 4 / AACD04.ISO / AACD / Programming / Python / Lib / Python1.5 / test / test_userlist.py < prev    next >
Encoding:
Python Source  |  1999-03-26  |  2.4 KB  |  177 lines

  1. # Check every path through every method of UserList
  2.  
  3. from UserList import UserList
  4.  
  5. l0 = []
  6. l1 = [0]
  7. l2 = [0, 1]
  8.  
  9. # Test constructors
  10.  
  11. u = UserList()
  12. u0 = UserList(l0)
  13. u1 = UserList(l1)
  14. u2 = UserList(l2)
  15.  
  16. uu = UserList(u)
  17. uu0 = UserList(u0)
  18. uu1 = UserList(u1)
  19. uu2 = UserList(u2)
  20.  
  21. # Test __repr__
  22.  
  23. assert str(u0) == str(l0)
  24. assert repr(u1) == repr(l1)
  25. assert `u2` == `l2`
  26.  
  27. # Test __cmp__ and __len__
  28.  
  29. def mycmp(a, b):
  30.     r = cmp(a, b)
  31.     if r < 0: return -1
  32.     if r > 0: return 1
  33.     return r
  34.  
  35. all = [l0, l1, l2, u, u0, u1, u2, uu, uu0, uu1, uu2]
  36. for a in all:
  37.     for b in all:
  38.         assert mycmp(a, b) == mycmp(len(a), len(b))
  39.  
  40. # Test __getitem__
  41.  
  42. for i in range(len(u2)):
  43.     assert u2[i] == i
  44.  
  45. # Test __setitem__
  46.  
  47. uu2[0] = 0
  48. uu2[1] = 100
  49. try:
  50.     uu2[2] = 200
  51. except IndexError:
  52.     pass
  53. else:
  54.     assert 0, "uu2[2] shouldn't be assignable"
  55.  
  56. # Test __delitem__
  57.  
  58. del uu2[1]
  59. del uu2[0]
  60. try:
  61.     del uu2[0]
  62. except IndexError:
  63.     pass
  64. else:
  65.     assert 0, "uu2[0] shouldn't be deletable"
  66.  
  67. # Test __getslice__
  68.  
  69. for i in range(-3, 4):
  70.     assert u2[:i] == l2[:i]
  71.     assert u2[i:] == l2[i:]
  72.     for j in range(-3, 4):
  73.         assert u2[i:j] == l2[i:j]
  74.  
  75. # Test __setslice__
  76.  
  77. for i in range(-3, 4):
  78.     u2[:i] = l2[:i]
  79.     assert u2 == l2
  80.     u2[i:] = l2[i:]
  81.     assert u2 == l2
  82.     for j in range(-3, 4):
  83.         u2[i:j] = l2[i:j]
  84.         assert u2 == l2
  85.  
  86. uu2 = u2[:]
  87. uu2[:0] = [-2, -1]
  88. assert uu2 == [-2, -1, 0, 1]
  89. uu2[0:] = []
  90. assert uu2 == []
  91.  
  92. # Test __delslice__
  93.  
  94. uu2 = u2[:]
  95. del uu2[1:2]
  96. del uu2[0:1]
  97. assert uu2 == []
  98.  
  99. uu2 = u2[:]
  100. del uu2[1:]
  101. del uu2[:1]
  102. assert uu2 == []
  103.  
  104. # Test __add__, __radd__, __mul__ and __rmul__
  105.  
  106. assert u1 + [] == [] + u1 == u1
  107. assert u1 + [1] == u2
  108. assert [-1] + u1 == [-1, 0]
  109. assert u2 == u2*1 == 1*u2
  110. assert u2+u2 == u2*2 == 2*u2
  111. assert u2+u2+u2 == u2*3 == 3*u2
  112.  
  113. # Test append
  114.  
  115. u = u1[:]
  116. u.append(1)
  117. assert u == u2
  118.  
  119. # Test insert
  120.  
  121. u = u2[:]
  122. u.insert(0, -1)
  123. assert u == [-1, 0, 1]
  124.  
  125. # Test pop
  126.  
  127. u = [-1] + u2
  128. u.pop()
  129. assert u == [-1, 0]
  130. u.pop(0)
  131. assert u == [0]
  132.  
  133. # Test remove
  134.  
  135. u = u2[:]
  136. u.remove(1)
  137. assert u == u1
  138.  
  139. # Test count
  140. u = u2*3
  141. assert u.count(0) == 3
  142. assert u.count(1) == 3
  143. assert u.count(2) == 0
  144.  
  145.  
  146. # Test index
  147.  
  148. assert u2.index(0) == 0
  149. assert u2.index(1) == 1
  150. try:
  151.     u2.index(2)
  152. except ValueError:
  153.     pass
  154. else:
  155.     assert 0, "expected ValueError"
  156.  
  157. # Test reverse
  158.  
  159. u = u2[:]
  160. u.reverse()
  161. assert u == [1, 0]
  162. u.reverse()
  163. assert u == u2
  164.  
  165. # Test sort
  166.  
  167. u = UserList([1, 0])
  168. u.sort()
  169. assert u == u2
  170.  
  171. # Test extend
  172.  
  173. u = u1[:]
  174. u.extend(u2)
  175. assert u == u1 + u2
  176.  
  177.