def test_SDL_GetRendererInfo(self): failed = 0 rcount = render.SDL_GetNumRenderDrivers() for i in range(rcount): window = video.SDL_CreateWindow(b"Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN) self.assertIsInstance(window.contents, video.SDL_Window) renderer = render.SDL_CreateRenderer(window, i, self._RENDERFLAGS) if not (renderer and renderer.contents): failed += 1 video.SDL_DestroyWindow(window) continue self.assertIsInstance(renderer.contents, render.SDL_Renderer) info = render.SDL_RendererInfo() ret = render.SDL_GetRendererInfo(renderer, byref(info)) self.assertEqual(ret, 0) render.SDL_DestroyRenderer(renderer) #self.assertRaises(sdl.SDLError, render.SDL_GetRendererInfo, # renderer) video.SDL_DestroyWindow(window) self.assertFalse(failed == rcount, "could not create a renderer") self.assertRaises((AttributeError, TypeError), render.SDL_GetRendererInfo, None) self.assertRaises((AttributeError, TypeError), render.SDL_GetRendererInfo, "Test") dogc()
def test_SDL_GetSetRenderDrawBlendMode(self): failed = 0 rcount = render.SDL_GetNumRenderDrivers() for i in range(rcount): window = video.SDL_CreateWindow(b"Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN) self.assertIsInstance(window.contents, video.SDL_Window) renderer = render.SDL_CreateRenderer(window, i, self._RENDERFLAGS) if not (renderer and renderer.contents): failed += 1 video.SDL_DestroyWindow(window) continue self.assertIsInstance(renderer.contents, render.SDL_Renderer) modes = ( blendmode.SDL_BLENDMODE_NONE, blendmode.SDL_BLENDMODE_ADD, blendmode.SDL_BLENDMODE_BLEND, blendmode.SDL_BLENDMODE_MOD, ) for mode in modes: ret = render.SDL_SetRenderDrawBlendMode(renderer, mode) bmode = blendmode.SDL_BlendMode() ret = render.SDL_GetRenderDrawBlendMode(renderer, byref(bmode)) self.assertEqual(ret, 0) self.assertEqual(bmode.value, mode) render.SDL_DestroyRenderer(renderer) #self.assertRaises(sdl.SDLError, render.SDL_SetRenderDrawBlendMode, # renderer, video.SDL_BLENDMODE_ADD) #self.assertRaises(sdl.SDLError, render.SDL_GetRenderDrawBlendMode, # renderer) video.SDL_DestroyWindow(window) self.assertFalse(failed == rcount, "could not create a renderer") dogc()
def test_SDL_GetRendererInfo(self): failed = 0 rcount = render.SDL_GetNumRenderDrivers() for i in range(rcount): window = video.SDL_CreateWindow(b"Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN) assert isinstance(window.contents, video.SDL_Window) renderer = render.SDL_CreateRenderer(window, i, self._RENDERFLAGS) if not (renderer and renderer.contents): failed += 1 video.SDL_DestroyWindow(window) continue assert isinstance(renderer.contents, render.SDL_Renderer) info = render.SDL_RendererInfo() ret = render.SDL_GetRendererInfo(renderer, byref(info)) assert ret == 0 render.SDL_DestroyRenderer(renderer) #self.assertRaises(sdl.SDLError, render.SDL_GetRendererInfo, # renderer) video.SDL_DestroyWindow(window) assert not (failed == rcount), "could not create a renderer" with pytest.raises((AttributeError, TypeError)): render.SDL_GetRendererInfo(None) with pytest.raises((AttributeError, TypeError)): render.SDL_GetRendererInfo("Test") dogc()
def test_SDL_GetRenderer(self): failed = 0 rcount = render.SDL_GetNumRenderDrivers() for i in range(rcount): window = video.SDL_CreateWindow(b"Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN) assert isinstance(window.contents, video.SDL_Window) renderer = render.SDL_GetRenderer(window) assert not renderer renderer = render.SDL_CreateRenderer(window, i, self._RENDERFLAGS) if not (renderer and renderer.contents): failed += 1 video.SDL_DestroyWindow(window) continue ren = render.SDL_GetRenderer(window) assert isinstance(ren.contents, render.SDL_Renderer) render.SDL_DestroyRenderer(renderer) assert not render.SDL_GetRenderer(window) video.SDL_DestroyWindow(window) assert not render.SDL_GetRenderer(window) #self.assertRaises((AttributeError, TypeError), # render.SDL_GetRenderer, None) #self.assertRaises((AttributeError, TypeError), # render.SDL_GetRenderer, "Test") assert not (failed == rcount), "could not create a renderer" dogc()
def test_SDL_GetRenderDriverInfo(self): success = False drivers = render.SDL_GetNumRenderDrivers() for x in range(drivers): info = render.SDL_RendererInfo() ret = render.SDL_GetRenderDriverInfo(x, byref(info)) self.assertEqual(ret, 0) # We must find at least one software renderer if info.name == b"software": success = True self.assertTrue(success, "failed on retrieving the driver information")
def test_SDL_GetSetRenderTarget(self): skipcount = 0 failed = 0 rcount = render.SDL_GetNumRenderDrivers() for i in range(rcount): window = video.SDL_CreateWindow(b"Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN) self.assertIsInstance(window.contents, video.SDL_Window) renderer = render.SDL_CreateRenderer(window, i, self._RENDERFLAGS) if not (renderer and renderer.contents): failed += 1 video.SDL_DestroyWindow(window) continue self.assertIsInstance(renderer.contents, render.SDL_Renderer) supported = render.SDL_RenderTargetSupported(renderer) if not supported: skipcount += 1 render.SDL_DestroyRenderer(renderer) continue ret = render.SDL_SetRenderTarget(renderer, None) self.assertEqual(ret, 0) self.assertFalse(render.SDL_GetRenderTarget(renderer)) tex = render.SDL_CreateTexture(renderer, pixels.SDL_PIXELFORMAT_ARGB8888, render.SDL_TEXTUREACCESS_TARGET, 10, 10) ret = render.SDL_SetRenderTarget(renderer, tex) self.assertEqual(ret, 0) tgt = render.SDL_GetRenderTarget(renderer) self.assertIsInstance(tgt.contents, render.SDL_Texture) render.SDL_DestroyTexture(tex) # TODO: Check in the SDL codebase, why the code below does # not fail... # tex2 = render.SDL_CreateTexture(renderer, # pixels.SDL_PIXELFORMAT_ARGB8888, # render.SDL_TEXTUREACCESS_STREAMING, # 10, 10) # self.assertRaises(SDLError, render.SDL_SetRenderTarget, renderer, # tex2) # render.SDL_DestroyTexture(tex2) render.SDL_DestroyRenderer(renderer) video.SDL_DestroyWindow(window) self.assertFalse(failed == rcount, "could not create a renderer") if skipcount == rcount: self.skipTest("None of the renderers supports render targets") dogc()
def test_SDL_RenderGetSetViewport(self): rects = ( rect.SDL_Rect(0, 0, 0, 0), rect.SDL_Rect(0, 0, 10, 10), rect.SDL_Rect(3, 3, 5, 5), rect.SDL_Rect(-5, -5, 10, 10), rect.SDL_Rect(10, 10, 10, 10), rect.SDL_Rect(0, 0, -10, -10), rect.SDL_Rect(-10, 0, 10, 10), rect.SDL_Rect(0, -10, 10, 10), rect.SDL_Rect(-10, -10, 10, 10), ) failcount = 0 port = rect.SDL_Rect() failed = 0 rcount = render.SDL_GetNumRenderDrivers() for i in range(rcount): window = video.SDL_CreateWindow( b"Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN | video.SDL_WINDOW_BORDERLESS) assert isinstance(window.contents, video.SDL_Window) renderer = render.SDL_CreateRenderer(window, i, self._RENDERFLAGS) if not (renderer and renderer.contents): failed += 1 video.SDL_DestroyWindow(window) continue assert isinstance(renderer.contents, render.SDL_Renderer) ret = render.SDL_RenderSetViewport(renderer, None) assert ret == 0 render.SDL_RenderGetViewport(renderer, byref(port)) assert port == rect.SDL_Rect(0, 0, 10, 10) for r in rects: if r.w == r.h == 0: # http://bugzilla.libsdl.org/show_bug.cgi?id=1622 # OpenGL renderers cause a exception here. continue ret = render.SDL_RenderSetViewport(renderer, r) assert ret == 0 render.SDL_RenderGetViewport(renderer, byref(port)) if port != r: failcount += 1 render.SDL_DestroyRenderer(renderer) video.SDL_DestroyWindow(window) assert not (failed == rcount), "could not create a renderer" errmsg = ("For some reason, even with correct values, this seems to " "fail on creating the second renderer of the window, if any") if failcount > 0: pytest.skip(errmsg) dogc()
def test_SDL_GetSetRenderDrawColor(self): failed = 0 rcount = render.SDL_GetNumRenderDrivers() for i in range(rcount): window = video.SDL_CreateWindow(b"Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN) self.assertIsInstance(window.contents, video.SDL_Window) renderer = render.SDL_CreateRenderer(window, i, self._RENDERFLAGS) if not (renderer and renderer.contents): failed += 1 video.SDL_DestroyWindow(window) continue self.assertIsInstance(renderer.contents, render.SDL_Renderer) colors = ( (16, 22, 185, 217), (32, 64, 128, 255), (64, 32, 128, 255), (64, 32, 255, 128), (255, 32, 64, 128), (255, 32, 128, 64), (0, 0, 0, 0), (255, 255, 255, 255), (128, 128, 128, 255), ) for r, g, b, a in colors: ret = render.SDL_SetRenderDrawColor(renderer, r, g, b, a) self.assertEqual(ret, 0) dr, dg, db, da = Uint8(), Uint8(), Uint8(), Uint8() ret = render.SDL_GetRenderDrawColor(renderer, byref(dr), byref(dg), byref(db), byref(da)) self.assertEqual(ret, 0) self.assertEqual((dr.value, dg.value, db.value, da.value), (r, g, b, a)) render.SDL_DestroyRenderer(renderer) #self.assertRaises(sdl.SDLError, render.SDL_SetRenderDrawColor, # renderer, 10, 20, 30, 40) #self.assertRaises(sdl.SDLError, render.SDL_GetRenderDrawColor, # renderer) video.SDL_DestroyWindow(window) self.assertFalse(failed == rcount, "could not create a renderer") dogc()
def test_SDL_RenderTargetSupported(self): failed = 0 rcount = render.SDL_GetNumRenderDrivers() for i in range(rcount): window = video.SDL_CreateWindow(b"Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN) self.assertIsInstance(window.contents, video.SDL_Window) renderer = render.SDL_CreateRenderer(window, i, self._RENDERFLAGS) if not (renderer and renderer.contents): failed += 1 video.SDL_DestroyWindow(window) continue self.assertIsInstance(renderer.contents, render.SDL_Renderer) val = render.SDL_RenderTargetSupported(renderer) self.assertIn(val, (SDL_TRUE, SDL_FALSE)) render.SDL_DestroyRenderer(renderer) video.SDL_DestroyWindow(window) self.assertFalse(failed == rcount, "could not create a renderer") dogc()
def test_SDL_CreateDestroyRenderer(self): failed = 0 rcount = render.SDL_GetNumRenderDrivers() for i in range(rcount): window = video.SDL_CreateWindow(b"Test", 10, 10, 10, 10, video.SDL_WINDOW_SHOWN) self.assertIsInstance(window.contents, video.SDL_Window) renderer = render.SDL_CreateRenderer(window, i, self._RENDERFLAGS) if not (renderer and renderer.contents): failed += 1 video.SDL_DestroyWindow(window) continue self.assertIsInstance(renderer.contents, render.SDL_Renderer) render.SDL_DestroyRenderer(renderer) # TODO: using -1 as index for the call below leads to random # access violations on Win32 renderer = render.SDL_CreateRenderer(window, i, render.SDL_RENDERER_SOFTWARE) self.assertIsInstance(renderer.contents, render.SDL_Renderer) render.SDL_DestroyRenderer(renderer) video.SDL_DestroyWindow(window) self.assertFalse(failed == rcount, "could not create a renderer") dogc()
def test_SDL_GetNumRenderDrivers(self): val = render.SDL_GetNumRenderDrivers() self.assertGreaterEqual(val, 1)
def test_SDL_GetNumRenderDrivers(self): val = render.SDL_GetNumRenderDrivers() assert val >= 1