Home | History | Annotate | Download | only in test
      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         boolResult = SDL_HasClipboardText();
    107         SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded");
    108         SDLTest_AssertCheck(
    109             boolResult == SDL_FALSE,
    110             "Verify SDL_HasClipboardText returned SDL_FALSE, got %s",
    111             (boolResult) ? "SDL_TRUE" : "SDL_FALSE");
    112     }
    113 
    114     /* Empty clipboard  */
    115     charResult = SDL_GetClipboardText();
    116     SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded");
    117     SDLTest_AssertCheck(
    118         charResult != NULL,
    119         "Verify SDL_GetClipboardText did not return NULL");
    120     SDLTest_AssertCheck(
    121         charResult[0] == '\0',
    122         "Verify SDL_GetClipboardText returned string with length 0, got length %i",
    123         SDL_strlen(charResult));
    124     intResult = SDL_SetClipboardText((const char *)text);
    125     SDLTest_AssertPass("Call to SDL_SetClipboardText succeeded");
    126     SDLTest_AssertCheck(
    127         intResult == 0,
    128         "Verify result from SDL_SetClipboardText(NULL), expected 0, got %i",
    129         intResult);
    130     SDLTest_AssertCheck(
    131         SDL_strcmp(textRef, text) == 0,
    132         "Verify SDL_SetClipboardText did not modify input string, expected '%s', got '%s'",
    133         textRef, text);
    134     boolResult = SDL_HasClipboardText();
    135     SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded");
    136     SDLTest_AssertCheck(
    137         boolResult == SDL_TRUE,
    138         "Verify SDL_HasClipboardText returned SDL_TRUE, got %s",
    139         (boolResult) ? "SDL_TRUE" : "SDL_FALSE");
    140     charResult = SDL_GetClipboardText();
    141     SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded");
    142     SDLTest_AssertCheck(
    143         SDL_strcmp(textRef, charResult) == 0,
    144         "Verify SDL_GetClipboardText returned correct string, expected '%s', got '%s'",
    145         textRef, charResult);
    146 
    147     /* Cleanup */
    148     SDL_free(textRef);
    149     SDL_free(text);
    150     SDL_free(charResult);
    151 
    152    return TEST_COMPLETED;
    153 }
    154 
    155 
    156 /* ================= Test References ================== */
    157 
    158 /* Clipboard test cases */
    159 static const SDLTest_TestCaseReference clipboardTest1 =
    160         { (SDLTest_TestCaseFp)clipboard_testHasClipboardText, "clipboard_testHasClipboardText", "Check call to SDL_HasClipboardText", TEST_ENABLED };
    161 
    162 static const SDLTest_TestCaseReference clipboardTest2 =
    163         { (SDLTest_TestCaseFp)clipboard_testGetClipboardText, "clipboard_testGetClipboardText", "Check call to SDL_GetClipboardText", TEST_ENABLED };
    164 
    165 static const SDLTest_TestCaseReference clipboardTest3 =
    166         { (SDLTest_TestCaseFp)clipboard_testSetClipboardText, "clipboard_testSetClipboardText", "Check call to SDL_SetClipboardText", TEST_ENABLED };
    167 
    168 static const SDLTest_TestCaseReference clipboardTest4 =
    169         { (SDLTest_TestCaseFp)clipboard_testClipboardTextFunctions, "clipboard_testClipboardTextFunctions", "End-to-end test of SDL_xyzClipboardText functions", TEST_ENABLED };
    170 
    171 /* Sequence of Clipboard test cases */
    172 static const SDLTest_TestCaseReference *clipboardTests[] =  {
    173     &clipboardTest1, &clipboardTest2, &clipboardTest3, &clipboardTest4, NULL
    174 };
    175 
    176 /* Clipboard test suite (global) */
    177 SDLTest_TestSuiteReference clipboardTestSuite = {
    178     "Clipboard",
    179     NULL,
    180     clipboardTests,
    181     NULL
    182 };
    183