You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.3 KiB
63 lines
2.3 KiB
import pycarl
|
|
import math
|
|
from configurations import PackageSelector
|
|
|
|
|
|
class TestRational(PackageSelector):
|
|
def test_create(self, package):
|
|
r1 = package.Rational(package.Integer(1), package.Integer(2))
|
|
assert package.numerator(r1) == 1
|
|
assert package.denominator(r1) == 2
|
|
|
|
def test_parse(self, package):
|
|
r1 = package.Rational("1/2")
|
|
assert package.numerator(r1) == 1
|
|
assert package.denominator(r1) == 2
|
|
r2 = package.Rational("1090843549285935/1125899906842624")
|
|
assert package.numerator(r2) == package.Integer("1090843549285935")
|
|
assert package.denominator(r2) == package.Integer("1125899906842624")
|
|
|
|
def test_addition(self, package):
|
|
r1 = package.Rational(package.Integer(2), package.Integer(5))
|
|
r2 = package.Rational(package.Integer(3), package.Integer(10))
|
|
res = r1 + r2
|
|
assert isinstance(res, package.Rational)
|
|
assert res == package.Rational("7/10")
|
|
|
|
def test_subtraction(self, package):
|
|
r1 = package.Rational(package.Integer(2), package.Integer(5))
|
|
r2 = package.Rational(package.Integer(3), package.Integer(10))
|
|
res = r1 - r2
|
|
assert isinstance(res, package.Rational)
|
|
assert res == package.Rational("1/10")
|
|
|
|
def test_multiplication(self, package):
|
|
r1 = package.Rational(package.Integer(2), package.Integer(5))
|
|
r2 = package.Rational(package.Integer(3), package.Integer(10))
|
|
res = r1 * r2
|
|
assert isinstance(res, package.Rational)
|
|
assert res == package.Rational("3/25")
|
|
|
|
def test_division(self, package):
|
|
r1 = package.Rational(package.Integer(2), package.Integer(5))
|
|
r2 = package.Rational(package.Integer(3), package.Integer(10))
|
|
res = r1 / r2
|
|
assert isinstance(res, package.Rational)
|
|
assert res == package.Rational("4/3")
|
|
|
|
def test_eq(self, package):
|
|
r3 = package.Rational("3/1")
|
|
assert r3 == package.Integer(3)
|
|
assert r3 == 3
|
|
assert r3 != package.Integer(1)
|
|
assert r3 != 2
|
|
r2 = package.Rational("1/2")
|
|
assert r3 != r2
|
|
|
|
def test_comparison_infinity(self, package):
|
|
r4 = package.Rational("1/2")
|
|
assert pycarl.inf > r4
|
|
assert r4 < pycarl.inf
|
|
assert r4 > -pycarl.inf
|
|
assert -pycarl.inf < r4
|
|
|