Imported Upstream version 2.0.14
[platform/upstream/SDL.git] / test / testautomation_clipboard.c
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 };