/** * New/updated tests: aschiffler at ferzkopp dot net */ #include #include #include "SDL.h" #include "SDL_test.h" /* ================= Test Case Implementation ================== */ /* Test case functions */ /** * \brief Check call to SDL_HasClipboardText * * \sa * https://github.com/libsdl-org/SDL/wiki/SDL_HasClipboardText */ int clipboard_testHasClipboardText(void *arg) { SDL_HasClipboardText(); SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded"); return TEST_COMPLETED; } /** * \brief Check call to SDL_GetClipboardText * * \sa * https://github.com/libsdl-org/SDL/wiki/SDL_GetClipboardText */ int clipboard_testGetClipboardText(void *arg) { char *charResult; charResult = SDL_GetClipboardText(); SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded"); SDL_free(charResult); return TEST_COMPLETED; } /** * \brief Check call to SDL_SetClipboardText * \sa * https://github.com/libsdl-org/SDL/wiki/SDL_SetClipboardText */ int clipboard_testSetClipboardText(void *arg) { char *textRef = SDLTest_RandomAsciiString(); char *text = SDL_strdup(textRef); int result; result = SDL_SetClipboardText((const char *)text); SDLTest_AssertPass("Call to SDL_SetClipboardText succeeded"); SDLTest_AssertCheck( result == 0, "Validate SDL_SetClipboardText result, expected 0, got %i", result); SDLTest_AssertCheck( SDL_strcmp(textRef, text) == 0, "Verify SDL_SetClipboardText did not modify input string, expected '%s', got '%s'", textRef, text); /* Cleanup */ SDL_free(textRef); SDL_free(text); return TEST_COMPLETED; } /** * \brief End-to-end test of SDL_xyzClipboardText functions * \sa * https://github.com/libsdl-org/SDL/wiki/SDL_HasClipboardText * https://github.com/libsdl-org/SDL/wiki/SDL_GetClipboardText * https://github.com/libsdl-org/SDL/wiki/SDL_SetClipboardText */ int clipboard_testClipboardTextFunctions(void *arg) { char *textRef = SDLTest_RandomAsciiString(); char *text = SDL_strdup(textRef); SDL_bool boolResult; int intResult; char *charResult; /* Clear clipboard text state */ boolResult = SDL_HasClipboardText(); SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded"); if (boolResult == SDL_TRUE) { intResult = SDL_SetClipboardText((const char *)NULL); SDLTest_AssertPass("Call to SDL_SetClipboardText(NULL) succeeded"); SDLTest_AssertCheck( intResult == 0, "Verify result from SDL_SetClipboardText(NULL), expected 0, got %i", intResult); charResult = SDL_GetClipboardText(); SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded"); SDL_free(charResult); boolResult = SDL_HasClipboardText(); SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded"); SDLTest_AssertCheck( boolResult == SDL_FALSE, "Verify SDL_HasClipboardText returned SDL_FALSE, got %s", (boolResult) ? "SDL_TRUE" : "SDL_FALSE"); } /* Empty clipboard */ charResult = SDL_GetClipboardText(); SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded"); SDLTest_AssertCheck( charResult != NULL, "Verify SDL_GetClipboardText did not return NULL"); SDLTest_AssertCheck( charResult[0] == '\0', "Verify SDL_GetClipboardText returned string with length 0, got length %i", (int) SDL_strlen(charResult)); intResult = SDL_SetClipboardText((const char *)text); SDLTest_AssertPass("Call to SDL_SetClipboardText succeeded"); SDLTest_AssertCheck( intResult == 0, "Verify result from SDL_SetClipboardText(NULL), expected 0, got %i", intResult); SDLTest_AssertCheck( SDL_strcmp(textRef, text) == 0, "Verify SDL_SetClipboardText did not modify input string, expected '%s', got '%s'", textRef, text); boolResult = SDL_HasClipboardText(); SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded"); SDLTest_AssertCheck( boolResult == SDL_TRUE, "Verify SDL_HasClipboardText returned SDL_TRUE, got %s", (boolResult) ? "SDL_TRUE" : "SDL_FALSE"); SDL_free(charResult); charResult = SDL_GetClipboardText(); SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded"); SDLTest_AssertCheck( SDL_strcmp(textRef, charResult) == 0, "Verify SDL_GetClipboardText returned correct string, expected '%s', got '%s'", textRef, charResult); /* Cleanup */ SDL_free(textRef); SDL_free(text); SDL_free(charResult); return TEST_COMPLETED; } /* ================= Test References ================== */ /* Clipboard test cases */ static const SDLTest_TestCaseReference clipboardTest1 = { (SDLTest_TestCaseFp)clipboard_testHasClipboardText, "clipboard_testHasClipboardText", "Check call to SDL_HasClipboardText", TEST_ENABLED }; static const SDLTest_TestCaseReference clipboardTest2 = { (SDLTest_TestCaseFp)clipboard_testGetClipboardText, "clipboard_testGetClipboardText", "Check call to SDL_GetClipboardText", TEST_ENABLED }; static const SDLTest_TestCaseReference clipboardTest3 = { (SDLTest_TestCaseFp)clipboard_testSetClipboardText, "clipboard_testSetClipboardText", "Check call to SDL_SetClipboardText", TEST_ENABLED }; static const SDLTest_TestCaseReference clipboardTest4 = { (SDLTest_TestCaseFp)clipboard_testClipboardTextFunctions, "clipboard_testClipboardTextFunctions", "End-to-end test of SDL_xyzClipboardText functions", TEST_ENABLED }; /* Sequence of Clipboard test cases */ static const SDLTest_TestCaseReference *clipboardTests[] = { &clipboardTest1, &clipboardTest2, &clipboardTest3, &clipboardTest4, NULL }; /* Clipboard test suite (global) */ SDLTest_TestSuiteReference clipboardTestSuite = { "Clipboard", NULL, clipboardTests, NULL };