text: import numpy as np
  from numba import from_dtype, cuda
  from numba.cuda.testing import skip_on_cudasim, CUDATestCase
  import unittest
  
  class TestAlignment(CUDATestCase):
      def test_record_alignment(self):
          rec_dtype = np.dtype([('a', 'int32'), ('b', 'float64')], align=True)
          rec = from_dtype(rec_dtype)
  
          @cuda.jit((rec[:],))
          def foo(a):
              i = cuda.grid(1)
              a[i].a = a[i].b
  
          a_recarray = np.recarray(3, dtype=rec_dtype)
          for i in range(a_recarray.size):
              a_rec = a_recarray[i]
              a_rec.a = 0
              a_rec.b = (i + 1) * 123
  
          foo[1, 3](a_recarray)
  
          self.assertTrue(np.all(a_recarray.a == a_recarray.b))
  
      @skip_on_cudasim('Simulator does not check alignment')
      def test_record_alignment_error(self):
          rec_dtype = np.dtype([('a', 'int32'), ('b', 'float64')])
          rec = from_dtype(rec_dtype)
  
          with self.assertRaises(Exception) as raises:
              @cuda.jit((rec[:],))
              def foo(a):
                  i = cuda.grid(1)
                  a[i].a = a[i].b
  
          self.assertTrue('type float64 is not aligned' in str(raises.exception))
  
  
  if __name__ == '__main__':
      unittest.main()
  