test_userlist.py:
    Added new test for new __contains__ method.
    Extensive editing to get rid of asserts.
diff --git a/Lib/test/test_userlist.py b/Lib/test/test_userlist.py
index 6c627c0..e8d9cb0 100644
--- a/Lib/test/test_userlist.py
+++ b/Lib/test/test_userlist.py
@@ -1,6 +1,13 @@
 # Check every path through every method of UserList
 
 from UserList import UserList
+from test_support import TestFailed
+
+# Use check instead of assert so -O doesn't render the
+# test useless.
+def check(predicate, msg):
+    if not predicate:
+        raise TestFailed(msg + " failed")
 
 l0 = []
 l1 = [0]
@@ -31,9 +38,9 @@
 
 # Test __repr__
 
-assert str(u0) == str(l0)
-assert repr(u1) == repr(l1)
-assert `u2` == `l2`
+check(str(u0) == str(l0), "str(u0) == str(l0)")
+check(repr(u1) == repr(l1), "repr(u1) == repr(l1)")
+check(`u2` == `l2`, "`u2` == `l2`")
 
 # Test __cmp__ and __len__
 
@@ -46,12 +53,13 @@
 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))
+        check(mycmp(a, b) == mycmp(len(a), len(b)),
+              "mycmp(a, b) == mycmp(len(a), len(b))")
 
 # Test __getitem__
 
 for i in range(len(u2)):
-    assert u2[i] == i
+    check(u2[i] == i, "u2[i] == i")
 
 # Test __setitem__
 
@@ -62,7 +70,7 @@
 except IndexError:
     pass
 else:
-    assert 0, "uu2[2] shouldn't be assignable"
+    raise TestFailed("uu2[2] shouldn't be assignable")
 
 # Test __delitem__
 
@@ -73,115 +81,120 @@
 except IndexError:
     pass
 else:
-    assert 0, "uu2[0] shouldn't be deletable"
+    raise TestFailed("uu2[0] shouldn't be deletable")
 
 # Test __getslice__
 
 for i in range(-3, 4):
-    assert u2[:i] == l2[:i]
-    assert u2[i:] == l2[i:]
+    check(u2[:i] == l2[:i], "u2[:i] == l2[:i]")
+    check(u2[i:] == l2[i:], "u2[i:] == l2[i:]")
     for j in range(-3, 4):
-        assert u2[i:j] == l2[i:j]
+        check(u2[i:j] == l2[i:j], "u2[i:j] == l2[i:j]")
 
 # Test __setslice__
 
 for i in range(-3, 4):
     u2[:i] = l2[:i]
-    assert u2 == l2
+    check(u2 == l2, "u2 == l2")
     u2[i:] = l2[i:]
-    assert u2 == l2
+    check(u2 == l2, "u2 == l2")
     for j in range(-3, 4):
         u2[i:j] = l2[i:j]
-        assert u2 == l2
+        check(u2 == l2, "u2 == l2")
 
 uu2 = u2[:]
 uu2[:0] = [-2, -1]
-assert uu2 == [-2, -1, 0, 1]
+check(uu2 == [-2, -1, 0, 1], "uu2 == [-2, -1, 0, 1]")
 uu2[0:] = []
-assert uu2 == []
+check(uu2 == [], "uu2 == []")
+
+# Test __contains__
+for i in u2:
+    check(i in u2, "i in u2")
+for i in min(u2)-1, max(u2)+1:
+    check(i not in u2, "i not in u2")
 
 # Test __delslice__
 
 uu2 = u2[:]
 del uu2[1:2]
 del uu2[0:1]
-assert uu2 == []
+check(uu2 == [], "uu2 == []")
 
 uu2 = u2[:]
 del uu2[1:]
 del uu2[:1]
-assert uu2 == []
+check(uu2 == [], "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
+check(u1 + [] == [] + u1 == u1, "u1 + [] == [] + u1 == u1")
+check(u1 + [1] == u2, "u1 + [1] == u2")
+check([-1] + u1 == [-1, 0], "[-1] + u1 == [-1, 0]")
+check(u2 == u2*1 == 1*u2, "u2 == u2*1 == 1*u2")
+check(u2+u2 == u2*2 == 2*u2, "u2+u2 == u2*2 == 2*u2")
+check(u2+u2+u2 == u2*3 == 3*u2, "u2+u2+u2 == u2*3 == 3*u2")
 
 # Test append
 
 u = u1[:]
 u.append(1)
-assert u == u2
+check(u == u2, "u == u2")
 
 # Test insert
 
 u = u2[:]
 u.insert(0, -1)
-assert u == [-1, 0, 1]
+check(u == [-1, 0, 1], "u == [-1, 0, 1]")
 
 # Test pop
 
 u = [-1] + u2
 u.pop()
-assert u == [-1, 0]
+check(u == [-1, 0], "u == [-1, 0]")
 u.pop(0)
-assert u == [0]
+check(u == [0], "u == [0]")
 
 # Test remove
 
 u = u2[:]
 u.remove(1)
-assert u == u1
+check(u == u1, "u == u1")
 
 # Test count
 u = u2*3
-assert u.count(0) == 3
-assert u.count(1) == 3
-assert u.count(2) == 0
+check(u.count(0) == 3, "u.count(0) == 3")
+check(u.count(1) == 3, "u.count(1) == 3")
+check(u.count(2) == 0, "u.count(2) == 0")
 
 
 # Test index
 
-assert u2.index(0) == 0
-assert u2.index(1) == 1
+check(u2.index(0) == 0, "u2.index(0) == 0")
+check(u2.index(1) == 1, "u2.index(1) == 1")
 try:
     u2.index(2)
 except ValueError:
     pass
 else:
-    assert 0, "expected ValueError"
+    raise TestFailed("expected ValueError")
 
 # Test reverse
 
 u = u2[:]
 u.reverse()
-assert u == [1, 0]
+check(u == [1, 0], "u == [1, 0]")
 u.reverse()
-assert u == u2
+check(u == u2, "u == u2")
 
 # Test sort
 
 u = UserList([1, 0])
 u.sort()
-assert u == u2
+check(u == u2, "u == u2")
 
 # Test extend
 
 u = u1[:]
 u.extend(u2)
-assert u == u1 + u2
-
+check(u == u1 + u2, "u == u1 + u2")