diff --git a/Lib/test/output/test_bisect b/Lib/test/output/test_bisect
new file mode 100644
index 0000000..a91c584
--- /dev/null
+++ b/Lib/test/output/test_bisect
@@ -0,0 +1 @@
+test_bisect
diff --git a/Lib/test/test_bisect.py b/Lib/test/test_bisect.py
new file mode 100644
index 0000000..1292915
--- /dev/null
+++ b/Lib/test/test_bisect.py
@@ -0,0 +1,127 @@
+from test_support import TestFailed
+
+import bisect
+import sys
+
+nerrors = 0
+
+def check_bisect(func, list, elt, expected):
+    global nerrors
+    got = func(list, elt)
+    if got != expected:
+        print >> sys.stderr, \
+            "expected %s(%s, %s) -> %s, but got %s" % (func.__name__,
+                                                       list,
+                                                       elt,
+                                                       expected,
+                                                       got)
+        nerrors += 1
+
+# XXX optional slice arguments need tests.
+
+check_bisect(bisect.bisect_right, [], 1, 0)
+check_bisect(bisect.bisect_right, [1], 0, 0)
+check_bisect(bisect.bisect_right, [1], 1, 1)
+check_bisect(bisect.bisect_right, [1], 2, 1)
+check_bisect(bisect.bisect_right, [1, 1], 0, 0)
+check_bisect(bisect.bisect_right, [1, 1], 1, 2)
+check_bisect(bisect.bisect_right, [1, 1], 2, 2)
+check_bisect(bisect.bisect_right, [1, 1, 1], 0, 0)
+check_bisect(bisect.bisect_right, [1, 1, 1], 1, 3)
+check_bisect(bisect.bisect_right, [1, 1, 1], 2, 3)
+check_bisect(bisect.bisect_right, [1, 1, 1, 1], 0, 0)
+check_bisect(bisect.bisect_right, [1, 1, 1, 1], 1, 4)
+check_bisect(bisect.bisect_right, [1, 1, 1, 1], 2, 4)
+check_bisect(bisect.bisect_right, [1, 2], 0, 0)
+check_bisect(bisect.bisect_right, [1, 2], 1, 1)
+check_bisect(bisect.bisect_right, [1, 2], 1.5, 1)
+check_bisect(bisect.bisect_right, [1, 2], 2, 2)
+check_bisect(bisect.bisect_right, [1, 2], 3, 2)
+check_bisect(bisect.bisect_right, [1, 1, 2, 2], 0, 0)
+check_bisect(bisect.bisect_right, [1, 1, 2, 2], 1, 2)
+check_bisect(bisect.bisect_right, [1, 1, 2, 2], 1.5, 2)
+check_bisect(bisect.bisect_right, [1, 1, 2, 2], 2, 4)
+check_bisect(bisect.bisect_right, [1, 1, 2, 2], 3, 4)
+check_bisect(bisect.bisect_right, [1, 2, 3], 0, 0)
+check_bisect(bisect.bisect_right, [1, 2, 3], 1, 1)
+check_bisect(bisect.bisect_right, [1, 2, 3], 1.5, 1)
+check_bisect(bisect.bisect_right, [1, 2, 3], 2, 2)
+check_bisect(bisect.bisect_right, [1, 2, 3], 2.5, 2)
+check_bisect(bisect.bisect_right, [1, 2, 3], 3, 3)
+check_bisect(bisect.bisect_right, [1, 2, 3], 4, 3)
+check_bisect(bisect.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0)
+check_bisect(bisect.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 1)
+check_bisect(bisect.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1)
+check_bisect(bisect.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 3)
+check_bisect(bisect.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3)
+check_bisect(bisect.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 6)
+check_bisect(bisect.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6)
+check_bisect(bisect.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 10)
+check_bisect(bisect.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10)
+
+check_bisect(bisect.bisect_left, [], 1, 0)
+check_bisect(bisect.bisect_left, [1], 0, 0)
+check_bisect(bisect.bisect_left, [1], 1, 0)
+check_bisect(bisect.bisect_left, [1], 2, 1)
+check_bisect(bisect.bisect_left, [1, 1], 0, 0)
+check_bisect(bisect.bisect_left, [1, 1], 1, 0)
+check_bisect(bisect.bisect_left, [1, 1], 2, 2)
+check_bisect(bisect.bisect_left, [1, 1, 1], 0, 0)
+check_bisect(bisect.bisect_left, [1, 1, 1], 1, 0)
+check_bisect(bisect.bisect_left, [1, 1, 1], 2, 3)
+check_bisect(bisect.bisect_left, [1, 1, 1, 1], 0, 0)
+check_bisect(bisect.bisect_left, [1, 1, 1, 1], 1, 0)
+check_bisect(bisect.bisect_left, [1, 1, 1, 1], 2, 4)
+check_bisect(bisect.bisect_left, [1, 2], 0, 0)
+check_bisect(bisect.bisect_left, [1, 2], 1, 0)
+check_bisect(bisect.bisect_left, [1, 2], 1.5, 1)
+check_bisect(bisect.bisect_left, [1, 2], 2, 1)
+check_bisect(bisect.bisect_left, [1, 2], 3, 2)
+check_bisect(bisect.bisect_left, [1, 1, 2, 2], 0, 0)
+check_bisect(bisect.bisect_left, [1, 1, 2, 2], 1, 0)
+check_bisect(bisect.bisect_left, [1, 1, 2, 2], 1.5, 2)
+check_bisect(bisect.bisect_left, [1, 1, 2, 2], 2, 2)
+check_bisect(bisect.bisect_left, [1, 1, 2, 2], 3, 4)
+check_bisect(bisect.bisect_left, [1, 2, 3], 0, 0)
+check_bisect(bisect.bisect_left, [1, 2, 3], 1, 0)
+check_bisect(bisect.bisect_left, [1, 2, 3], 1.5, 1)
+check_bisect(bisect.bisect_left, [1, 2, 3], 2, 1)
+check_bisect(bisect.bisect_left, [1, 2, 3], 2.5, 2)
+check_bisect(bisect.bisect_left, [1, 2, 3], 3, 2)
+check_bisect(bisect.bisect_left, [1, 2, 3], 4, 3)
+check_bisect(bisect.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0)
+check_bisect(bisect.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 0)
+check_bisect(bisect.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1)
+check_bisect(bisect.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 1)
+check_bisect(bisect.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3)
+check_bisect(bisect.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 3)
+check_bisect(bisect.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6)
+check_bisect(bisect.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 6)
+check_bisect(bisect.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10)
+
+def check_insort(n):
+    global nerrors
+    from random import choice
+    import sys
+    digits = "0123456789"
+    raw = []
+    insorted = []
+    for i in range(n):
+        digit = choice(digits)
+        raw.append(digit)
+        if digit in "02468":
+            f = bisect.insort_left
+        else:
+            f = bisect.insort_right
+        f(insorted, digit)
+    sorted = raw[:]
+    sorted.sort()
+    if sorted == insorted:
+        return
+    print >> sys.stderr, "insort test failed: raw %s got %s" % (raw, insorted)
+    nerrors += 1
+
+check_insort(500)
+
+if nerrors:
+    raise TestFailed("%d errors in test_bisect" % nerrors)
