mirror of https://github.com/libsdl-org/SDL.git
Added tests to cover invalid surface blits
Reproduction case for https://github.com/libsdl-org/SDL/issues/12844
This commit is contained in:
parent
fe849f1572
commit
89d7d406ab
|
|
@ -959,6 +959,36 @@ static int SDLCALL surface_testBlitBlendMul(void *arg)
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests blitting invalid surfaces.
|
||||||
|
*/
|
||||||
|
static int SDLCALL surface_testBlitInvalid(void *arg)
|
||||||
|
{
|
||||||
|
SDL_Surface *valid, *invalid;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
valid = SDL_CreateSurface(1, 1, SDL_PIXELFORMAT_RGBA8888);
|
||||||
|
SDLTest_AssertCheck(valid != NULL, "Check surface creation");
|
||||||
|
invalid = SDL_CreateSurface(0, 0, SDL_PIXELFORMAT_RGBA8888);
|
||||||
|
SDLTest_AssertCheck(invalid != NULL, "Check surface creation");
|
||||||
|
SDLTest_AssertCheck(invalid->pixels == NULL, "Check surface pixels are NULL");
|
||||||
|
|
||||||
|
result = SDL_BlitSurface(invalid, NULL, valid, NULL);
|
||||||
|
SDLTest_AssertCheck(result == true, "SDL_BlitSurface(invalid, NULL, valid, NULL), result = %s\n", result ? "true" : "false");
|
||||||
|
result = SDL_BlitSurface(valid, NULL, invalid, NULL);
|
||||||
|
SDLTest_AssertCheck(result == true, "SDL_BlitSurface(valid, NULL, invalid, NULL), result = %s\n", result ? "true" : "false");
|
||||||
|
|
||||||
|
result = SDL_BlitSurfaceScaled(invalid, NULL, valid, NULL, SDL_SCALEMODE_NEAREST);
|
||||||
|
SDLTest_AssertCheck(result == false, "SDL_BlitSurfaceScaled(invalid, NULL, valid, NULL, SDL_SCALEMODE_NEAREST), result = %s\n", result ? "true" : "false");
|
||||||
|
result = SDL_BlitSurfaceScaled(valid, NULL, invalid, NULL, SDL_SCALEMODE_NEAREST);
|
||||||
|
SDLTest_AssertCheck(result == false, "SDL_BlitSurfaceScaled(valid, NULL, invalid, NULL, SDL_SCALEMODE_NEAREST), result = %s\n", result ? "true" : "false");
|
||||||
|
|
||||||
|
SDL_DestroySurface(valid);
|
||||||
|
SDL_DestroySurface(invalid);
|
||||||
|
|
||||||
|
return TEST_COMPLETED;
|
||||||
|
}
|
||||||
|
|
||||||
static int SDLCALL surface_testOverflow(void *arg)
|
static int SDLCALL surface_testOverflow(void *arg)
|
||||||
{
|
{
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
|
|
@ -1632,6 +1662,10 @@ static const SDLTest_TestCaseReference surfaceTestBlitBlendMul = {
|
||||||
surface_testBlitBlendMul, "surface_testBlitBlendMul", "Tests blitting routines with mul blending mode.", TEST_ENABLED
|
surface_testBlitBlendMul, "surface_testBlitBlendMul", "Tests blitting routines with mul blending mode.", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const SDLTest_TestCaseReference surfaceTestBlitInvalid = {
|
||||||
|
surface_testBlitInvalid, "surface_testBlitInvalid", "Tests blitting routines with invalid surfaces.", TEST_ENABLED
|
||||||
|
};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference surfaceTestOverflow = {
|
static const SDLTest_TestCaseReference surfaceTestOverflow = {
|
||||||
surface_testOverflow, "surface_testOverflow", "Test overflow detection.", TEST_ENABLED
|
surface_testOverflow, "surface_testOverflow", "Test overflow detection.", TEST_ENABLED
|
||||||
};
|
};
|
||||||
|
|
@ -1680,6 +1714,7 @@ static const SDLTest_TestCaseReference *surfaceTests[] = {
|
||||||
&surfaceTestBlitBlendAddPremultiplied,
|
&surfaceTestBlitBlendAddPremultiplied,
|
||||||
&surfaceTestBlitBlendMod,
|
&surfaceTestBlitBlendMod,
|
||||||
&surfaceTestBlitBlendMul,
|
&surfaceTestBlitBlendMul,
|
||||||
|
&surfaceTestBlitInvalid,
|
||||||
&surfaceTestOverflow,
|
&surfaceTestOverflow,
|
||||||
&surfaceTestFlip,
|
&surfaceTestFlip,
|
||||||
&surfaceTestPalette,
|
&surfaceTestPalette,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue