From fea4d6c2b1399f009ae57cc319250020dbb86f33 Mon Sep 17 00:00:00 2001 From: drewcassidy Date: Tue, 6 Apr 2021 23:41:26 -0700 Subject: [PATCH] improved rawtexture tests --- tests/images | 2 +- tests/test_texture.py | 58 ++++++++++++++++++++++--------------------- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/tests/images b/tests/images index 1023b49..31c8ceb 160000 --- a/tests/images +++ b/tests/images @@ -1 +1 @@ -Subproject commit 1023b4934473aef3c2ff24687bef4f41db1f702b +Subproject commit 31c8cebdc5c668ce71fcf7d6ecd8b6f47c6b471e diff --git a/tests/test_texture.py b/tests/test_texture.py index dfaa1f4..753d566 100644 --- a/tests/test_texture.py +++ b/tests/test_texture.py @@ -1,60 +1,62 @@ import unittest import nose -import quicktex -import tests.images as images -import tempfile +import os.path +from tests.images import image_path +from quicktex import RawTexture from PIL import Image class TestRawTexture(unittest.TestCase): - boilerplate = Image.open(images.image_path + '/Boilerplate.png') - bp_bytes = boilerplate.tobytes('raw', 'RGBX') - width = boilerplate.width - height = boilerplate.height + boilerplate = Image.open(os.path.join(image_path, 'Boilerplate.png')) + boilerplate_bytes = boilerplate.tobytes('raw', 'RGBX') + width, height = boilerplate.size + size = width * height * 4 def setUp(self): - self.texture = quicktex.RawTexture(self.width, self.height) + self.tex = RawTexture(self.width, self.height) def test_size(self): """Test byte size and image dimensions""" - self.assertEqual(self.texture.size, self.width * self.height * 4, "incorrect texture byte size") - self.assertEqual(self.texture.width, self.width, "incorrect texture width") - self.assertEqual(self.texture.height, self.height, "incorrect texture height") - self.assertEqual(self.texture.dimensions, (self.width, self.height), "incorrect texture dimension tuple") + self.assertEqual(self.tex.size, self.size, "incorrect texture byte size") + self.assertEqual(self.tex.width, self.width, "incorrect texture width") + self.assertEqual(self.tex.height, self.height, "incorrect texture height") + self.assertEqual(self.tex.dimensions, (self.width, self.height), "incorrect texture dimensions") def test_pixels(self): """Test getting and setting pixel values""" color1 = (69, 13, 12, 0) # totally random color color2 = (19, 142, 93, 44) - self.texture[0, 0] = color1 - self.texture[-1, -1] = color2 - data = self.texture.tobytes() + self.tex[0, 0] = color1 + self.tex[-1, -1] = color2 + data = self.tex.tobytes() - self.assertEqual(self.texture[0, 0], color1) - self.assertEqual(self.texture[-1, -1], color2) + self.assertEqual(self.tex[0, 0], color1) + self.assertEqual(self.tex[-1, -1], color2) self.assertEqual(tuple(data[0:4]), color1) self.assertEqual(tuple(data[-4:]), color2) + with self.assertRaises(IndexError): - thing = self.texture[self.width, self.height] + thing = self.tex[self.width, self.height] with self.assertRaises(IndexError): - thing = self.texture[-1 - self.width, -1 - self.height] + thing = self.tex[-1 - self.width, -1 - self.height] def test_buffer(self): """Test the Buffer protocol implementation for RawTexture""" - with tempfile.TemporaryFile('r+b') as fp: - fp.write(self.bp_bytes) - fp.seek(0) - bytes_read = fp.readinto(self.texture) + mv = memoryview(self.tex) - self.assertEqual(bytes_read, self.texture.size, 'buffer over/underrun') - self.assertEqual(self.bp_bytes, self.texture.tobytes(), 'Incorrect bytes after writing to buffer') - self.assertEqual(self.bp_bytes, bytes(self.texture), "Incorrect bytes after reading from buffer") + self.assertFalse(mv.readonly, 'buffer is readonly') + self.assertTrue(mv.c_contiguous, 'buffer is not contiguous') + self.assertEqual(mv.nbytes, self.size, 'buffer is the wrong size') + self.assertEqual(mv.format, 'B', 'buffer has the wrong format') + + mv[:] = self.boilerplate_bytes + self.assertEqual(mv.tobytes(), self.boilerplate_bytes, 'incorrect buffer data') def test_frombytes(self): """Test the frombytes factory function""" - bytetex = quicktex.RawTexture.frombytes(self.bp_bytes, *self.boilerplate.size) - self.assertEqual(self.bp_bytes, bytetex.tobytes(), 'Incorrect bytes after writing to buffer') + bytetex = RawTexture.frombytes(self.boilerplate_bytes, *self.boilerplate.size) + self.assertEqual(self.boilerplate_bytes, bytetex.tobytes(), 'Incorrect bytes after writing to buffer') if __name__ == '__main__':