From cc9056b6e7c83ff5b6ba1efa0c853d3bc8cc170a Mon Sep 17 00:00:00 2001 From: Andreas Schiffler Date: Fri, 16 Sep 2011 08:26:20 -0700 Subject: [PATCH] Add test cases for SDL_RectEmpty --- .../test-automation/tests/testrect/testrect.c | 85 ++++++++++++++++++- 1 file changed, 83 insertions(+), 2 deletions(-) diff --git a/test/test-automation/tests/testrect/testrect.c b/test/test-automation/tests/testrect/testrect.c index 2cc698219..7b658c150 100644 --- a/test/test-automation/tests/testrect/testrect.c +++ b/test/test-automation/tests/testrect/testrect.c @@ -77,7 +77,13 @@ static const TestCaseReference test20 = static const TestCaseReference test21 = (TestCaseReference){ "rect_testUnionRectParam", "Negative tests against SDL_UnionRect with invalid parameters", TEST_ENABLED, 0, 0 }; -/* TODO: SDL_RectEmpty */ +/* SDL_RectEmpty */ +static const TestCaseReference test22 = + (TestCaseReference){ "rect_testRectEmpty", "Tests SDL_RectEmpty with various inputs", TEST_ENABLED, 0, 0 }; + +static const TestCaseReference test23 = + (TestCaseReference){ "rect_testRectEmptyParam", "Negative tests against SDL_RectEmpty with invalid parameters", TEST_ENABLED, 0, 0 }; + /* TODO: SDL_RectEquals */ /*! @@ -88,7 +94,7 @@ static const TestCaseReference test21 = */ extern const TestCaseReference *testSuite[] = { &test1, &test2, &test3, &test4, &test5, &test6, &test7, &test8, &test9, &test10, &test11, &test12, &test13, &test14, - &test15, &test16, &test17, &test18, &test19, &test20, &test21, NULL + &test15, &test16, &test17, &test18, &test19, &test20, &test21, &test22, &test23, NULL }; TestCaseReference **QueryTestSuite() { @@ -402,6 +408,24 @@ void _validateUnionRectResults( expectedResult->x, expectedResult->y, expectedResult->w, expectedResult->h); } +/*! + * \brief Private helper to check SDL_RectEmpty results + */ +void _validateRectEmptyResults( + SDL_bool empty, SDL_bool expectedEmpty, + SDL_Rect *rect, SDL_Rect *refRect) +{ + AssertTrue(empty == expectedEmpty, + "Incorrect empty result: expected %s, got %s testing (%d,%d,%d,%d)\n", + (expectedEmpty == SDL_TRUE) ? "true" : "false", + (empty == SDL_TRUE) ? "true" : "false", + rect->x, rect->y, rect->w, rect->h); + AssertTrue(rect->x == refRect->x && rect->y == refRect->y && rect->w == refRect->w && rect->h == refRect->h, + "Source rectangle was modified: got (%d,%d,%d,%d) expected (%d,%d,%d,%d)", + rect->x, rect->y, rect->w, rect->h, + refRect->x, refRect->y, refRect->w, refRect->h); +} + /*! * \brief Tests SDL_IntersectRect() with B fully inside A * @@ -1199,3 +1223,60 @@ int rect_testUnionRectParam(void *arg) SDL_UnionRect((SDL_Rect *)NULL, (SDL_Rect *)NULL, (SDL_Rect *)NULL); AssertPass("Function did return when all parameters were NULL"); } + +/*! + * \brief Tests SDL_RectEmpty() with various inputs + * + * \sa + * http://wiki.libsdl.org/moin.cgi/SDL_RectEmpty + */ +int rect_testRectEmpty(void *arg) +{ + SDL_Rect refRect; + SDL_Rect rect; + SDL_bool expectedResult; + SDL_bool result; + int w, h; + + // Non-empty case + refRect.x=RandomIntegerInRange(-1024, 1024); + refRect.y=RandomIntegerInRange(-1024, 1024); + refRect.w=RandomIntegerInRange(256, 1024); + refRect.h=RandomIntegerInRange(256, 1024); + expectedResult = SDL_FALSE; + rect = refRect; + result = SDL_RectEmpty((const SDL_Rect *)&rect); + _validateRectEmptyResults(result, expectedResult, &rect, &refRect); + + // Empty case + for (w=-1; w<2; w++) { + for (h=-1; h<2; h++) { + if ((w != 1) || (h != 1)) { + refRect.x=RandomIntegerInRange(-1024, 1024); + refRect.y=RandomIntegerInRange(-1024, 1024); + refRect.w=w; + refRect.h=h; + expectedResult = SDL_TRUE; + rect = refRect; + result = SDL_RectEmpty((const SDL_Rect *)&rect); + _validateRectEmptyResults(result, expectedResult, &rect, &refRect); + } + } + } +} + +/*! + * \brief Negative tests against SDL_RectEmpty() with invalid parameters + * + * \sa + * http://wiki.libsdl.org/moin.cgi/SDL_RectEmpty + */ +int rect_testRectEmptyParam(void *arg) +{ + SDL_Rect rect; + SDL_bool result; + + // invalid parameter combinations + result = SDL_RectEmpty((const SDL_Rect *)NULL); + AssertTrue(result = SDL_TRUE, "Function did not return TRUE when 1st parameter was NULL"); +}