Skip to content

Commit f10e073

Browse files
committed
Implement "Fraction.is_integer()", following python/cpython#100488
1 parent 3d12e40 commit f10e073

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/quicktions.pyx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,10 @@ cdef class Fraction:
509509
else:
510510
return cls(digits, pow10(-exp))
511511

512+
def is_integer(self):
513+
"""Return True if the Fraction is an integer."""
514+
return self._denominator == 1
515+
512516
def as_integer_ratio(self):
513517
"""Return the integer ratio as a tuple.
514518

src/test_fractions.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,19 @@ def testFromDecimal(self):
468468
ValueError, "Cannot convert sNaN to Fraction.",
469469
F.from_decimal, Decimal("snan"))
470470

471+
def test_is_integer(self):
472+
self.assertTrue(F(1, 1).is_integer())
473+
self.assertTrue(F(-1, 1).is_integer())
474+
self.assertTrue(F(1, -1).is_integer())
475+
self.assertTrue(F(2, 2).is_integer())
476+
self.assertTrue(F(-2, 2).is_integer())
477+
self.assertTrue(F(2, -2).is_integer())
478+
479+
self.assertFalse(F(1, 2).is_integer())
480+
self.assertFalse(F(-1, 2).is_integer())
481+
self.assertFalse(F(1, -2).is_integer())
482+
self.assertFalse(F(-1, -2).is_integer())
483+
471484
def test_as_integer_ratio(self):
472485
self.assertEqual(F(4, 6).as_integer_ratio(), (2, 3))
473486
self.assertEqual(F(-4, 6).as_integer_ratio(), (-2, 3))

0 commit comments

Comments
 (0)