|
@@ -959,6 +959,36 @@ static int SDLCALL surface_testBlitBlendMul(void *arg)
|
|
|
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)
|
|
|
{
|
|
|
char buf[1024];
|
|
@@ -1630,6 +1660,10 @@ static const SDLTest_TestCaseReference surfaceTestBlitBlendMul = {
|
|
|
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 = {
|
|
|
surface_testOverflow, "surface_testOverflow", "Test overflow detection.", TEST_ENABLED
|
|
|
};
|
|
@@ -1678,6 +1712,7 @@ static const SDLTest_TestCaseReference *surfaceTests[] = {
|
|
|
&surfaceTestBlitBlendAddPremultiplied,
|
|
|
&surfaceTestBlitBlendMod,
|
|
|
&surfaceTestBlitBlendMul,
|
|
|
+ &surfaceTestBlitInvalid,
|
|
|
&surfaceTestOverflow,
|
|
|
&surfaceTestFlip,
|
|
|
&surfaceTestPalette,
|