def test_empty(): assert i.open(1, 1).empty() assert i.open(3, 3).empty() assert i.openclosed(3, 3).empty() assert i.closedopen(3, 3).empty() assert not i.open(3, 4).empty() assert not i.openclosed(3, 4).empty()
def test_complement_open(): unit = i.open(0, 1) complement = unit.complement() (lower_interval, upper_interval) = sorted(complement) # an IntervalSet is not sorted assert lower_interval == i.openclosed(i.NEGATIVE_INFINITY, 0) assert upper_interval == i.closedopen(1, i.INFINITY)
def test_complement_whole(): whole = i.open(i.NEGATIVE_INFINITY, i.INFINITY) (lower_interval, upper_interval) = sorted( whole.complement()) # an IntervalSet is not sorted assert lower_interval == i.openclosed(i.NEGATIVE_INFINITY, i.NEGATIVE_INFINITY) assert upper_interval == i.closedopen(i.INFINITY, i.INFINITY)
def test_non_equality(): small, medium = get_intervals()[:2] assert small != medium assert small != i.openclosed(1, 5) assert small != i.closedopen(1, 5) assert small != i.closed(1, 5) assert small != i.Interval(i.Interval.OPEN, 1, 7, i.Interval.OPEN) assert small != i.open(100, 288)
def test_non_equality(): small, medium = get_intervals()[:2] assert small != medium assert small != i.openclosed(1,5) assert small != i.closedopen(1,5) assert small != i.closed(1,5) assert small != i.Interval(i.Interval.OPEN, 1, 7, i.Interval.OPEN) assert small != i.open(100, 288)
def test_subtract_overlapping(): left = IntervalSet((i.open(1, 4), i.open(5, 10))) right = IntervalSet((i.open(0, 2), i.open(6, 8))) expected = IntervalSet(( i.closedopen(2, 4), i.openclosed(5, 6), i.closedopen(8, 10), )) assert left - right == expected
def test_openclosed_interval_construction_using_helper(): expected_lower = i.Interval.OPEN expectedlower_value = 10 expected_upper_value = 100 expected_upper = i.Interval.CLOSED result = i.openclosed(10, 100) assert result._lower == expected_lower assert result.lower_value == expectedlower_value assert result._upper_value == expected_upper_value assert result._upper == expected_upper
def test_complement(): one = i.open(3, 6) two = i.open(7, 10) intervals = IntervalSet([one, two]) complement = intervals.complement() (lower, middle, upper) = sorted(complement) # an IntervalSet is not sorted assert lower == i.openclosed(i.NEGATIVE_INFINITY, 3) assert middle == i.closed(6, 7) assert upper == i.closedopen(10, i.INFINITY)
def test_openclosed_interval_construction_using_helper(): expected_lower = i.Interval.OPEN expectedlower_value = 10 expected_upper_value = 100 expected_upper = i.Interval.CLOSED result = i.openclosed(10, 100) assert result.lower == expected_lower assert result.lower_value == expectedlower_value assert result.upper_value == expected_upper_value assert result.upper == expected_upper
def test_intersection_of_overlapping(): first = IntervalSet((i.open(1, 5), i.closed(7, 10))) second = IntervalSet((i.open(8, 21), i.closed(22, 23))) expected = IntervalSet((i.openclosed(8, 10), )) result = first.intersection(second) assert result == expected
def test_interval_copy(): assert i.open(1, 4).copy() == i.open(1, 4) assert i.openclosed(1, 4).copy() == i.openclosed(1, 4) assert i.closedopen(1, 4).copy() == i.closedopen(1, 4) assert i.closed(1, 4).copy() == i.closed(1, 4)
def test_overlaps(): assert i.open(1, 4).overlaps(i.open(3, 6)) assert i.open(3, 6).overlaps(i.open(1, 4)) assert i.openclosed(1, 4).overlaps(i.open(3, 6))
def test_subtract_overlapping_end(): left = i.open(1, 10) right = i.open(5, 10) expected = i.openclosed(1, 5) assert left - right == expected
def test_subtract_interval_from_interval_set(): left = IntervalSet((i.open(1, 4), i.open(5, 10))) right = i.open(8, 15) expected = IntervalSet((i.open(1, 4), i.openclosed(5, 8))) assert left - right == expected
def test_contains_self_open_closed(): small = i.openclosed(1, 5) medium = i.openclosed(1, 10) assert small in small assert medium not in small assert small in medium
def test_repr(): assert repr(i.open(1, 2)) == '(1, 2)' assert repr(i.openclosed(1, 2)) == '(1, 2]' assert repr(i.closed(1, 2)) == '[1, 2]' assert repr(i.closedopen(1, 2)) == '[1, 2)'
def test_subtract_overlapping(): left = i.open(3, 6) right = i.open(4, 8) expected = i.openclosed(3, 4) assert left - right == expected
def test_replace(): assert i.open(1, 4).replace(upper_value=5) == i.open(1, 5) assert i.open(1, 4).replace(upper=i.Interval.CLOSED) == i.openclosed(1, 4) assert i.open(1, 4).replace(lower=i.Interval.CLOSED) == i.closedopen(1, 4) assert i.open(1, 4).replace(lower_value=0) == i.open(0, 4)
def test_subtract_contained(): left = i.open(3, 6) right = i.open(4, 5) expected = IntervalSet([i.openclosed(3, 4), i.closedopen(5, 6)]) assert left - right == expected
def test_overlaps_touching(): assert not i.openclosed(1, 4).overlaps(i.openclosed(4, 5)) assert not i.closedopen(1, 4).overlaps(i.closedopen(4, 5)) assert not i.open(1, 4).overlaps(i.open(4, 5)) assert i.closed(1, 4).overlaps(i.closed(4, 5))
def test_intersection_of_overlapping(): first = IntervalSet((i.open(1, 5), i.closed(7, 10))) second = IntervalSet((i.open(8, 21), i.closed(22,23))) expected = IntervalSet((i.openclosed(8, 10), )) result = first.intersection(second) assert result == expected