codon/test/stdlib/bisect_test.codon

184 lines
8.1 KiB
Python

import bisect
import sys
li = [1, 3, 4, 4, 4, 6, 7]
lst = [10, 20, 30, 40, 50]
str = ["a", "b", "b", "c", "d"]
@test
def bisect_left():
assert bisect.bisect_left(li, 4, 0, len(li)) == 2
assert bisect.bisect_left(li, 4) == 2
assert bisect.bisect_left(str, "b", 0, len(str)) == 1
assert bisect.bisect_left(lst, 25, 1, 3) == 2
# precomputed cases
assert bisect.bisect_left(List[int](), 1, 0, 0) == 0
assert bisect.bisect_left([1], 0, 0, 1) == 0
assert bisect.bisect_left([1], 1, 0, 1) == 0
assert bisect.bisect_left([1], 2, 0, 1) == 1
assert bisect.bisect_left([1, 1], 0, 0, 2) == 0
assert bisect.bisect_left([1, 1], 1, 0, 2) == 0
assert bisect.bisect_left([1, 1], 2, 0, 2) == 2
assert bisect.bisect_left([1, 1, 1], 0, 0, 3) == 0
assert bisect.bisect_left([1, 1, 1], 1, 0, 3) == 0
assert bisect.bisect_left([1, 1, 1], 2, 0, 3) == 3
assert bisect.bisect_left([1, 1, 1, 1], 0, 0, 4) == 0
assert bisect.bisect_left([1, 1, 1, 1], 1, 0, 4) == 0
assert bisect.bisect_left([1, 1, 1, 1], 2, 0, 4) == 4
assert bisect.bisect_left([1, 2], 0, 0, 2) == 0
assert bisect.bisect_left([1, 2], 1, 0, 2) == 0
assert bisect.bisect_left([1, 2], 1.5, 0, 2) == 1
assert bisect.bisect_left([1, 2], 2, 0, 2) == 1
assert bisect.bisect_left([1, 2], 3, 0, 2) == 2
assert bisect.bisect_left([1, 1, 2, 2], 0, 0, 4) == 0
assert bisect.bisect_left([1, 1, 2, 2], 1, 0, 4) == 0
assert bisect.bisect_left([1, 1, 2, 2], 1.5, 0, 4) == 2
assert bisect.bisect_left([1, 1, 2, 2], 2, 0, 4) == 2
assert bisect.bisect_left([1, 1, 2, 2], 3, 0, 4) == 4
assert bisect.bisect_left([1, 2, 3], 0, 0, 3) == 0
assert bisect.bisect_left([1, 2, 3], 1, 0, 3) == 0
assert bisect.bisect_left([1, 2, 3], 1.5, 0, 3) == 1
assert bisect.bisect_left([1, 2, 3], 2, 0, 3) == 1
assert bisect.bisect_left([1, 2, 3], 2.5, 0, 3) == 2
assert bisect.bisect_left([1, 2, 3], 3, 0, 3) == 2
assert bisect.bisect_left([1, 2, 3], 4, 0, 3) == 3
assert bisect.bisect_left([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0, 10) == 0
assert bisect.bisect_left([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 0, 10) == 0
assert bisect.bisect_left([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 0, 10) == 1
assert bisect.bisect_left([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 0, 10) == 1
assert bisect.bisect_left([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 0, 10) == 3
assert bisect.bisect_left([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 0, 10) == 3
assert bisect.bisect_left([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 0, 10) == 6
assert bisect.bisect_left([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 0, 10) == 6
assert bisect.bisect_left([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 0, 10) == 10
@test
def bisect_right():
assert bisect.bisect_right(li, 4, 0, len(li)) == 5
assert bisect.bisect_right(li, 4) == 5
assert bisect.bisect_right(str, "b", 0, len(str)) == 3
assert bisect.bisect_right(lst, 25, 1, 3) == 2
# precomputed casesrightrt bisect.bisect_right(List[int](), 1, 0, 0) == 0
assert bisect.bisect_right([1], 0, 0, 1) == 0
assert bisect.bisect_right([1], 1, 0, 1) == 1
assert bisect.bisect_right([1], 2, 0, 1) == 1
assert bisect.bisect_right([1, 1], 0, 0, 2) == 0
assert bisect.bisect_right([1, 1], 1, 0, 2) == 2
assert bisect.bisect_right([1, 1], 2, 0, 2) == 2
assert bisect.bisect_right([1, 1, 1], 0, 0, 3) == 0
assert bisect.bisect_right([1, 1, 1], 1, 0, 3) == 3
assert bisect.bisect_right([1, 1, 1], 2, 0, 3) == 3
assert bisect.bisect_right([1, 1, 1, 1], 0, 0, 4) == 0
assert bisect.bisect_right([1, 1, 1, 1], 1, 0, 4) == 4
assert bisect.bisect_right([1, 1, 1, 1], 2, 0, 4) == 4
assert bisect.bisect_right([1, 2], 0, 0, 2) == 0
assert bisect.bisect_right([1, 2], 1, 0, 2) == 1
assert bisect.bisect_right([1, 2], 1.5, 0, 2) == 1
assert bisect.bisect_right([1, 2], 2, 0, 2) == 2
assert bisect.bisect_right([1, 2], 3, 0, 2) == 2
assert bisect.bisect_right([1, 1, 2, 2], 0, 0, 4) == 0
assert bisect.bisect_right([1, 1, 2, 2], 1, 0, 4) == 2
assert bisect.bisect_right([1, 1, 2, 2], 1.5, 0, 4) == 2
assert bisect.bisect_right([1, 1, 2, 2], 2, 0, 4) == 4
assert bisect.bisect_right([1, 1, 2, 2], 3, 0, 4) == 4
assert bisect.bisect_right([1, 2, 3], 0, 0, 3) == 0
assert bisect.bisect_right([1, 2, 3], 1, 0, 3) == 1
assert bisect.bisect_right([1, 2, 3], 1.5, 0, 3) == 1
assert bisect.bisect_right([1, 2, 3], 2, 0, 3) == 2
assert bisect.bisect_right([1, 2, 3], 2.5, 0, 3) == 2
assert bisect.bisect_right([1, 2, 3], 3, 0, 3) == 3
assert bisect.bisect_right([1, 2, 3], 4, 0, 3) == 3
assert bisect.bisect_right([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0, 10) == 0
assert bisect.bisect_right([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 0, 10) == 1
assert bisect.bisect_right([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 0, 10) == 1
assert bisect.bisect_right([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 0, 10) == 3
assert bisect.bisect_right([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 0, 10) == 3
assert bisect.bisect_right([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 0, 10) == 6
assert bisect.bisect_right([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 0, 10) == 6
assert bisect.bisect_right([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 0, 10) == 10
assert bisect.bisect_right([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 0, 10) == 10
@test
def bisect1():
assert bisect.bisect(li, 4, 0, len(li)) == 5
assert bisect.bisect(str, "b", 0, len(str)) == 3
assert bisect.bisect(lst, 25, 1, 3) == 2
# precomputed casesrightrt bisect.bisect_right(List[int](), 1, 0, 0) == 0
assert bisect.bisect([1], 0, 0, 1) == 0
assert bisect.bisect([1], 1, 0, 1) == 1
assert bisect.bisect([1], 2, 0, 1) == 1
assert bisect.bisect([1, 1], 0, 0, 2) == 0
assert bisect.bisect([1, 1], 1, 0, 2) == 2
assert bisect.bisect([1, 1], 2, 0, 2) == 2
assert bisect.bisect([1, 1, 1], 0, 0, 3) == 0
assert bisect.bisect([1, 1, 1], 1, 0, 3) == 3
assert bisect.bisect([1, 1, 1], 2, 0, 3) == 3
assert bisect.bisect([1, 1, 1, 1], 0, 0, 4) == 0
assert bisect.bisect([1, 1, 1, 1], 1, 0, 4) == 4
assert bisect.bisect([1, 1, 1, 1], 2, 0, 4) == 4
assert bisect.bisect([1, 2], 0, 0, 2) == 0
assert bisect.bisect([1, 2], 1, 0, 2) == 1
assert bisect.bisect([1, 2], 1.5, 0, 2) == 1
assert bisect.bisect([1, 2], 2, 0, 2) == 2
assert bisect.bisect([1, 2], 3, 0, 2) == 2
assert bisect.bisect([1, 1, 2, 2], 0, 0, 4) == 0
assert bisect.bisect([1, 1, 2, 2], 1, 0, 4) == 2
assert bisect.bisect([1, 1, 2, 2], 1.5, 0, 4) == 2
assert bisect.bisect([1, 1, 2, 2], 2, 0, 4) == 4
assert bisect.bisect([1, 1, 2, 2], 3, 0, 4) == 4
assert bisect.bisect([1, 2, 3], 0, 0, 3) == 0
assert bisect.bisect([1, 2, 3], 1, 0, 3) == 1
assert bisect.bisect([1, 2, 3], 1.5, 0, 3) == 1
assert bisect.bisect([1, 2, 3], 2, 0, 3) == 2
assert bisect.bisect([1, 2, 3], 2.5, 0, 3) == 2
assert bisect.bisect([1, 2, 3], 3, 0, 3) == 3
assert bisect.bisect([1, 2, 3], 4, 0, 3) == 3
assert bisect.bisect([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0, 10) == 0
assert bisect.bisect([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 0, 10) == 1
assert bisect.bisect([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 0, 10) == 1
assert bisect.bisect([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 0, 10) == 3
assert bisect.bisect([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 0, 10) == 3
assert bisect.bisect([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 0, 10) == 6
assert bisect.bisect([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 0, 10) == 6
assert bisect.bisect([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 0, 10) == 10
assert bisect.bisect([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 0, 10) == 10
@test
def insort_left():
bisect.insort_left(li, 5)
assert li == [1, 3, 4, 4, 4, 5, 6, 7]
@test
def insort_right():
li = [1, 3, 4, 4, 4, 6, 7]
bisect.insort_right(li, 0, 0, len(li))
assert li == [0, 1, 3, 4, 4, 4, 6, 7]
bisect.insort_right(li, 10)
assert li == [0, 1, 3, 4, 4, 4, 6, 7, 10]
@test
def insort():
li = [1, 3, 4, 4, 4, 6, 7]
bisect.insort(li, 0, 0, len(li))
assert li == [0, 1, 3, 4, 4, 4, 6, 7]
bisect.insort(li, 10)
assert li == [0, 1, 3, 4, 4, 4, 6, 7, 10]
bisect_left()
bisect_right()
bisect1()
insort_left()
insort_right()
insort()