ai-content-maker/.venv/Lib/site-packages/numba/tests/test_python_int.py

52 lines
1.7 KiB
Python

import unittest
from numba import jit
from numba.core import types
force_pyobj_flags = {'forceobj': True}
no_pyobj_flags = {'nopython': True}
def return_int(a, b):
return a + b
class TestPythonInt(unittest.TestCase):
# Issue #474: ints should be returned rather than longs under Python 2,
# as much as possible.
def test_int_return_type(self, flags=force_pyobj_flags,
int_type=types.int64, operands=(3, 4)):
pyfunc = return_int
cfunc = jit((int_type, int_type), **flags)(pyfunc)
expected = pyfunc(*operands)
got = cfunc(*operands)
self.assertIs(type(got), type(expected))
self.assertEqual(got, expected)
def test_int_return_type_npm(self):
self.test_int_return_type(flags=no_pyobj_flags)
def test_unsigned_int_return_type(self, flags=force_pyobj_flags):
self.test_int_return_type(int_type=types.uint64, flags=flags)
def test_unsigned_int_return_type_npm(self):
self.test_unsigned_int_return_type(flags=no_pyobj_flags)
def test_long_int_return_type(self, flags=force_pyobj_flags):
# Same but returning a 64-bit integer. The return type should be
# `int` on 64-bit builds, `long` on 32-bit ones (or Windows).
self.test_int_return_type(flags=flags, operands=(2**33, 2**40))
def test_long_int_return_type_npm(self):
self.test_long_int_return_type(flags=no_pyobj_flags)
def test_longer_int_return_type(self, flags=force_pyobj_flags):
# This won't be supported in nopython mode.
self.test_int_return_type(flags=flags, operands=(2**70, 2**75))
if __name__ == '__main__':
unittest.main()