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()