|
3 | 3 |
|
4 | 4 | import sys |
5 | 5 |
|
| 6 | +import enum |
6 | 7 | import random |
7 | 8 | import math |
8 | 9 | import array |
@@ -1349,6 +1350,37 @@ def test_shift_bool(self): |
1349 | 1350 | self.assertEqual(type(value << shift), int) |
1350 | 1351 | self.assertEqual(type(value >> shift), int) |
1351 | 1352 |
|
| 1353 | + def test_as_integer_ratio(self): |
| 1354 | + tests = [10, 0, -10, 1] |
| 1355 | + for value in tests: |
| 1356 | + numerator, denominator = value.as_integer_ratio() |
| 1357 | + self.assertEqual((numerator, denominator), (value, 1)) |
| 1358 | + self.assertIsInstance(numerator, int) |
| 1359 | + self.assertIsInstance(denominator, int) |
| 1360 | + |
| 1361 | + def test_as_integer_ratio_maxint(self): |
| 1362 | + x = sys.maxsize + 1 |
| 1363 | + self.assertEqual(x.as_integer_ratio()[0], x) |
| 1364 | + |
| 1365 | + def test_as_integer_ratio_bool(self): |
| 1366 | + self.assertEqual(True.as_integer_ratio(), (1, 1)) |
| 1367 | + self.assertEqual(False.as_integer_ratio(), (0, 1)) |
| 1368 | + self.assertEqual(type(True.as_integer_ratio()[0]), int) |
| 1369 | + self.assertEqual(type(False.as_integer_ratio()[0]), int) |
| 1370 | + |
| 1371 | + def test_as_integer_ratio_int_enum(self): |
| 1372 | + class Foo(enum.IntEnum): |
| 1373 | + X = 42 |
| 1374 | + self.assertEqual(Foo.X.as_integer_ratio(), (42, 1)) |
| 1375 | + self.assertEqual(type(Foo.X.as_integer_ratio()[0]), int) |
| 1376 | + |
| 1377 | + def test_as_integer_ratio_int_flag(self): |
| 1378 | + class Foo(enum.IntFlag): |
| 1379 | + R = 1 << 2 |
| 1380 | + self.assertEqual(Foo.R.as_integer_ratio(), (4, 1)) |
| 1381 | + self.assertEqual(type(Foo.R.as_integer_ratio()[0]), int) |
| 1382 | + |
| 1383 | + |
1352 | 1384 |
|
1353 | 1385 | if __name__ == "__main__": |
1354 | 1386 | unittest.main() |
0 commit comments