Spaces:
Sleeping
Sleeping
File size: 4,143 Bytes
6a86ad5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
"""Tests for PythonRational type. """
from sympy.polys.domains import PythonRational as QQ
from sympy.testing.pytest import raises
def test_PythonRational__init__():
assert QQ(0).numerator == 0
assert QQ(0).denominator == 1
assert QQ(0, 1).numerator == 0
assert QQ(0, 1).denominator == 1
assert QQ(0, -1).numerator == 0
assert QQ(0, -1).denominator == 1
assert QQ(1).numerator == 1
assert QQ(1).denominator == 1
assert QQ(1, 1).numerator == 1
assert QQ(1, 1).denominator == 1
assert QQ(-1, -1).numerator == 1
assert QQ(-1, -1).denominator == 1
assert QQ(-1).numerator == -1
assert QQ(-1).denominator == 1
assert QQ(-1, 1).numerator == -1
assert QQ(-1, 1).denominator == 1
assert QQ( 1, -1).numerator == -1
assert QQ( 1, -1).denominator == 1
assert QQ(1, 2).numerator == 1
assert QQ(1, 2).denominator == 2
assert QQ(3, 4).numerator == 3
assert QQ(3, 4).denominator == 4
assert QQ(2, 2).numerator == 1
assert QQ(2, 2).denominator == 1
assert QQ(2, 4).numerator == 1
assert QQ(2, 4).denominator == 2
def test_PythonRational__hash__():
assert hash(QQ(0)) == hash(0)
assert hash(QQ(1)) == hash(1)
assert hash(QQ(117)) == hash(117)
def test_PythonRational__int__():
assert int(QQ(-1, 4)) == 0
assert int(QQ( 1, 4)) == 0
assert int(QQ(-5, 4)) == -1
assert int(QQ( 5, 4)) == 1
def test_PythonRational__float__():
assert float(QQ(-1, 2)) == -0.5
assert float(QQ( 1, 2)) == 0.5
def test_PythonRational__abs__():
assert abs(QQ(-1, 2)) == QQ(1, 2)
assert abs(QQ( 1, 2)) == QQ(1, 2)
def test_PythonRational__pos__():
assert +QQ(-1, 2) == QQ(-1, 2)
assert +QQ( 1, 2) == QQ( 1, 2)
def test_PythonRational__neg__():
assert -QQ(-1, 2) == QQ( 1, 2)
assert -QQ( 1, 2) == QQ(-1, 2)
def test_PythonRational__add__():
assert QQ(-1, 2) + QQ( 1, 2) == QQ(0)
assert QQ( 1, 2) + QQ(-1, 2) == QQ(0)
assert QQ(1, 2) + QQ(1, 2) == QQ(1)
assert QQ(1, 2) + QQ(3, 2) == QQ(2)
assert QQ(3, 2) + QQ(1, 2) == QQ(2)
assert QQ(3, 2) + QQ(3, 2) == QQ(3)
assert 1 + QQ(1, 2) == QQ(3, 2)
assert QQ(1, 2) + 1 == QQ(3, 2)
def test_PythonRational__sub__():
assert QQ(-1, 2) - QQ( 1, 2) == QQ(-1)
assert QQ( 1, 2) - QQ(-1, 2) == QQ( 1)
assert QQ(1, 2) - QQ(1, 2) == QQ( 0)
assert QQ(1, 2) - QQ(3, 2) == QQ(-1)
assert QQ(3, 2) - QQ(1, 2) == QQ( 1)
assert QQ(3, 2) - QQ(3, 2) == QQ( 0)
assert 1 - QQ(1, 2) == QQ( 1, 2)
assert QQ(1, 2) - 1 == QQ(-1, 2)
def test_PythonRational__mul__():
assert QQ(-1, 2) * QQ( 1, 2) == QQ(-1, 4)
assert QQ( 1, 2) * QQ(-1, 2) == QQ(-1, 4)
assert QQ(1, 2) * QQ(1, 2) == QQ(1, 4)
assert QQ(1, 2) * QQ(3, 2) == QQ(3, 4)
assert QQ(3, 2) * QQ(1, 2) == QQ(3, 4)
assert QQ(3, 2) * QQ(3, 2) == QQ(9, 4)
assert 2 * QQ(1, 2) == QQ(1)
assert QQ(1, 2) * 2 == QQ(1)
def test_PythonRational__truediv__():
assert QQ(-1, 2) / QQ( 1, 2) == QQ(-1)
assert QQ( 1, 2) / QQ(-1, 2) == QQ(-1)
assert QQ(1, 2) / QQ(1, 2) == QQ(1)
assert QQ(1, 2) / QQ(3, 2) == QQ(1, 3)
assert QQ(3, 2) / QQ(1, 2) == QQ(3)
assert QQ(3, 2) / QQ(3, 2) == QQ(1)
assert 2 / QQ(1, 2) == QQ(4)
assert QQ(1, 2) / 2 == QQ(1, 4)
raises(ZeroDivisionError, lambda: QQ(1, 2) / QQ(0))
raises(ZeroDivisionError, lambda: QQ(1, 2) / 0)
def test_PythonRational__pow__():
assert QQ(1)**10 == QQ(1)
assert QQ(2)**10 == QQ(1024)
assert QQ(1)**(-10) == QQ(1)
assert QQ(2)**(-10) == QQ(1, 1024)
def test_PythonRational__eq__():
assert (QQ(1, 2) == QQ(1, 2)) is True
assert (QQ(1, 2) != QQ(1, 2)) is False
assert (QQ(1, 2) == QQ(1, 3)) is False
assert (QQ(1, 2) != QQ(1, 3)) is True
def test_PythonRational__lt_le_gt_ge__():
assert (QQ(1, 2) < QQ(1, 4)) is False
assert (QQ(1, 2) <= QQ(1, 4)) is False
assert (QQ(1, 2) > QQ(1, 4)) is True
assert (QQ(1, 2) >= QQ(1, 4)) is True
assert (QQ(1, 4) < QQ(1, 2)) is True
assert (QQ(1, 4) <= QQ(1, 2)) is True
assert (QQ(1, 4) > QQ(1, 2)) is False
assert (QQ(1, 4) >= QQ(1, 2)) is False
|