123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- from sympy.core.symbol import Symbol
- from sympy.plotting.intervalmath import interval
- from sympy.plotting.intervalmath.interval_membership import intervalMembership
- from sympy.plotting.experimental_lambdify import experimental_lambdify
- from sympy.testing.pytest import raises
- def test_creation():
- assert intervalMembership(True, True)
- raises(TypeError, lambda: intervalMembership(True))
- raises(TypeError, lambda: intervalMembership(True, True, True))
- def test_getitem():
- a = intervalMembership(True, False)
- assert a[0] is True
- assert a[1] is False
- raises(IndexError, lambda: a[2])
- def test_str():
- a = intervalMembership(True, False)
- assert str(a) == 'intervalMembership(True, False)'
- assert repr(a) == 'intervalMembership(True, False)'
- def test_equivalence():
- a = intervalMembership(True, True)
- b = intervalMembership(True, False)
- assert (a == b) is False
- assert (a != b) is True
- a = intervalMembership(True, False)
- b = intervalMembership(True, False)
- assert (a == b) is True
- assert (a != b) is False
- def test_not():
- x = Symbol('x')
- r1 = x > -1
- r2 = x <= -1
- i = interval
- f1 = experimental_lambdify((x,), r1)
- f2 = experimental_lambdify((x,), r2)
- tt = i(-0.1, 0.1, is_valid=True)
- tn = i(-0.1, 0.1, is_valid=None)
- tf = i(-0.1, 0.1, is_valid=False)
- assert f1(tt) == ~f2(tt)
- assert f1(tn) == ~f2(tn)
- assert f1(tf) == ~f2(tf)
- nt = i(0.9, 1.1, is_valid=True)
- nn = i(0.9, 1.1, is_valid=None)
- nf = i(0.9, 1.1, is_valid=False)
- assert f1(nt) == ~f2(nt)
- assert f1(nn) == ~f2(nn)
- assert f1(nf) == ~f2(nf)
- ft = i(1.9, 2.1, is_valid=True)
- fn = i(1.9, 2.1, is_valid=None)
- ff = i(1.9, 2.1, is_valid=False)
- assert f1(ft) == ~f2(ft)
- assert f1(fn) == ~f2(fn)
- assert f1(ff) == ~f2(ff)
- def test_boolean():
- # There can be 9*9 test cases in full mapping of the cartesian product.
- # But we only consider 3*3 cases for simplicity.
- s = [
- intervalMembership(False, False),
- intervalMembership(None, None),
- intervalMembership(True, True)
- ]
- # Reduced tests for 'And'
- a1 = [
- intervalMembership(False, False),
- intervalMembership(False, False),
- intervalMembership(False, False),
- intervalMembership(False, False),
- intervalMembership(None, None),
- intervalMembership(None, None),
- intervalMembership(False, False),
- intervalMembership(None, None),
- intervalMembership(True, True)
- ]
- a1_iter = iter(a1)
- for i in range(len(s)):
- for j in range(len(s)):
- assert s[i] & s[j] == next(a1_iter)
- # Reduced tests for 'Or'
- a1 = [
- intervalMembership(False, False),
- intervalMembership(None, False),
- intervalMembership(True, False),
- intervalMembership(None, False),
- intervalMembership(None, None),
- intervalMembership(True, None),
- intervalMembership(True, False),
- intervalMembership(True, None),
- intervalMembership(True, True)
- ]
- a1_iter = iter(a1)
- for i in range(len(s)):
- for j in range(len(s)):
- assert s[i] | s[j] == next(a1_iter)
- # Reduced tests for 'Xor'
- a1 = [
- intervalMembership(False, False),
- intervalMembership(None, False),
- intervalMembership(True, False),
- intervalMembership(None, False),
- intervalMembership(None, None),
- intervalMembership(None, None),
- intervalMembership(True, False),
- intervalMembership(None, None),
- intervalMembership(False, True)
- ]
- a1_iter = iter(a1)
- for i in range(len(s)):
- for j in range(len(s)):
- assert s[i] ^ s[j] == next(a1_iter)
- # Reduced tests for 'Not'
- a1 = [
- intervalMembership(True, False),
- intervalMembership(None, None),
- intervalMembership(False, True)
- ]
- a1_iter = iter(a1)
- for i in range(len(s)):
- assert ~s[i] == next(a1_iter)
- def test_boolean_errors():
- a = intervalMembership(True, True)
- raises(ValueError, lambda: a & 1)
- raises(ValueError, lambda: a | 1)
- raises(ValueError, lambda: a ^ 1)
|