test/testautomation_clipboard.c
author Alex Baines <alex@abaines.me.uk>
Tue, 19 Aug 2014 23:31:50 +0100
changeset 9097 56d712662a82
parent 7721 bdf8c2c84e14
child 9617 062bfde7330a
permissions -rw-r--r--
Add a SDL_IM_INTERNAL_EDITING event to make IMs like iBus render editing text in its own UI instead of sending TEXTEDITING events.
This is useful for applications that handle TEXTINPUT events but not TEXTEDITING events.
     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 };