testautomation_clipboard.c (5958B)
1 /** 2 * New/updated tests: aschiffler at ferzkopp dot net 3 */ 4 5 #include <stdio.h> 6 #include <string.h> 7 8 #include "SDL.h" 9 #include "SDL_test.h" 10 11 /* ================= Test Case Implementation ================== */ 12 13 /* Test case functions */ 14 15 /** 16 * \brief Check call to SDL_HasClipboardText 17 * 18 * \sa 19 * http://wiki.libsdl.org/moin.cgi/SDL_HasClipboardText 20 */ 21 int 22 clipboard_testHasClipboardText(void *arg) 23 { 24 SDL_bool result; 25 result = SDL_HasClipboardText(); 26 SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded"); 27 28 return TEST_COMPLETED; 29 } 30 31 /** 32 * \brief Check call to SDL_GetClipboardText 33 * 34 * \sa 35 * http://wiki.libsdl.org/moin.cgi/SDL_GetClipboardText 36 */ 37 int 38 clipboard_testGetClipboardText(void *arg) 39 { 40 char *charResult; 41 charResult = SDL_GetClipboardText(); 42 SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded"); 43 44 SDL_free(charResult); 45 46 return TEST_COMPLETED; 47 } 48 49 /** 50 * \brief Check call to SDL_SetClipboardText 51 * \sa 52 * http://wiki.libsdl.org/moin.cgi/SDL_SetClipboardText 53 */ 54 int 55 clipboard_testSetClipboardText(void *arg) 56 { 57 char *textRef = SDLTest_RandomAsciiString(); 58 char *text = SDL_strdup(textRef); 59 int result; 60 result = SDL_SetClipboardText((const char *)text); 61 SDLTest_AssertPass("Call to SDL_SetClipboardText succeeded"); 62 SDLTest_AssertCheck( 63 result == 0, 64 "Validate SDL_SetClipboardText result, expected 0, got %i", 65 result); 66 SDLTest_AssertCheck( 67 SDL_strcmp(textRef, text) == 0, 68 "Verify SDL_SetClipboardText did not modify input string, expected '%s', got '%s'", 69 textRef, text); 70 71 /* Cleanup */ 72 SDL_free(textRef); 73 SDL_free(text); 74 75 return TEST_COMPLETED; 76 } 77 78 /** 79 * \brief End-to-end test of SDL_xyzClipboardText functions 80 * \sa 81 * http://wiki.libsdl.org/moin.cgi/SDL_HasClipboardText 82 * http://wiki.libsdl.org/moin.cgi/SDL_GetClipboardText 83 * http://wiki.libsdl.org/moin.cgi/SDL_SetClipboardText 84 */ 85 int 86 clipboard_testClipboardTextFunctions(void *arg) 87 { 88 char *textRef = SDLTest_RandomAsciiString(); 89 char *text = SDL_strdup(textRef); 90 SDL_bool boolResult; 91 int intResult; 92 char *charResult; 93 94 /* Clear clipboard text state */ 95 boolResult = SDL_HasClipboardText(); 96 SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded"); 97 if (boolResult == SDL_TRUE) { 98 intResult = SDL_SetClipboardText((const char *)NULL); 99 SDLTest_AssertPass("Call to SDL_SetClipboardText(NULL) succeeded"); 100 SDLTest_AssertCheck( 101 intResult == 0, 102 "Verify result from SDL_SetClipboardText(NULL), expected 0, got %i", 103 intResult); 104 charResult = SDL_GetClipboardText(); 105 SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded"); 106 SDL_free(charResult); 107 boolResult = SDL_HasClipboardText(); 108 SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded"); 109 SDLTest_AssertCheck( 110 boolResult == SDL_FALSE, 111 "Verify SDL_HasClipboardText returned SDL_FALSE, got %s", 112 (boolResult) ? "SDL_TRUE" : "SDL_FALSE"); 113 } 114 115 /* Empty clipboard */ 116 charResult = SDL_GetClipboardText(); 117 SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded"); 118 SDLTest_AssertCheck( 119 charResult != NULL, 120 "Verify SDL_GetClipboardText did not return NULL"); 121 SDLTest_AssertCheck( 122 charResult[0] == '\0', 123 "Verify SDL_GetClipboardText returned string with length 0, got length %i", 124 (int) SDL_strlen(charResult)); 125 intResult = SDL_SetClipboardText((const char *)text); 126 SDLTest_AssertPass("Call to SDL_SetClipboardText succeeded"); 127 SDLTest_AssertCheck( 128 intResult == 0, 129 "Verify result from SDL_SetClipboardText(NULL), expected 0, got %i", 130 intResult); 131 SDLTest_AssertCheck( 132 SDL_strcmp(textRef, text) == 0, 133 "Verify SDL_SetClipboardText did not modify input string, expected '%s', got '%s'", 134 textRef, text); 135 boolResult = SDL_HasClipboardText(); 136 SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded"); 137 SDLTest_AssertCheck( 138 boolResult == SDL_TRUE, 139 "Verify SDL_HasClipboardText returned SDL_TRUE, got %s", 140 (boolResult) ? "SDL_TRUE" : "SDL_FALSE"); 141 SDL_free(charResult); 142 charResult = SDL_GetClipboardText(); 143 SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded"); 144 SDLTest_AssertCheck( 145 SDL_strcmp(textRef, charResult) == 0, 146 "Verify SDL_GetClipboardText returned correct string, expected '%s', got '%s'", 147 textRef, charResult); 148 149 /* Cleanup */ 150 SDL_free(textRef); 151 SDL_free(text); 152 SDL_free(charResult); 153 154 return TEST_COMPLETED; 155 } 156 157 158 /* ================= Test References ================== */ 159 160 /* Clipboard test cases */ 161 static const SDLTest_TestCaseReference clipboardTest1 = 162 { (SDLTest_TestCaseFp)clipboard_testHasClipboardText, "clipboard_testHasClipboardText", "Check call to SDL_HasClipboardText", TEST_ENABLED }; 163 164 static const SDLTest_TestCaseReference clipboardTest2 = 165 { (SDLTest_TestCaseFp)clipboard_testGetClipboardText, "clipboard_testGetClipboardText", "Check call to SDL_GetClipboardText", TEST_ENABLED }; 166 167 static const SDLTest_TestCaseReference clipboardTest3 = 168 { (SDLTest_TestCaseFp)clipboard_testSetClipboardText, "clipboard_testSetClipboardText", "Check call to SDL_SetClipboardText", TEST_ENABLED }; 169 170 static const SDLTest_TestCaseReference clipboardTest4 = 171 { (SDLTest_TestCaseFp)clipboard_testClipboardTextFunctions, "clipboard_testClipboardTextFunctions", "End-to-end test of SDL_xyzClipboardText functions", TEST_ENABLED }; 172 173 /* Sequence of Clipboard test cases */ 174 static const SDLTest_TestCaseReference *clipboardTests[] = { 175 &clipboardTest1, &clipboardTest2, &clipboardTest3, &clipboardTest4, NULL 176 }; 177 178 /* Clipboard test suite (global) */ 179 SDLTest_TestSuiteReference clipboardTestSuite = { 180 "Clipboard", 181 NULL, 182 clipboardTests, 183 NULL 184 };