|
|
|
|
@ -47,6 +47,66 @@ class PixelStorage_(unittest.TestCase):
|
|
|
|
|
self.assertEqual(a.image_height, 256) |
|
|
|
|
self.assertEqual(a.skip, Vector3i(3, 1, 2)) |
|
|
|
|
|
|
|
|
|
class Image(unittest.TestCase): |
|
|
|
|
def test_init(self): |
|
|
|
|
storage = PixelStorage() |
|
|
|
|
storage.alignment = 1 |
|
|
|
|
a = Image2D(storage, PixelFormat.RGB8_UNORM) |
|
|
|
|
self.assertEqual(a.storage.alignment, 1) |
|
|
|
|
self.assertEqual(a.size, Vector2i()) |
|
|
|
|
self.assertEqual(a.format, PixelFormat.RGB8_UNORM) |
|
|
|
|
self.assertEqual(len(a.data), 0) |
|
|
|
|
|
|
|
|
|
b = Image2D(PixelFormat.R8I) |
|
|
|
|
self.assertEqual(b.storage.alignment, 4) |
|
|
|
|
self.assertEqual(b.size, Vector2i()) |
|
|
|
|
self.assertEqual(b.format, PixelFormat.R8I) |
|
|
|
|
self.assertEqual(len(b.data), 0) |
|
|
|
|
|
|
|
|
|
@unittest.skip("No way to create a non-empty Image at the moment") |
|
|
|
|
def test_data(self): |
|
|
|
|
a = Image2D(PixelFormat.R8I, Vector2i(3, 17)) # TODO |
|
|
|
|
a_refcount = sys.getrefcount(a) |
|
|
|
|
|
|
|
|
|
data = a.data |
|
|
|
|
self.assertEqual(len(data), 3*17*1) |
|
|
|
|
self.assertIs(data.owner, a) |
|
|
|
|
self.assertEqual(sys.getrefcount(a), a_refcount + 1) |
|
|
|
|
|
|
|
|
|
del data |
|
|
|
|
self.assertEqual(sys.getrefcount(a), a_refcount) |
|
|
|
|
|
|
|
|
|
def test_data_empty(self): |
|
|
|
|
a = Image2D(PixelFormat.R8I) |
|
|
|
|
a_refcount = sys.getrefcount(a) |
|
|
|
|
|
|
|
|
|
data = a.data |
|
|
|
|
self.assertEqual(len(data), 0) |
|
|
|
|
self.assertIs(data.owner, None) |
|
|
|
|
self.assertEqual(sys.getrefcount(a), a_refcount) |
|
|
|
|
|
|
|
|
|
@unittest.skip("No way to create a non-empty Image at the moment") |
|
|
|
|
def test_pixels(self): |
|
|
|
|
a = Image2D(PixelFormat.RG32UI, Vector2i(3, 17)) # TODO |
|
|
|
|
a_refcount = sys.getrefcount(a) |
|
|
|
|
|
|
|
|
|
pixels = a.pixels |
|
|
|
|
self.assertEqual(pixels.size, (3, 17, 8)) |
|
|
|
|
self.assertIs(pixels.owner, a) |
|
|
|
|
self.assertEqual(sys.getrefcount(a), a_refcount + 1) |
|
|
|
|
|
|
|
|
|
del pixels |
|
|
|
|
self.assertEqual(sys.getrefcount(a), a_refcount) |
|
|
|
|
|
|
|
|
|
def test_pixels_empty(self): |
|
|
|
|
a = Image2D(PixelFormat.R8I) |
|
|
|
|
a_refcount = sys.getrefcount(a) |
|
|
|
|
|
|
|
|
|
pixels = a.pixels |
|
|
|
|
self.assertEqual(pixels.size, (0, 0, 1)) |
|
|
|
|
self.assertIs(pixels.owner, None) |
|
|
|
|
self.assertEqual(sys.getrefcount(a), a_refcount) |
|
|
|
|
|
|
|
|
|
class ImageView(unittest.TestCase): |
|
|
|
|
def test_init(self): |
|
|
|
|
# 2x4 RGB pixels, padded for alignment |
|
|
|
|
@ -135,6 +195,41 @@ class ImageView(unittest.TestCase):
|
|
|
|
|
self.assertIs(b.owner, data) |
|
|
|
|
self.assertEqual(sys.getrefcount(data), data_refcount + 2) |
|
|
|
|
|
|
|
|
|
@unittest.skip("No way to create a non-empty Image at the moment") |
|
|
|
|
def test_init_image(self): |
|
|
|
|
a = Image2D(PixelFormat.R32F, Vector2i(3, 17)) # TODO |
|
|
|
|
a_refcount = sys.getrefcount(a) |
|
|
|
|
|
|
|
|
|
view = ImageView2D(a) |
|
|
|
|
self.assertEqual(view.size, (3, 17)) |
|
|
|
|
self.assertIs(view.owner, a) |
|
|
|
|
self.assertEqual(sys.getrefcount(a), a_refcount + 1) |
|
|
|
|
|
|
|
|
|
del view |
|
|
|
|
self.assertEqual(sys.getrefcount(a), a_refcount) |
|
|
|
|
|
|
|
|
|
mview = MutableImageView2D(a) |
|
|
|
|
self.assertEqual(mview.size, (3, 17)) |
|
|
|
|
self.assertIs(mview.owner, a) |
|
|
|
|
self.assertEqual(sys.getrefcount(a), a_refcount + 1) |
|
|
|
|
|
|
|
|
|
del mview |
|
|
|
|
self.assertEqual(sys.getrefcount(a), a_refcount) |
|
|
|
|
|
|
|
|
|
def test_init_image_empty(self): |
|
|
|
|
a = Image2D(PixelFormat.R32F) |
|
|
|
|
a_refcount = sys.getrefcount(a) |
|
|
|
|
|
|
|
|
|
view = ImageView2D(a) |
|
|
|
|
self.assertEqual(view.size, (0, 0)) |
|
|
|
|
self.assertIs(view.owner, None) |
|
|
|
|
self.assertEqual(sys.getrefcount(a), a_refcount) |
|
|
|
|
|
|
|
|
|
mview = MutableImageView2D(a) |
|
|
|
|
self.assertEqual(mview.size, (0, 0)) |
|
|
|
|
self.assertIs(mview.owner, None) |
|
|
|
|
self.assertEqual(sys.getrefcount(a), a_refcount) |
|
|
|
|
|
|
|
|
|
def test_set_data(self): |
|
|
|
|
# 2x4 RGB pixels, padded for alignment |
|
|
|
|
data = (b'rgbRGB ' |
|
|
|
|
|