def test_impossible_union(): class Impossible: def __init__(self): self.left = -1 self.right = float("nan") def is_empty(self): return False with pytest.raises(NotImplementedError) as exinfo: interval = Interval(0, 1) other = Impossible() interval.union(other) assert str(exinfo.value).startswith("Can't merge [0, 1] and ")
def test_interval_union(): i01 = Interval(0, 1) assert Interval(None, None).union(Interval(42, 1337)) == Interval(42, 1337) assert Interval(42, 1337).union(Interval(None, None)) == Interval(42, 1337) assert i01.union(Interval(1, 3)) == Interval(0, 3) assert i01.union(Interval(2, 4)) == IntervalUnion([[0, 1], [2, 4]]) assert i01.union(Interval(3, 5)) == IntervalUnion([[0, 1], [3, 5]]) assert i01.union(Interval(-1, 6)) == Interval(-1, 6) assert Interval(1, 3).union(Interval(2, 4)) == Interval(1, 4) assert Interval(1, 3).union(Interval(3, 5)) == Interval(1, 5) assert Interval(1, 3).union(Interval(-1, 6)) == Interval(-1, 6) assert Interval(2, 4).union(Interval(3, 5)) == Interval(2, 5) assert Interval(2, 4).union(Interval(-1, 6)) == Interval(-1, 6) assert Interval(3, 5).union(Interval(-1, 6)) == Interval(-1, 6)
def test_interval_union_interval_unition(): i01 = Interval(0, 1) iu = IntervalUnion([[4, 5], [6, 7]]) iu_expected = IntervalUnion([[0, 1], [4, 5], [6, 7]]) assert i01.union(iu) == iu_expected assert i01 | iu == iu_expected