def test_Range(): assert Range(5) == Range(0, 5) == Range(0, 5, 1) r = Range(10, 20, 2) assert 12 in r assert 8 not in r assert 11 not in r assert 30 not in r assert list(Range(0, 5)) == list(range(5)) assert list(Range(5, 0, -1)) == list(range(1, 6)) assert Range(0, 10, -1) == S.EmptySet assert Range(5, 15).sup == 14 assert Range(5, 15).inf == 5 assert Range(15, 5, -1).sup == 15 assert Range(15, 5, -1).inf == 6 assert Range(10, 67, 10).sup == 60 assert Range(60, 7, -10).inf == 10 assert len(Range(10, 38, 10)) == 3 assert Range(0, 0, 5) == S.EmptySet assert Range(1, 1) == S.EmptySet pytest.raises(ValueError, lambda: Range(0, oo, oo)) pytest.raises(ValueError, lambda: Range(-oo, oo)) pytest.raises(ValueError, lambda: Range(-oo, oo, 2)) pytest.raises(ValueError, lambda: Range(0, pi, 1)) assert 5 in Range(0, oo, 5) assert -5 in Range(-oo, 0, 5) assert Range(0, oo) assert Range(-oo, 0) assert Range(0, -oo, -1) assert Range(0, oo, 2)._last_element is oo assert Range(-oo, 1, 1)._last_element is S.Zero it = iter(Range(-oo, 0, 2)) assert (next(it), next(it)) == (-2, -4) assert Range(-1, 10, 1).intersection(S.Integers) == Range(-1, 10, 1) assert Range(-1, 10, 1).intersection(S.Naturals) == Range(1, 10, 1) assert (Range(-1, 10, 1).intersection(Set(x)) == Intersection(Range(-1, 10, 1), Set(x), evaluate=False)) assert Range(1, 10, 1)._ith_element(5) == 6 # the index starts from zero assert Range(1, 10, 1)._last_element == 9 assert Range(1, 10, 1).boundary == Range(1, 10, 1) assert Range(range(10)) == Range(10) assert Range(range(1, 10)) == Range(1, 10) assert Range(range(1, 10, 2)) == Range(1, 10, 2) assert Range(range(1000000000000)) == Range(1000000000000)
def test_naturals(): N = S.Naturals assert 5 in N assert -5 not in N assert 5.5 not in N ni = iter(N) a, b, c, d = next(ni), next(ni), next(ni), next(ni) assert (a, b, c, d) == (1, 2, 3, 4) assert isinstance(a, Basic) assert N.intersection(Interval(-5, 5)) == Range(1, 6) assert N.intersection(Interval(-5, 5, True, True)) == Range(1, 5) assert N.intersection(Set(x)) == Intersection(N, Set(x), evaluate=False) assert N.boundary == N assert N.inf == 1 assert N.sup == oo
def test_integers(): Z = S.Integers assert 5 in Z assert -5 in Z assert 5.5 not in Z zi = iter(Z) a, b, c, d = next(zi), next(zi), next(zi), next(zi) assert (a, b, c, d) == (0, 1, -1, 2) assert isinstance(a, Basic) assert Z.intersection(Interval(-5, 5)) == Range(-5, 6) assert Z.intersection(Interval(-5, 5, True, True)) == Range(-4, 5) assert Z.intersection(Set(x)) == Intersection(Z, Set(x), evaluate=False) assert Z.inf == -oo assert Z.sup == oo assert Z.boundary == Z assert imageset(Lambda((x, y), x * y), Z) == ImageSet(Lambda((x, y), x * y), Z)