def test_1d_array(self): # An array where the size is in the type a = ffi.new('short[32]', [2*i for i in range(32)]) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('32 * int16')) self.assertEqual(dd_as_py(dd), [2*i for i in range(32)]) # An array where the size is not in the type a = ffi.new('double[]', [1.5*i for i in range(32)]) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('32 * float64')) self.assertEqual(dd_as_py(dd), [1.5*i for i in range(32)])
def test_scalar(self): a = ffi.new('int *', 3) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('int32')) self.assertEqual(dd_as_py(dd), 3) self.assertTrue(isinstance(dd_as_py(dd), int)) a = ffi.new('float *', 3.25) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('float32')) self.assertEqual(dd_as_py(dd), 3.25) self.assertTrue(isinstance(dd_as_py(dd), float))
def test_1d_array(self): # An array where the size is in the type a = ffi.new('short[32]', [2 * i for i in range(32)]) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('32 * int16')) self.assertEqual(dd_as_py(dd), [2 * i for i in range(32)]) # An array where the size is not in the type a = ffi.new('double[]', [1.5 * i for i in range(32)]) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('32 * float64')) self.assertEqual(dd_as_py(dd), [1.5 * i for i in range(32)])
def test_scalar(self): a = ffi.new('int *', 3) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('int32')) self.assertEqual(dd_as_py(dd), 3) self.assertTrue(isinstance(dd_as_py(dd), int)) a = ffi.new('float *', 3.25) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('float32')) self.assertEqual(dd_as_py(dd), 3.25) self.assertTrue(isinstance(dd_as_py(dd), float))
def test_2d_array(self): # An array where the leading array size is in the type vals = [[2**i + j for i in range(35)] for j in range(32)] a = ffi.new('long long[32][35]', vals) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('32 * 35 * int64')) self.assertEqual(dd_as_py(dd), vals) # An array where the leading array size is not in the type vals = [[a + b*2 for a in range(35)] for b in range(32)] a = ffi.new('unsigned char[][35]', vals) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('32 * 35 * uint8')) self.assertEqual(dd_as_py(dd), vals)
def test_2d_array(self): # An array where the leading array size is in the type vals = [[2**i + j for i in range(35)] for j in range(32)] a = ffi.new('long long[32][35]', vals) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('32 * 35 * int64')) self.assertEqual(dd_as_py(dd), vals) # An array where the leading array size is not in the type vals = [[a + b * 2 for a in range(35)] for b in range(32)] a = ffi.new('unsigned char[][35]', vals) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('32 * 35 * uint8')) self.assertEqual(dd_as_py(dd), vals)
def test_3d_array(self): # Simple 3D array vals = [[[(i + 2 * j + 3 * k) for i in range(10)] for j in range(12)] for k in range(14)] a = ffi.new('unsigned int[14][12][10]', vals) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('14 * 12 * 10 * uint32')) self.assertEqual(dd_as_py(dd), vals)
def test_3d_array(self): # Simple 3D array vals = [[[(i + 2*j + 3*k) for i in range(10)] for j in range(12)] for k in range(14)] a = ffi.new('unsigned int[14][12][10]', vals) dd = data_descriptor_from_cffi(ffi, a, writable=True) self.assertEqual(dd.dshape, dshape('14 * 12 * 10 * uint32')) self.assertEqual(dd_as_py(dd), vals)