diff --git a/Lib/test/output/test_userlist b/Lib/test/output/test_userlist new file mode 100644 index 00000000000..8a109fca3a7 --- /dev/null +++ b/Lib/test/output/test_userlist @@ -0,0 +1 @@ +test_userlist diff --git a/Lib/test/test_userlist.py b/Lib/test/test_userlist.py new file mode 100644 index 00000000000..b6846899d42 --- /dev/null +++ b/Lib/test/test_userlist.py @@ -0,0 +1,176 @@ +# Check every path through every method of UserList + +from UserList import UserList + +l0 = [] +l1 = [0] +l2 = [0, 1] + +# Test constructors + +u = UserList() +u0 = UserList(l0) +u1 = UserList(l1) +u2 = UserList(l2) + +uu = UserList(u) +uu0 = UserList(u0) +uu1 = UserList(u1) +uu2 = UserList(u2) + +# Test __repr__ + +assert str(u0) == str(l0) +assert repr(u1) == repr(l1) +assert `u2` == `l2` + +# Test __cmp__ and __len__ + +def mycmp(a, b): + r = cmp(a, b) + if r < 0: return -1 + if r > 0: return 1 + return r + +all = [l0, l1, l2, u, u0, u1, u2, uu, uu0, uu1, uu2] +for a in all: + for b in all: + assert mycmp(a, b) == mycmp(len(a), len(b)) + +# Test __getitem__ + +for i in range(len(u2)): + assert u2[i] == i + +# Test __setitem__ + +uu2[0] = 0 +uu2[1] = 100 +try: + uu2[2] = 200 +except IndexError: + pass +else: + assert 0, "uu2[2] shouldn't be assignable" + +# Test __delitem__ + +del uu2[1] +del uu2[0] +try: + del uu2[0] +except IndexError: + pass +else: + assert 0, "uu2[0] shouldn't be deletable" + +# Test __getslice__ + +for i in range(-3, 4): + assert u2[:i] == l2[:i] + assert u2[i:] == l2[i:] + for j in range(-3, 4): + assert u2[i:j] == l2[i:j] + +# Test __setslice__ + +for i in range(-3, 4): + u2[:i] = l2[:i] + assert u2 == l2 + u2[i:] = l2[i:] + assert u2 == l2 + for j in range(-3, 4): + u2[i:j] = l2[i:j] + assert u2 == l2 + +uu2 = u2[:] +uu2[:0] = [-2, -1] +assert uu2 == [-2, -1, 0, 1] +uu2[0:] = [] +assert uu2 == [] + +# Test __delslice__ + +uu2 = u2[:] +del uu2[1:2] +del uu2[0:1] +assert uu2 == [] + +uu2 = u2[:] +del uu2[1:] +del uu2[:1] +assert uu2 == [] + +# Test __add__, __radd__, __mul__ and __rmul__ + +assert u1 + [] == [] + u1 == u1 +assert u1 + [1] == u2 +assert [-1] + u1 == [-1, 0] +assert u2 == u2*1 == 1*u2 +assert u2+u2 == u2*2 == 2*u2 +assert u2+u2+u2 == u2*3 == 3*u2 + +# Test append + +u = u1[:] +u.append(1) +assert u == u2 + +# Test insert + +u = u2[:] +u.insert(0, -1) +assert u == [-1, 0, 1] + +# Test pop + +u = [-1] + u2 +u.pop() +assert u == [-1, 0] +u.pop(0) +assert u == [0] + +# Test remove + +u = u2[:] +u.remove(1) +assert u == u1 + +# Test count +u = u2*3 +assert u.count(0) == 3 +assert u.count(1) == 3 +assert u.count(2) == 0 + + +# Test index + +assert u2.index(0) == 0 +assert u2.index(1) == 1 +try: + u2.index(2) +except ValueError: + pass +else: + assert 0, "expected ValueError" + +# Test reverse + +u = u2[:] +u.reverse() +assert u == [1, 0] +u.reverse() +assert u == u2 + +# Test sort + +u = UserList([1, 0]) +u.sort() +assert u == u2 + +# Test extend + +u = u1[:] +u.extend(u2) +assert u == u1 + u2 +