mirror of
https://github.com/python/cpython.git
synced 2025-07-28 21:55:21 +00:00
Moved Rational._binary_float_to_ratio() to float.as_integer_ratio() because
it's useful outside of rational numbers. This is my first C code that had to do anything significant. Please be more careful when looking over it.
This commit is contained in:
parent
56eadd9d0d
commit
3ea7b41b58
3 changed files with 180 additions and 56 deletions
|
@ -5,7 +5,7 @@ from test.test_support import fcmp, have_unicode, TESTFN, unlink, \
|
|||
run_unittest, run_with_locale
|
||||
from operator import neg
|
||||
|
||||
import sys, warnings, cStringIO, random, UserDict
|
||||
import sys, warnings, cStringIO, random, rational, UserDict
|
||||
warnings.filterwarnings("ignore", "hex../oct.. of negative int",
|
||||
FutureWarning, __name__)
|
||||
warnings.filterwarnings("ignore", "integer argument expected",
|
||||
|
@ -688,6 +688,25 @@ class BuiltinTest(unittest.TestCase):
|
|||
self.assertAlmostEqual(float(Foo3(21)), 42.)
|
||||
self.assertRaises(TypeError, float, Foo4(42))
|
||||
|
||||
def test_floatasratio(self):
|
||||
R = rational.Rational
|
||||
self.assertEqual(R(0, 1),
|
||||
R(*float(0.0).as_integer_ratio()))
|
||||
self.assertEqual(R(5, 2),
|
||||
R(*float(2.5).as_integer_ratio()))
|
||||
self.assertEqual(R(1, 2),
|
||||
R(*float(0.5).as_integer_ratio()))
|
||||
self.assertEqual(R(4728779608739021, 2251799813685248),
|
||||
R(*float(2.1).as_integer_ratio()))
|
||||
self.assertEqual(R(-4728779608739021, 2251799813685248),
|
||||
R(*float(-2.1).as_integer_ratio()))
|
||||
self.assertEqual(R(-2100, 1),
|
||||
R(*float(-2100.0).as_integer_ratio()))
|
||||
|
||||
self.assertRaises(OverflowError, float('inf').as_integer_ratio)
|
||||
self.assertRaises(OverflowError, float('-inf').as_integer_ratio)
|
||||
self.assertRaises(ValueError, float('nan').as_integer_ratio)
|
||||
|
||||
def test_getattr(self):
|
||||
import sys
|
||||
self.assert_(getattr(sys, 'stdout') is sys.stdout)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue