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

58 lines
1.3 KiB
Python

"""
Test generic manipulation of objects.
"""
import unittest
from numba import jit
from numba.core import types
from numba.tests.support import TestCase
class C(object):
pass
def setattr_usecase(o, v):
o.x = v
def delattr_usecase(o):
del o.x
class TestAttributes(TestCase):
def test_setattr(self):
pyfunc = setattr_usecase
cfunc = jit((types.pyobject, types.int32), forceobj=True)(pyfunc)
c = C()
cfunc(c, 123)
self.assertEqual(c.x, 123)
def test_setattr_attribute_error(self):
pyfunc = setattr_usecase
cfunc = jit((types.pyobject, types.int32), forceobj=True)(pyfunc)
# Can't set undeclared slot
with self.assertRaises(AttributeError):
cfunc(object(), 123)
def test_delattr(self):
pyfunc = delattr_usecase
cfunc = jit((types.pyobject,), forceobj=True)(pyfunc)
c = C()
c.x = 123
cfunc(c)
with self.assertRaises(AttributeError):
c.x
def test_delattr_attribute_error(self):
pyfunc = delattr_usecase
cfunc = jit((types.pyobject,), forceobj=True)(pyfunc)
# Can't delete non-existing attribute
with self.assertRaises(AttributeError):
cfunc(C())
if __name__ == '__main__':
unittest.main()