| from test.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) |