test_pythonrational.py 4.0 KB

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