Update test_int.py to CPython 3.10.2

This commit is contained in:
Jeong YunWon committed 2022-03-13 03:56:48 +09:00
1 parent 21c4ea5544
commit 64ef4916ec
1 file changed
+58 -9
+58 -9
View File
@@ -340,8 +340,6 @@ class IntTestCases(unittest.TestCase):
def test_string_float(self):
self.assertRaises(ValueError, int, '1.2')
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_intconversion(self):
# Test __int__()
class ClassicMissingMethods:
@@ -380,15 +378,23 @@ class IntTestCases(unittest.TestCase):
int(ExceptionalTrunc())
for trunc_result_base in (object, Classic):
class Integral(trunc_result_base):
def __int__(self):
class Index(trunc_result_base):
def __index__(self):
return 42
class TruncReturnsNonInt(base):
def __trunc__(self):
return Integral()
with self.assertWarns(DeprecationWarning):
self.assertEqual(int(TruncReturnsNonInt()), 42)
return Index()
self.assertEqual(int(TruncReturnsNonInt()), 42)
class Intable(trunc_result_base):
def __int__(self):
return 42
class TruncReturnsNonIndex(base):
def __trunc__(self):
return Intable()
self.assertEqual(int(TruncReturnsNonInt()), 42)
class NonIntegral(trunc_result_base):
def __trunc__(self):
@@ -420,6 +426,21 @@ class IntTestCases(unittest.TestCase):
with self.assertRaises(TypeError):
int(TruncReturnsBadInt())
def test_int_subclass_with_index(self):
class MyIndex(int):
def __index__(self):
return 42
class BadIndex(int):
def __index__(self):
return 42.0
my_int = MyIndex(7)
self.assertEqual(my_int, 7)
self.assertEqual(int(my_int), 7)
self.assertEqual(int(BadIndex()), 0)
def test_int_subclass_with_int(self):
class MyInt(int):
def __int__(self):
@@ -433,11 +454,21 @@ class IntTestCases(unittest.TestCase):
self.assertEqual(my_int, 7)
self.assertEqual(int(my_int), 42)
self.assertRaises(TypeError, int, BadInt())
my_int = BadInt(7)
self.assertEqual(my_int, 7)
self.assertRaises(TypeError, int, my_int)
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_int_returns_int_subclass(self):
class BadIndex:
def __index__(self):
return True
class BadIndex2(int):
def __index__(self):
return True
class BadInt:
def __int__(self):
return True
@@ -446,6 +477,10 @@ class IntTestCases(unittest.TestCase):
def __int__(self):
return True
class TruncReturnsBadIndex:
def __trunc__(self):
return BadIndex()
class TruncReturnsBadInt:
def __trunc__(self):
return BadInt()
@@ -454,6 +489,17 @@ class IntTestCases(unittest.TestCase):
def __trunc__(self):
return True
bad_int = BadIndex()
with self.assertWarns(DeprecationWarning):
n = int(bad_int)
self.assertEqual(n, 1)
self.assertIs(type(n), int)
bad_int = BadIndex2()
n = int(bad_int)
self.assertEqual(n, 0)
self.assertIs(type(n), int)
bad_int = BadInt()
with self.assertWarns(DeprecationWarning):
n = int(bad_int)
@@ -466,12 +512,15 @@ class IntTestCases(unittest.TestCase):
self.assertEqual(n, 1)
self.assertIs(type(n), int)
bad_int = TruncReturnsBadInt()
bad_int = TruncReturnsBadIndex()
with self.assertWarns(DeprecationWarning):
n = int(bad_int)
self.assertEqual(n, 1)
self.assertIs(type(n), int)
bad_int = TruncReturnsBadInt()
self.assertRaises(TypeError, int, bad_int)
good_int = TruncReturnsIntSubclass()
n = int(good_int)
self.assertEqual(n, 1)