图片解析应用
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.

139 lines
4.0 KiB

  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