58 lines
1.5 KiB
Python
58 lines
1.5 KiB
Python
import pytest
|
|
|
|
from chrono.interval import Interval, Intervals
|
|
|
|
|
|
def test_interval_repr():
|
|
a = Interval(1, 4)
|
|
repr(a)
|
|
|
|
def test_interval_overlap():
|
|
a = Interval(1, 4)
|
|
|
|
assert not a.overlap(0, 1)
|
|
assert a.overlap(0, 2)
|
|
assert a.overlap(1, 4)
|
|
assert a.overlap(2, 3)
|
|
assert a.overlap(3, 5)
|
|
assert not a.overlap(5, 6)
|
|
|
|
def test_intervals():
|
|
intervals = Intervals()
|
|
|
|
assert len(list(intervals.search(0, 5))) == 0
|
|
|
|
for i in range(10):
|
|
intervals.add(i, i + 1, 1)
|
|
|
|
for i in range(10, 20):
|
|
intervals.add(i, i + 1, 2)
|
|
|
|
for i in range(5, 15):
|
|
intervals.add(i, i + 1, 3)
|
|
|
|
assert len(list(intervals.search(0, 5))) == 5
|
|
assert len(list(intervals.search(0, 10))) == 15
|
|
assert len(list(intervals.search(5, 15))) == 20
|
|
assert len(list(intervals.search(10, 20))) == 15
|
|
assert len(list(intervals.search(15, 20))) == 5
|
|
|
|
assert set(intervals.search_data(0, 5)) == {1}
|
|
assert set(intervals.search_data(0, 10)) == {1, 3}
|
|
assert set(intervals.search_data(5, 15)) == {1, 2, 3}
|
|
assert set(intervals.search_data(10, 20)) == {2, 3}
|
|
assert set(intervals.search_data(15, 20)) == {2}
|
|
|
|
for i in range(20):
|
|
assert intervals.overlap(i, i + 1)
|
|
|
|
intervals.remove_overlap(5, 15)
|
|
assert set(intervals.search_data(0, 20)) == {1, 2}
|
|
|
|
for i in range(5):
|
|
assert intervals.overlap(i, i + 1)
|
|
for i in range(5, 15):
|
|
assert not intervals.overlap(i, i + 1)
|
|
for i in range(15, 20):
|
|
assert intervals.overlap(i, i + 1)
|