def test_arraystruct(self): import platform IS_PYPY = 'PyPy' == platform.python_implementation() if IS_PYPY: return import pygame.tests.test_utils.arrinter as ai import ctypes as ct c_byte_p = ct.POINTER(ct.c_byte) c = pygame.Color(5, 7, 13, 23) flags = (ai.PAI_CONTIGUOUS | ai.PAI_FORTRAN | ai.PAI_ALIGNED | ai.PAI_NOTSWAPPED) for i in range(1, 5): c.set_length(i) inter = ai.ArrayInterface(c) self.assertEqual(inter.two, 2) self.assertEqual(inter.nd, 1) self.assertEqual(inter.typekind, 'u') self.assertEqual(inter.itemsize, 1) self.assertEqual(inter.flags, flags) self.assertEqual(inter.shape[0], i) self.assertEqual(inter.strides[0], 1) data = ct.cast(inter.data, c_byte_p) for j in range(i): self.assertEqual(data[j], c[j])
def test_itemsize(self): for bytes_per_pixel in range(1, 5): bits_per_pixel = 8 * bytes_per_pixel sf = pygame.Surface((2, 2), 0, bits_per_pixel) ar = pygame.PixelArray(sf) ai = arrinter.ArrayInterface(ar) self.assertEqual(ai.itemsize, bytes_per_pixel)
def test_shape(self): for shape in [[4, 16], [5, 13]]: w, h = shape sf = pygame.Surface(shape, 0, 32) ar = pygame.PixelArray(sf) ai = arrinter.ArrayInterface(ar) ai_shape = [ai.shape[i] for i in range(ai.nd)] self.assertEqual(ai_shape, shape) ar2 = ar[::2, :] ai2 = arrinter.ArrayInterface(ar2) w2 = len(([0] * w)[::2]) ai_shape = [ai2.shape[i] for i in range(ai2.nd)] self.assertEqual(ai_shape, [w2, h]) ar2 = ar[:, ::2] ai2 = arrinter.ArrayInterface(ar2) h2 = len(([0] * h)[::2]) ai_shape = [ai2.shape[i] for i in range(ai2.nd)] self.assertEqual(ai_shape, [w, h2])
def test_basic(self): # Check unchanging fields. sf = pygame.Surface((2, 2), 0, 32) ar = pygame.PixelArray(sf) ai = arrinter.ArrayInterface(ar) self.assertEqual(ai.two, 2) self.assertEqual(ai.typekind, 'u') self.assertEqual(ai.nd, 2) self.assertEqual(ai.data, ar._pixels_address)