diff options
author | Stefan Krah <skrah@bytereef.org> | 2016-07-17 12:12:59 (GMT) |
---|---|---|
committer | Stefan Krah <skrah@bytereef.org> | 2016-07-17 12:12:59 (GMT) |
commit | 243d8a7866a3ea0e0dde9e80c5258d7171dfdebe (patch) | |
tree | d7d978e97dc3c06e1321361a9e920d77b457edae /Lib/test/test_decimal.py | |
parent | caaf53e748f664c40d77649fd47df0a8ab01ec27 (diff) | |
parent | 8c126f17f09eeb75d3d3c9737150384cd1dd9c03 (diff) | |
download | cpython-243d8a7866a3ea0e0dde9e80c5258d7171dfdebe.zip cpython-243d8a7866a3ea0e0dde9e80c5258d7171dfdebe.tar.gz cpython-243d8a7866a3ea0e0dde9e80c5258d7171dfdebe.tar.bz2 |
Merge 3.5.
Diffstat (limited to 'Lib/test/test_decimal.py')
-rw-r--r-- | Lib/test/test_decimal.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py index 64e1cc6..7492f54 100644 --- a/Lib/test/test_decimal.py +++ b/Lib/test/test_decimal.py @@ -5431,6 +5431,34 @@ class CWhitebox(unittest.TestCase): y = Decimal(10**(9*25)).__sizeof__() self.assertEqual(y, x+4) + def test_internal_use_of_overridden_methods(self): + Decimal = C.Decimal + + # Unsound subtyping + class X(float): + def as_integer_ratio(self): + return 1 + def __abs__(self): + return self + + class Y(float): + def __abs__(self): + return [1]*200 + + class I(int): + def bit_length(self): + return [1]*200 + + class Z(float): + def as_integer_ratio(self): + return (I(1), I(1)) + def __abs__(self): + return self + + for cls in X, Y, Z: + self.assertEqual(Decimal.from_float(cls(101.1)), + Decimal.from_float(101.1)) + @requires_docstrings @unittest.skipUnless(C, "test requires C version") class SignatureTest(unittest.TestCase): |