19 lines
684 B
Python
19 lines
684 B
Python
import sys, random
|
|
sys.path.insert(0, "/root/.hermes/wizard-outputs/beam")
|
|
from binary_search_bounds import bisect_left, bisect_right, contains
|
|
|
|
# brute checks
|
|
for a in [[], [1], [1,2,3], [1,1,2,2,3]]:
|
|
for x in [0,1,2,3,4]:
|
|
assert bisect_left(a,x)==sum(1 for v in a if v<x), (a,x)
|
|
assert bisect_right(a,x)==sum(1 for v in a if v<=x), (a,x)
|
|
# random
|
|
random.seed(42)
|
|
for _ in range(1000):
|
|
n=random.randint(0,20)
|
|
a=sorted(random.randint(-5,5) for _ in range(n))
|
|
x=random.randint(-6,6)
|
|
assert bisect_left(a,x)==sum(1 for v in a if v<x)
|
|
assert bisect_right(a,x)==sum(1 for v in a if v<=x)
|
|
assert contains(a,x)==(x in a)
|
|
print("ALL TESTS PASSED") |