81 lines
2.8 KiB
Python
81 lines
2.8 KiB
Python
import sys
|
|
import unittest
|
|
from ..ext.color import Color, COLOR
|
|
from .. import ext as sdl2ext
|
|
|
|
|
|
class SDL2ExtDrawTest(unittest.TestCase):
|
|
__tags__ = ["sdl", "sdl2ext"]
|
|
|
|
def setUp(self):
|
|
sdl2ext.init()
|
|
|
|
def tearDown(self):
|
|
sdl2ext.quit()
|
|
|
|
@unittest.skipIf(hasattr(sys, "pypy_version_info"),
|
|
"PyPy's ctypes can't do byref(value, offset)")
|
|
def test_fill(self):
|
|
# TODO: add exceptions and more bounding tests.
|
|
rects = ((0, 0, 3, 2),
|
|
(2, 3, 4, 2),
|
|
(5, -1, 2, 2),
|
|
(1, 7, 4, 8)
|
|
)
|
|
factory = sdl2ext.SpriteFactory(sdl2ext.SOFTWARE)
|
|
sprite = factory.create_sprite(size=(10, 10), bpp=32)
|
|
view = sdl2ext.PixelView(sprite)
|
|
for rect in rects:
|
|
sdl2ext.fill(sprite, 0)
|
|
colorval = sdl2ext.prepare_color(0xAABBCCDD, sprite)
|
|
sdl2ext.fill(sprite, 0xAABBCCDD, rect)
|
|
for y, row in enumerate(view):
|
|
for x, col in enumerate(row):
|
|
if y >= rect[1] and y < (rect[1] + rect[3]):
|
|
if x >= rect[0] and x < (rect[0] + rect[2]):
|
|
self.assertEqual(col, colorval,
|
|
"color mismatch at (x, y)")
|
|
else:
|
|
self.assertEqual(col, 0,
|
|
"color mismatch at (x, y)")
|
|
|
|
else:
|
|
self.assertEqual(col, 0, "color mismatch at (x, y)")
|
|
|
|
def test_prepare_color(self):
|
|
rcolors = (Color(0, 0, 0, 0),
|
|
Color(255, 255, 255, 255),
|
|
Color(8, 55, 110, 220),
|
|
)
|
|
icolors = (0x00000000,
|
|
0xFFFFFFFF,
|
|
0xAABBCCDD,
|
|
)
|
|
scolors = ("#000",
|
|
"#FFF",
|
|
"#AABBCCDD",
|
|
)
|
|
|
|
factory = sdl2ext.SpriteFactory(sdl2ext.SOFTWARE)
|
|
sprite = factory.create_sprite(size=(10, 10), bpp=32,
|
|
masks=(0xFF000000,
|
|
0x00FF0000,
|
|
0x0000FF00,
|
|
0x000000FF))
|
|
|
|
for color in rcolors:
|
|
c = sdl2ext.prepare_color(color, sprite)
|
|
self.assertEqual(c, int(color))
|
|
for color in icolors:
|
|
c = sdl2ext.prepare_color(color, sprite)
|
|
cc = COLOR(color)
|
|
self.assertEqual(c, int(cc))
|
|
for color in scolors:
|
|
c = sdl2ext.prepare_color(color, sprite)
|
|
cc = COLOR(color)
|
|
self.assertEqual(c, int(cc))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(unittest.main())
|