def test_FiniteReal_and(): assert FR(1) & FR(2) is EmptySet assert FR(1, 2) & FR(2) == FR(2) assert FR(1, 2) & FN('2') is EmptySet assert FR(1, 2) & FN('2', b=True) is EmptySet assert FR(1, 2) & Interval(0, 1) == FR(1) assert FR(1, 2) & Interval.Ropen(0, 1) is EmptySet assert FR(0, 2) & Interval(0, 1) == FR(0) assert FR(0, 2) & Interval.Lopen(0, 1) is EmptySet assert FR(-1, 1) & Interval(-10, 10) == FR(-1, 1) assert FR(-1, 11) & Interval(-10, 10) == FR(-1)
def test_FiniteReal_or(): assert FR(1) | FR(2) == FR(1, 2) assert FR(1, 2) | FR(2) == FR(1, 2) assert FR(1, 2) | FN('2') == Union(FR(1, 2), FN('2')) assert FR(1, 2) | Interval(0, 1) == Union(Interval(0, 1), FR(2)) assert FR(1, 2) | Interval.Ropen(0, 1) == Union(Interval(0, 1), FR(2)) assert FR(0, 1, 2) | Interval.open(0, 1) == Union(Interval(0, 1), FR(2)) assert FR(0, 2) | Interval.Lopen(0, 1) == Union(Interval(0, 1), FR(2)) assert FR(0, 2) | Interval.Lopen(2.5, 10) == Union(Interval.Lopen(2.5, 10), FR(0, 2)) assert FR(-1, 1) | Interval(-10, 10) == Interval(-10, 10) assert FR(-1, 11) | Interval(-10, 10) == Union(Interval(-10, 10), FR(11))
def test_Union_and(): x = (Interval(0, 1) | FR(1)) & (FN('a')) assert x is EmptySet x = (FN('x', b=True) | Interval(0, 1) | FR(1)) & (FN('a')) assert x == FN('a') x = (FN('x') | Interval(0, 1) | FR(1)) & (FN('a')) assert x is EmptySet x = (FN('x') | Interval.open(0, 1) | FR(7)) & ( (FN('x')) | FR(.5) | Interval(.75, 1.2)) assert x == Union(FR(.5), FN('x'), Interval.Ropen(.75, 1)) x = (FN('x') | Interval.open(0, 1) | FR(7)) & (FR(3)) assert x is EmptySet x = (Interval.Lopen(-5, inf)) & (Interval(0, inf) | FR(inf)) assert x == Interval(0, inf) x = (FR(1, 2) | Interval.Ropen(-inf, 0)) & Interval(0, inf) assert x == FR(1, 2) x = (FR(1, 12) | Interval(0, 5) | Interval(7, 10)) & Interval(4, 12) assert x == Union(Interval(4, 5), Interval(7, 10), FR(12))
def test_Union_or(): x = Interval(0, 1) | Interval(5, 6) | Interval(10, 11) assert x == Union(Interval(0, 1), Interval(5, 6), Interval(10, 11)) x = Interval.Ropen(0, 1) | Interval.Lopen(1, 2) | Interval(10, 11) assert x == Union(Interval.Ropen(0, 1), Interval.Lopen(1, 2), Interval(10, 11)) x = Interval.Ropen(0, 1) | Interval.Lopen(1, 2) | Interval(10, 11) | FR(1) assert x == Union(Interval(0, 2), Interval(10, 11)) x = (Interval.Ropen(0, 1) | Interval.Lopen(1, 2)) | (Interval(10, 11) | FR(1)) assert x == Union(Interval(0, 2), Interval(10, 11)) x = FR(1) | ((Interval.Ropen(0,1) | Interval.Lopen(1,2) | FR(10,13)) \ | (Interval.Lopen(10,11) | FR(7))) assert x == Union(Interval(0, 2), Interval(10, 11), FR(13, 7)) assert 2 in x assert 13 in x x = FN('f') | (FR(1) | FN('g', b=True)) assert x == Union(FR(1), FN('g', b=True)) assert 'w' in x assert 'g' not in x
def test_FiniteNominal_in(): with pytest.raises(Exception): FN() assert 'a' in FN('a') assert 'b' not in FN('a') assert 'b' in FN('a', b=True) assert 'a' not in FN('a', b=True) assert 'a' in FN(b=True)
def test_FiniteReal_in(): with pytest.raises(Exception): FR() assert 1 in FN(1, 2) assert 2 not in FN(1)
def test_FiniteNominal_or(): # EmptySet assert FN('a', 'b') | EmptySet == FN('a', 'b') # Nominal assert FN('a', 'b') | FN('c') == FN('a', 'b', 'c') assert FN('a', 'b', 'c') | FN('a') == FN('a', 'b', 'c') assert FN('a', 'b', 'c') | FN(b=True) == FN(b=True) assert FN('a', 'b', 'c', b=True) | FN('a') == FN('b', 'c', b=True) assert FN('a', 'b', 'c', b=True) | FN('d', 'a', 'b') == FN('c', b=True) assert FN('a', 'b', 'c', b=True) | FN('d') == FN('a', 'b', 'c', b=True) assert FN('a', 'b', 'c') | FN('a', b=True) == FN(b=True) assert FN('a', 'b', 'c') | FN('d', 'a', 'b', b=True) == FN('d', b=True) assert FN('a', 'b', 'c') | FN('d', b=True) == FN('d', b=True) assert FN('a', 'b', 'c', b=True) | FN('d', b=True) == FN(b=True) assert FN('a', 'b', 'c', b=True) | FN('a', b=True) == FN('a', b=True) assert FN(b=True) | FN(b=True) == FN(b=True) # FiniteReal assert FN('a') | FR(1) == Union(FN('a'), FR(1)) assert FN('a', b=True) | FR(1) == Union(FR(1), FN('a', b=True)) # Interval assert FN('a') | Interval(0, 1) == Union(FN('a'), Interval(0, 1))
def test_FiniteNominal_and(): assert FN('a', 'b') & EmptySet is EmptySet assert FN('a', 'b') & FN('c') is EmptySet assert FN('a', 'b', 'c') & FN('a') == FN('a') assert FN('a', 'b', 'c') & FN(b=True) == FN('a', 'b', 'c') assert FN('a', 'b', 'c') & FN('a') == FN('a') assert FN('a', 'b', 'c', b=True) & FN('a') is EmptySet assert FN('a', 'b', 'c', b=True) & FN('d', 'a', 'b') == FN('d') assert FN('a', 'b', 'c', b=True) & FN('d') == FN('d') assert FN('a', 'b', 'c') & FN('a', b=True) == FN('b', 'c') assert FN('a', 'b', 'c') & FN('d', 'a', 'b', b=True) == FN('c') assert FN('a', 'b', 'c') & FN('d', b=True) == FN('a', 'b', 'c') assert FN('a', 'b', 'c', b=True) & FN('d', b=True) == FN('a', 'b', 'c', 'd', b=True) assert FN('a', 'b', 'c', b=True) & FN('a', b=True) == FN('a', 'b', 'c', b=True) assert FN(b=True) & FN(b=True) == FN(b=True) # FiniteReal assert FN('a') & FR(1) is EmptySet assert FN('a', b=True) & FR(1) is EmptySet # Interval assert FN('a') & Interval(0, 1) is EmptySet
def test_FiniteNominal_invert(): assert ~(FN('a')) == FN('a', b=True) assert ~(FN('a', b=True)) == FN('a') assert ~FN(b=True) == EmptySet