mirror of
https://github.com/drewcassidy/quicktex.git
synced 2024-09-13 06:37:34 +00:00
improved rawtexture tests
This commit is contained in:
parent
f06fc809b2
commit
fea4d6c2b1
@ -1 +1 @@
|
||||
Subproject commit 1023b4934473aef3c2ff24687bef4f41db1f702b
|
||||
Subproject commit 31c8cebdc5c668ce71fcf7d6ecd8b6f47c6b471e
|
@ -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__':
|
||||
|
Loading…
Reference in New Issue
Block a user