mirror of https://github.com/python/cpython.git
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
import unittest
|
|
import sys
|
|
|
|
from test.support import import_helper
|
|
|
|
# Skip this test if the _testcapi module isn't available.
|
|
_testcapi = import_helper.import_module('_testcapi')
|
|
|
|
|
|
class LongTests(unittest.TestCase):
|
|
|
|
def test_compact(self):
|
|
for n in {
|
|
# Edge cases
|
|
*(2**n for n in range(66)),
|
|
*(-2**n for n in range(66)),
|
|
*(2**n - 1 for n in range(66)),
|
|
*(-2**n + 1 for n in range(66)),
|
|
# Essentially random
|
|
*(37**n for n in range(14)),
|
|
*(-37**n for n in range(14)),
|
|
}:
|
|
with self.subTest(n=n):
|
|
is_compact, value = _testcapi.call_long_compact_api(n)
|
|
if is_compact:
|
|
self.assertEqual(n, value)
|
|
|
|
def test_compact_known(self):
|
|
# Sanity-check some implementation details (we don't guarantee
|
|
# that these are/aren't compact)
|
|
self.assertEqual(_testcapi.call_long_compact_api(-1), (True, -1))
|
|
self.assertEqual(_testcapi.call_long_compact_api(0), (True, 0))
|
|
self.assertEqual(_testcapi.call_long_compact_api(256), (True, 256))
|
|
self.assertEqual(_testcapi.call_long_compact_api(sys.maxsize),
|
|
(False, -1))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|