summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorLisa Roach <lisaroach14@gmail.com>2018-09-14 06:56:23 (GMT)
committerRaymond Hettinger <rhettinger@users.noreply.github.com>2018-09-14 06:56:23 (GMT)
commit5ac704306f4b81ae3f28d8742408d3214b145e8a (patch)
tree34a39f0216d918b679367a84e05f2326aef70a7c /Lib
parent83df50ea5757816c7338d27f21fd18b1e79206f7 (diff)
downloadcpython-5ac704306f4b81ae3f28d8742408d3214b145e8a.zip
cpython-5ac704306f4b81ae3f28d8742408d3214b145e8a.tar.gz
cpython-5ac704306f4b81ae3f28d8742408d3214b145e8a.tar.bz2
bpo-33073: Adding as_integer_ratio to ints. (GH-8750)
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_doctest.py3
-rw-r--r--Lib/test/test_long.py32
2 files changed, 34 insertions, 1 deletions
diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py
index 83941c1..797bdb8 100644
--- a/Lib/test/test_doctest.py
+++ b/Lib/test/test_doctest.py
@@ -665,7 +665,7 @@ plain ol' Python and is guaranteed to be available.
True
>>> real_tests = [t for t in tests if len(t.examples) > 0]
>>> len(real_tests) # objects that actually have doctests
- 8
+ 9
>>> for t in real_tests:
... print('{} {}'.format(len(t.examples), t.name))
...
@@ -675,6 +675,7 @@ plain ol' Python and is guaranteed to be available.
2 builtins.float.hex
1 builtins.hex
1 builtins.int
+ 3 builtins.int.as_integer_ratio
2 builtins.int.bit_length
1 builtins.oct
diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py
index 8472889..7c883ba 100644
--- a/Lib/test/test_long.py
+++ b/Lib/test/test_long.py
@@ -3,6 +3,7 @@ from test import support
import sys
+import enum
import random
import math
import array
@@ -1349,6 +1350,37 @@ class LongTest(unittest.TestCase):
self.assertEqual(type(value << shift), int)
self.assertEqual(type(value >> shift), int)
+ def test_as_integer_ratio(self):
+ tests = [10, 0, -10, 1]
+ for value in tests:
+ numerator, denominator = value.as_integer_ratio()
+ self.assertEqual((numerator, denominator), (value, 1))
+ self.assertIsInstance(numerator, int)
+ self.assertIsInstance(denominator, int)
+
+ def test_as_integer_ratio_maxint(self):
+ x = sys.maxsize + 1
+ self.assertEqual(x.as_integer_ratio()[0], x)
+
+ def test_as_integer_ratio_bool(self):
+ self.assertEqual(True.as_integer_ratio(), (1, 1))
+ self.assertEqual(False.as_integer_ratio(), (0, 1))
+ self.assertEqual(type(True.as_integer_ratio()[0]), int)
+ self.assertEqual(type(False.as_integer_ratio()[0]), int)
+
+ def test_as_integer_ratio_int_enum(self):
+ class Foo(enum.IntEnum):
+ X = 42
+ self.assertEqual(Foo.X.as_integer_ratio(), (42, 1))
+ self.assertEqual(type(Foo.X.as_integer_ratio()[0]), int)
+
+ def test_as_integer_ratio_int_flag(self):
+ class Foo(enum.IntFlag):
+ R = 1 << 2
+ self.assertEqual(Foo.R.as_integer_ratio(), (4, 1))
+ self.assertEqual(type(Foo.R.as_integer_ratio()[0]), int)
+
+
if __name__ == "__main__":
unittest.main()