summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_decimal.py
diff options
context:
space:
mode:
authorStefan Krah <skrah@bytereef.org>2016-07-17 12:12:59 (GMT)
committerStefan Krah <skrah@bytereef.org>2016-07-17 12:12:59 (GMT)
commit243d8a7866a3ea0e0dde9e80c5258d7171dfdebe (patch)
treed7d978e97dc3c06e1321361a9e920d77b457edae /Lib/test/test_decimal.py
parentcaaf53e748f664c40d77649fd47df0a8ab01ec27 (diff)
parent8c126f17f09eeb75d3d3c9737150384cd1dd9c03 (diff)
downloadcpython-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.py28
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):