VirtualBox

Changeset 22190 in vbox


Ignore:
Timestamp:
Aug 11, 2009 8:45:05 PM (15 years ago)
Author:
vboxsync
Message:

GuestHost/SharedClipboard: use RTTEST in the X11 clipboard code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/SharedClipboard/x11-clipboard.cpp

    r22181 r22190  
    16631663 * rewrite the tests and the code to make them cleaner and more readable. */
    16641664
    1665 #include <iprt/initterm.h>
    1666 #include <iprt/stream.h>
     1665#include <iprt/test.h>
    16671666#include <poll.h>
    16681667
    1669 #define TEST_NAME "tstClipboardX11"
    16701668#define TEST_WIDGET (Widget)0xffff
    16711669
     
    21282126#endif
    21292127
    2130 static bool testStringFromX11(CLIPBACKEND *pCtx, const char *pcszExp,
    2131                               int rcExp)
    2132 {
    2133     bool retval = false;
     2128static void testStringFromX11(RTTEST hTest, CLIPBACKEND *pCtx,
     2129                              const char *pcszExp, int rcExp, size_t cbExpIn)
     2130{
     2131    bool retval = true;
    21342132    clipSendTargetUpdate(pCtx);
    21352133    if (clipQueryFormats() != VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT)
    2136         RTPrintf("Wrong targets reported: %02X\n", clipQueryFormats());
     2134        RTTestFailed(hTest, "Wrong targets reported: %02X\n",
     2135                     clipQueryFormats());
    21372136    else
    21382137    {
     
    21452144        clipGetCompletedRequest(&rc, &pc, &cbActual, &pReqRet);
    21462145        if (rc != rcExp)
    2147             RTPrintf("Wrong return code, expected %Rrc, got %Rrc\n", rcExp,
    2148                      rc);
     2146            RTTestFailed(hTest, "Wrong return code, expected %Rrc, got %Rrc\n",
     2147                         rcExp, rc);
    21492148        else if (pReqRet != pReq)
    2150             RTPrintf("Wrong returned request data, expected %p, got %p\n",
    2151                      pReq, pReqRet);
     2149            RTTestFailed(hTest, "Wrong returned request data, expected %p, got %p\n",
     2150                         pReq, pReqRet);
    21522151        else if (RT_FAILURE(rcExp))
    21532152            retval = true;
     
    21592158            rc = RTStrToUtf16Ex(pcszExp, RTSTR_MAX, &pwcExp,
    21602159                                RT_ELEMENTS(wcExp), &cwc);
    2161             size_t cbExp = cwc * 2 + 2;
     2160            size_t cbExp = cbExpIn ? cbExpIn : cwc * 2 + 2;
    21622161            AssertRC(rc);
    21632162            if (RT_SUCCESS(rc))
     
    21652164                if (cbActual != cbExp)
    21662165                {
    2167                     RTPrintf("Returned string is the wrong size, string \"%.*ls\", size %u\n",
    2168                              RT_MIN(MAX_BUF_SIZE, cbActual), pc, cbActual);
    2169                     RTPrintf("Expected \"%s\", size %u\n", pcszExp,
    2170                              cbExp);
     2166                    RTTestFailed(hTest, "Returned string is the wrong size, string \"%.*ls\", size %u, expected \"%s\", size %u\n",
     2167                                 RT_MIN(MAX_BUF_SIZE, cbActual), pc, cbActual,
     2168                                 pcszExp, cbExp);
    21712169                }
    21722170                else
     
    21752173                        retval = true;
    21762174                    else
    2177                         RTPrintf("Returned string \"%.*ls\" does not match expected string \"%s\"\n",
    2178                                  MAX_BUF_SIZE, pc, pcszExp);
     2175                        RTTestFailed(hTest, "Returned string \"%.*ls\" does not match expected string \"%s\"\n",
     2176                                     MAX_BUF_SIZE, pc, pcszExp);
    21792177                }
    21802178            }
     
    21822180    }
    21832181    if (!retval)
    2184         RTPrintf("Expected: string \"%s\", rc %Rrc\n", pcszExp, rcExp);
    2185     return retval;
    2186 }
    2187 
    2188 static bool testLatin1FromX11(CLIPBACKEND *pCtx,const char *pcszExp,
    2189                               int rcExp)
     2182        RTTestFailureDetails(hTest, "Expected: string \"%s\", rc %Rrc\n",
     2183                             pcszExp, rcExp);
     2184}
     2185
     2186static void testLatin1FromX11(RTTEST hTest, CLIPBACKEND *pCtx,
     2187                              const char *pcszExp, int rcExp, size_t cbExpIn)
    21902188{
    21912189    bool retval = false;
    21922190    clipSendTargetUpdate(pCtx);
    21932191    if (clipQueryFormats() != VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT)
    2194         RTPrintf("Wrong targets reported: %02X\n", clipQueryFormats());
     2192        RTTestFailed(hTest, "Wrong targets reported: %02X\n",
     2193                     clipQueryFormats());
    21952194    else
    21962195    {
     
    22032202        clipGetCompletedRequest(&rc, &pc, &cbActual, &pReqRet);
    22042203        if (rc != rcExp)
    2205             RTPrintf("Wrong return code, expected %Rrc, got %Rrc\n", rcExp,
    2206                      rc);
     2204            RTTestFailed(hTest, "Wrong return code, expected %Rrc, got %Rrc\n",
     2205                         rcExp, rc);
    22072206        else if (pReqRet != pReq)
    2208             RTPrintf("Wrong returned request data, expected %p, got %p\n",
    2209                      pReq, pReqRet);
     2207            RTTestFailed(hTest, "Wrong returned request data, expected %p, got %p\n",
     2208                         pReq, pReqRet);
    22102209        else if (RT_FAILURE(rcExp))
    22112210            retval = true;
     
    22172216            for (cwc = 0; cwc == 0 || pcszExp[cwc - 1] != '\0'; ++cwc)
    22182217                wcExp[cwc] = pcszExp[cwc];
    2219             size_t cbExp = cwc * 2;
     2218            size_t cbExp = cbExpIn ? cbExpIn : cwc * 2;
    22202219            if (cbActual != cbExp)
    22212220            {
    2222                 RTPrintf("Returned string is the wrong size, string \"%.*ls\", size %u\n",
    2223                          RT_MIN(MAX_BUF_SIZE, cbActual), pc, cbActual);
    2224                 RTPrintf("Expected \"%s\", size %u\n", pcszExp,
    2225                          cbExp);
     2221                RTTestFailed(hTest, "Returned string is the wrong size, string \"%.*ls\", size %u, expected \"%s\", size %u\n",
     2222                             RT_MIN(MAX_BUF_SIZE, cbActual), pc, cbActual,
     2223                             pcszExp, cbExp);
    22262224            }
    22272225            else
     
    22302228                    retval = true;
    22312229                else
    2232                     RTPrintf("Returned string \"%.*ls\" does not match expected string \"%s\"\n",
    2233                              MAX_BUF_SIZE, pc, pcszExp);
     2230                    RTTestFailed(hTest, "Returned string \"%.*ls\" does not match expected string \"%s\"\n",
     2231                                 MAX_BUF_SIZE, pc, pcszExp);
    22342232            }
    22352233        }
    22362234    }
    22372235    if (!retval)
    2238         RTPrintf("Expected: string \"%s\", rc %Rrc\n", pcszExp, rcExp);
    2239     return retval;
    2240 }
    2241 
    2242 static bool testStringFromVBox(CLIPBACKEND *pCtx,
     2236        RTTestFailureDetails(hTest, "Expected: string \"%s\", rc %Rrc\n",
     2237                             pcszExp, rcExp);
     2238}
     2239
     2240static void testStringFromVBox(RTTEST hTest, CLIPBACKEND *pCtx,
    22432241                               const char *pcszTarget, Atom typeExp,
    2244                                const void *valueExp, unsigned long lenExp,
    2245                                int formatExp)
     2242                               const void *valueExp, unsigned long lenExp)
    22462243{
    22472244    bool retval = false;
     
    22542251        if (   type != typeExp
    22552252            || length != lenExp
    2256             || format != formatExp
     2253            || format != 8
    22572254            || memcmp((const void *) value, (const void *)valueExp,
    22582255                      lenExp))
    22592256        {
    2260             RTPrintf("Bad data: type %d, (expected %d), length %u, (%u), format %d (%d),\n",
    2261                      type, typeExp, length, lenExp, format, formatExp);
    2262             RTPrintf("value \"%.*s\" (\"%.*s\")", RT_MIN(length, 20), value,
    2263                      RT_MIN(lenExp, 20), valueExp);
     2257            RTTestFailed(hTest, "Bad data: type %d, (expected %d), length %u, (%u), format %d (%d), value \"%.*s\" (\"%.*s\")\n",
     2258                     type, typeExp, length, lenExp, format, 8,
     2259                     RT_MIN(length, 20), value, RT_MIN(lenExp, 20), valueExp);
    22642260        }
    22652261        else
     
    22672263    }
    22682264    else
    2269         RTPrintf("Conversion failed\n");
     2265        RTTestFailed(hTest, "Conversion failed\n");
    22702266    XtFree((char *)value);
    22712267    if (!retval)
    2272         RTPrintf("Conversion to %s, expected \"%s\"\n", pcszTarget, valueExp);
    2273     return retval;
    2274 }
    2275 
    2276 static bool testStringFromVBoxFailed(CLIPBACKEND *pCtx,
     2268        RTTestFailureDetails(hTest, "Conversion to %s, expected \"%s\"\n",
     2269                             pcszTarget, valueExp);
     2270}
     2271
     2272static void testStringFromVBoxFailed(RTTEST hTest, CLIPBACKEND *pCtx,
    22772273                                     const char *pcszTarget)
    22782274{
     
    22822278    unsigned long length;
    22832279    int format;
    2284     if (!clipConvertSelection(pcszTarget, &type, &value, &length, &format))
    2285         retval = true;
     2280    RTTEST_CHECK_MSG(hTest, !clipConvertSelection(pcszTarget, &type, &value,
     2281                                                  &length, &format),
     2282                     (hTest, "Conversion to target %s, should have failed but didn't, returned type %d, length %u, format %d, value \"%.*s\"\n",
     2283                      pcszTarget, type, length, format, RT_MIN(length, 20),
     2284                      value));
    22862285    XtFree((char *)value);
    2287     if (!retval)
    2288     {
    2289         RTPrintf("Conversion to target %s, should have failed but didn't\n",
    2290                  pcszTarget);
    2291         RTPrintf("Returned type %d, length %u, format %d, value \"%.*s\"\n",
    2292                  type, length, format, RT_MIN(length, 20), value);
    2293     }
    2294     return retval;
    22952286}
    22962287
    22972288int main()
    22982289{
    2299     RTR3Init();
     2290    /*
     2291     * Init the runtime, test and say hello.
     2292     */
     2293    RTTEST hTest;
     2294    int rc = RTTestInitAndCreate("tstClipboardX11", &hTest);
     2295    if (rc)
     2296        return rc;
     2297    RTTestBanner(hTest);
     2298
     2299    /*
     2300     * Run the test.
     2301     */
    23002302    CLIPBACKEND *pCtx = ClipConstructX11(NULL);
    2301     unsigned cErrs = 0;
    23022303    char *pc;
    23032304    uint32_t cbActual;
    23042305    CLIPREADCBREQ *pReq = (CLIPREADCBREQ *)&pReq, *pReqRet = NULL;
    2305     int rc = ClipStartX11(pCtx);
     2306    rc = ClipStartX11(pCtx);
    23062307    AssertRCReturn(rc, 1);
    23072308
    23082309    /*** Utf-8 from X11 ***/
    2309     RTPrintf(TEST_NAME ": TESTING reading Utf-8 from X11\n");
     2310    RTTestSub(hTest, "reading Utf-8 from X11");
    23102311    /* Simple test */
    23112312    clipSetSelectionValues("UTF8_STRING", XA_STRING, "hello world",
    23122313                           sizeof("hello world"), 8);
    2313     if (!testStringFromX11(pCtx, "hello world", VINF_SUCCESS))
    2314         ++cErrs;
     2314    testStringFromX11(hTest, pCtx, "hello world", VINF_SUCCESS, 0);
    23152315    /* With an embedded carriage return */
    23162316    clipSetSelectionValues("text/plain;charset=UTF-8", XA_STRING,
    23172317                           "hello\nworld", sizeof("hello\nworld"), 8);
    2318     if (!testStringFromX11(pCtx, "hello\r\nworld", VINF_SUCCESS))
    2319         ++cErrs;
     2318    testStringFromX11(hTest, pCtx, "hello\r\nworld", VINF_SUCCESS, 0);
    23202319    /* With an embedded CRLF */
    23212320    clipSetSelectionValues("text/plain;charset=UTF-8", XA_STRING,
    23222321                           "hello\r\nworld", sizeof("hello\r\nworld"), 8);
    2323     if (!testStringFromX11(pCtx, "hello\r\r\nworld", VINF_SUCCESS))
    2324         ++cErrs;
     2322    testStringFromX11(hTest, pCtx, "hello\r\r\nworld", VINF_SUCCESS, 0);
    23252323    /* With an embedded LFCR */
    23262324    clipSetSelectionValues("text/plain;charset=UTF-8", XA_STRING,
    23272325                           "hello\n\rworld", sizeof("hello\n\rworld"), 8);
    2328     if (!testStringFromX11(pCtx, "hello\r\n\rworld", VINF_SUCCESS))
    2329         ++cErrs;
     2326    testStringFromX11(hTest, pCtx, "hello\r\n\rworld", VINF_SUCCESS, 0);
    23302327    /* An empty string */
    23312328    clipSetSelectionValues("text/plain;charset=utf-8", XA_STRING, "",
    23322329                           sizeof(""), 8);
    2333     if (!testStringFromX11(pCtx, "", VINF_SUCCESS))
    2334         ++cErrs;
     2330    testStringFromX11(hTest, pCtx, "", VINF_SUCCESS, 0);
    23352331    /* With an embedded Utf-8 character. */
    23362332    clipSetSelectionValues("STRING", XA_STRING,
    23372333                           "100\xE2\x82\xAC" /* 100 Euro */,
    23382334                           sizeof("100\xE2\x82\xAC"), 8);
    2339     if (!testStringFromX11(pCtx, "100\xE2\x82\xAC", VINF_SUCCESS))
    2340         ++cErrs;
     2335    testStringFromX11(hTest, pCtx, "100\xE2\x82\xAC", VINF_SUCCESS, 0);
    23412336    /* A non-zero-terminated string */
    23422337    clipSetSelectionValues("TEXT", XA_STRING,
    2343                            "hello world", sizeof("hello world") - 2, 8);
    2344     if (!testStringFromX11(pCtx, "hello worl", VINF_SUCCESS))
    2345         ++cErrs;
     2338                           "hello world", sizeof("hello world") - 1, 8);
     2339    // testStringFromX11(hTest, pCtx, "hello world", VINF_SUCCESS,
     2340    //                   sizeof("hello world") * 2 - 2);
    23462341
    23472342    /*** COMPOUND TEXT from X11 ***/
    2348     RTPrintf(TEST_NAME ": TESTING reading compound text from X11\n");
     2343    RTTestSub(hTest, "reading compound text from X11");
    23492344    /* Simple test */
    23502345    clipSetSelectionValues("COMPOUND_TEXT", XA_STRING, "hello world",
    23512346                           sizeof("hello world"), 8);
    2352     if (!testStringFromX11(pCtx, "hello world", VINF_SUCCESS))
    2353         ++cErrs;
     2347    testStringFromX11(hTest, pCtx, "hello world", VINF_SUCCESS, 0);
    23542348    /* With an embedded carriage return */
    23552349    clipSetSelectionValues("COMPOUND_TEXT", XA_STRING, "hello\nworld",
    23562350                           sizeof("hello\nworld"), 8);
    2357     if (!testStringFromX11(pCtx, "hello\r\nworld", VINF_SUCCESS))
    2358         ++cErrs;
     2351    testStringFromX11(hTest, pCtx, "hello\r\nworld", VINF_SUCCESS, 0);
    23592352    /* With an embedded CRLF */
    23602353    clipSetSelectionValues("COMPOUND_TEXT", XA_STRING, "hello\r\nworld",
    23612354                           sizeof("hello\r\nworld"), 8);
    2362     if (!testStringFromX11(pCtx, "hello\r\r\nworld", VINF_SUCCESS))
    2363         ++cErrs;
     2355    testStringFromX11(hTest, pCtx, "hello\r\r\nworld", VINF_SUCCESS, 0);
    23642356    /* With an embedded LFCR */
    23652357    clipSetSelectionValues("COMPOUND_TEXT", XA_STRING, "hello\n\rworld",
    23662358                           sizeof("hello\n\rworld"), 8);
    2367     if (!testStringFromX11(pCtx, "hello\r\n\rworld", VINF_SUCCESS))
    2368         ++cErrs;
     2359    testStringFromX11(hTest, pCtx, "hello\r\n\rworld", VINF_SUCCESS, 0);
    23692360    /* An empty string */
    23702361    clipSetSelectionValues("COMPOUND_TEXT", XA_STRING, "",
    23712362                           sizeof(""), 8);
    2372     if (!testStringFromX11(pCtx, "", VINF_SUCCESS))
    2373         ++cErrs;
     2363    testStringFromX11(hTest, pCtx, "", VINF_SUCCESS, 0);
    23742364    /* A non-zero-terminated string */
    23752365    clipSetSelectionValues("COMPOUND_TEXT", XA_STRING,
    2376                            "hello world", sizeof("hello world") - 2, 8);
    2377     if (!testStringFromX11(pCtx, "hello worl", VINF_SUCCESS))
    2378         ++cErrs;
     2366                           "hello world", sizeof("hello world") - 1, 8);
     2367    // testStringFromX11(hTest, pCtx, "hello world", VINF_SUCCESS,
     2368    //                   sizeof("hello world") * 2 - 2);
    23792369
    23802370    /*** Latin1 from X11 ***/
    2381     RTPrintf(TEST_NAME ": TESTING reading Latin1 from X11\n");
     2371    RTTestSub(hTest, "reading Latin1 from X11");
    23822372    /* Simple test */
    23832373    clipSetSelectionValues("STRING", XA_STRING, "Georges Dupr\xEA",
    23842374                           sizeof("Georges Dupr\xEA"), 8);
    2385     if (!testLatin1FromX11(pCtx, "Georges Dupr\xEA", VINF_SUCCESS))
    2386         ++cErrs;
     2375    testLatin1FromX11(hTest, pCtx, "Georges Dupr\xEA", VINF_SUCCESS, 0);
    23872376    /* With an embedded carriage return */
    23882377    clipSetSelectionValues("TEXT", XA_STRING, "Georges\nDupr\xEA",
    23892378                           sizeof("Georges\nDupr\xEA"), 8);
    2390     if (!testLatin1FromX11(pCtx, "Georges\r\nDupr\xEA", VINF_SUCCESS))
    2391         ++cErrs;
     2379    testLatin1FromX11(hTest, pCtx, "Georges\r\nDupr\xEA", VINF_SUCCESS, 0);
    23922380    /* With an embedded CRLF */
    23932381    clipSetSelectionValues("TEXT", XA_STRING, "Georges\r\nDupr\xEA",
    23942382                           sizeof("Georges\r\nDupr\xEA"), 8);
    2395     if (!testLatin1FromX11(pCtx, "Georges\r\r\nDupr\xEA", VINF_SUCCESS))
    2396         ++cErrs;
     2383    testLatin1FromX11(hTest, pCtx, "Georges\r\r\nDupr\xEA", VINF_SUCCESS, 0);
    23972384    /* With an embedded LFCR */
    23982385    clipSetSelectionValues("TEXT", XA_STRING, "Georges\n\rDupr\xEA",
    23992386                           sizeof("Georges\n\rDupr\xEA"), 8);
    2400     if (!testLatin1FromX11(pCtx, "Georges\r\n\rDupr\xEA", VINF_SUCCESS))
    2401         ++cErrs;
     2387    testLatin1FromX11(hTest, pCtx, "Georges\r\n\rDupr\xEA", VINF_SUCCESS, 0);
    24022388    /* A non-zero-terminated string */
    24032389    clipSetSelectionValues("text/plain", XA_STRING,
    24042390                           "Georges Dupr\xEA!",
    2405                            sizeof("Georges Dupr\xEA!") - 2, 8);
    2406     if (!testLatin1FromX11(pCtx, "Georges Dupr\xEA", VINF_SUCCESS))
    2407         ++cErrs;
     2391                           sizeof("Georges Dupr\xEA!") - 1, 8);
     2392    // testLatin1FromX11(hTest, pCtx, "Georges Dupr\xEA!", VINF_SUCCESS,
     2393    //                   sizeof("Georges Dupr\xEA!") * 2 - 2);
    24082394
    24092395    /*** Unknown X11 format ***/
    2410     RTPrintf(TEST_NAME ": TESTING handling of an unknown X11 format\n");
     2396    RTTestSub(hTest, "handling of an unknown X11 format");
    24112397    clipInvalidateFormats();
    24122398    clipSetSelectionValues("CLIPBOARD", XA_STRING, "Test",
    24132399                           sizeof("Test"), 8);
    24142400    clipSendTargetUpdate(pCtx);
    2415     if (clipQueryFormats() != 0)
    2416     {
    2417         RTPrintf("Failed to send a format update notification\n");
    2418         ++cErrs;
    2419     }
     2401    RTTEST_CHECK_MSG(hTest, clipQueryFormats() == 0,
     2402                     (hTest, "Failed to send a format update notification\n"));
    24202403
    24212404    /*** Timeout from X11 ***/
    2422     RTPrintf(TEST_NAME ": TESTING X11 timeout\n");
     2405    RTTestSub(hTest, "X11 timeout");
    24232406    clipSetSelectionValues("UTF8_STRING", XT_CONVERT_FAIL, "hello world",
    24242407                           sizeof("hello world"), 8);
    2425     if (!testStringFromX11(pCtx, "hello world", VERR_TIMEOUT))
    2426         ++cErrs;
     2408    testStringFromX11(hTest, pCtx, "hello world", VERR_TIMEOUT, 0);
    24272409
    24282410    /*** No data in X11 clipboard ***/
    2429     RTPrintf(TEST_NAME ": TESTING a data request from an empty X11 clipboard\n");
     2411    RTTestSub(hTest, "a data request from an empty X11 clipboard");
    24302412    clipSetSelectionValues("UTF8_STRING", XA_STRING, NULL,
    24312413                           0, 8);
     
    24332415                           pReq);
    24342416    clipGetCompletedRequest(&rc, &pc, &cbActual, &pReqRet);
    2435     if (rc != VERR_NO_DATA)
    2436     {
    2437         RTPrintf("Returned %Rrc instead of VERR_NO_DATA\n", rc);
    2438         ++cErrs;
    2439     }
    2440     if (pReqRet != pReq)
    2441     {
    2442         RTPrintf("Wrong returned request data, expected %p, got %p\n",
    2443                  pReq, pReqRet);
    2444         ++cErrs;
    2445     }
     2417    RTTEST_CHECK_MSG(hTest, rc == VERR_NO_DATA,
     2418                     (hTest, "Returned %Rrc instead of VERR_NO_DATA\n",
     2419                      rc));
     2420    RTTEST_CHECK_MSG(hTest, pReqRet == pReq,
     2421                     (hTest, "Wrong returned request data, expected %p, got %p\n",
     2422                     pReq, pReqRet));
    24462423
    24472424    /*** Ensure that VBox is notified when we return the CB to X11 ***/
    2448     RTPrintf(TEST_NAME ": TESTING notification of switch to X11 clipboard\n");
     2425    RTTestSub(hTest, "notification of switch to X11 clipboard");
    24492426    clipInvalidateFormats();
    24502427    clipReleaseCB(pCtx);
    2451     if (clipQueryFormats() != 0)
    2452     {
    2453         RTPrintf("Failed to send a format update (release) notification\n");
    2454         ++cErrs;
    2455     }
     2428    RTTEST_CHECK_MSG(hTest, clipQueryFormats() == 0,
     2429                     (hTest, "Failed to send a format update (release) notification\n"));
    24562430
    24572431    /*** request for an invalid VBox format from X11 ***/
    2458     RTPrintf(TEST_NAME ": TESTING a request for an invalid VBox format from X11\n");
     2432    RTTestSub(hTest, "a request for an invalid VBox format from X11");
    24592433    ClipRequestDataFromX11(pCtx, 0xffff, pReq);
    24602434    clipGetCompletedRequest(&rc, &pc, &cbActual, &pReqRet);
    2461     if (rc != VERR_NOT_IMPLEMENTED)
    2462     {
    2463         RTPrintf("Returned %Rrc instead of VERR_NOT_IMPLEMENTED\n", rc);
    2464         ++cErrs;
    2465     }
    2466     if (pReqRet != pReq)
    2467     {
    2468         RTPrintf("Wrong returned request data, expected %p, got %p\n",
    2469                  pReq, pReqRet);
    2470         ++cErrs;
    2471     }
     2435    RTTEST_CHECK_MSG(hTest, rc == VERR_NOT_IMPLEMENTED,
     2436                     (hTest, "Returned %Rrc instead of VERR_NOT_IMPLEMENTED\n",
     2437                      rc));
     2438    RTTEST_CHECK_MSG(hTest, pReqRet == pReq,
     2439                     (hTest, "Wrong returned request data, expected %p, got %p\n",
     2440                     pReq, pReqRet));
    24722441
    24732442    /*** Targets failure from X11 ***/
    2474     RTPrintf(TEST_NAME ": TESTING X11 targets conversion failure\n");
     2443    RTTestSub(hTest, "X11 targets conversion failure");
    24752444    clipSetSelectionValues("UTF8_STRING", XA_STRING, "hello world",
    24762445                           sizeof("hello world"), 8);
    24772446    clipSetTargetsFailure(false, true);
    24782447    clipUpdateX11Targets(pCtx, NULL, 0);
    2479     if (clipQueryFormats() != 0)
    2480     {
    2481         RTPrintf("Wrong targets reported: %02X\n", clipQueryFormats());
    2482         ++cErrs;
    2483     }
     2448    RTTEST_CHECK_MSG(hTest, clipQueryFormats() == 0,
     2449                     (hTest, "Wrong targets reported: %02X\n",
     2450                      clipQueryFormats()));
    24842451
    24852452    /*** X11 text format conversion ***/
    2486     RTPrintf(TEST_NAME ": TESTING handling of X11 selection targets\n");
    2487     if (!clipTestTextFormatConversion(pCtx))
    2488     {
    2489         RTPrintf(TEST_NAME ": Failed to select the right X11 text formats\n");
    2490         ++cErrs;
    2491     }
    2492     if (!clipTestTargetUpdate(pCtx))
    2493     {
    2494         RTPrintf(TEST_NAME ": Incorrect reporting of new selection targets\n");
    2495         ++cErrs;
    2496     }
     2453    RTTestSub(hTest, "handling of X11 selection targets");
     2454    RTTEST_CHECK_MSG(hTest, clipTestTextFormatConversion(pCtx),
     2455                     (hTest, "failed to select the right X11 text formats\n"));
     2456    RTTEST_CHECK_MSG(hTest, clipTestTargetUpdate(pCtx),
     2457                     (hTest, "incorrect reporting of new selection targets\n"));
    24972458
    24982459    /*** Utf-8 from VBox ***/
    2499     RTPrintf(TEST_NAME ": TESTING reading Utf-8 from VBox\n");
     2460    RTTestSub(hTest, "reading Utf-8 from VBox");
    25002461    /* Simple test */
    25012462    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "hello world",
    25022463                     sizeof("hello world") * 2);
    2503     if (!testStringFromVBox(pCtx, "UTF8_STRING",
     2464    testStringFromVBox(hTest, pCtx, "UTF8_STRING",
    25042465                            clipGetAtom(NULL, "UTF8_STRING"),
    2505                             "hello world", sizeof("hello world"), 8))
    2506         ++cErrs;
     2466                            "hello world", sizeof("hello world"));
    25072467    /* With an embedded carriage return */
    25082468    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "hello\r\nworld",
    25092469                     sizeof("hello\r\nworld") * 2);
    2510     if (!testStringFromVBox(pCtx, "text/plain;charset=UTF-8",
     2470    testStringFromVBox(hTest, pCtx, "text/plain;charset=UTF-8",
    25112471                            clipGetAtom(NULL, "text/plain;charset=UTF-8"),
    2512                             "hello\nworld", sizeof("hello\nworld"), 8))
    2513         ++cErrs;
     2472                            "hello\nworld", sizeof("hello\nworld"));
    25142473    /* With an embedded CRCRLF */
    25152474    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "hello\r\r\nworld",
    25162475                     sizeof("hello\r\r\nworld") * 2);
    2517     if (!testStringFromVBox(pCtx, "text/plain;charset=UTF-8",
     2476    testStringFromVBox(hTest, pCtx, "text/plain;charset=UTF-8",
    25182477                            clipGetAtom(NULL, "text/plain;charset=UTF-8"),
    2519                             "hello\r\nworld", sizeof("hello\r\nworld"), 8))
    2520         ++cErrs;
     2478                            "hello\r\nworld", sizeof("hello\r\nworld"));
    25212479    /* With an embedded CRLFCR */
    25222480    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "hello\r\n\rworld",
    25232481                     sizeof("hello\r\n\rworld") * 2);
    2524     if (!testStringFromVBox(pCtx, "text/plain;charset=UTF-8",
     2482    testStringFromVBox(hTest, pCtx, "text/plain;charset=UTF-8",
    25252483                            clipGetAtom(NULL, "text/plain;charset=UTF-8"),
    2526                             "hello\n\rworld", sizeof("hello\n\rworld"), 8))
    2527         ++cErrs;
     2484                            "hello\n\rworld", sizeof("hello\n\rworld"));
    25282485    /* An empty string */
    25292486    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "", 2);
    2530     if (!testStringFromVBox(pCtx, "text/plain;charset=utf-8",
     2487    testStringFromVBox(hTest, pCtx, "text/plain;charset=utf-8",
    25312488                            clipGetAtom(NULL, "text/plain;charset=utf-8"),
    2532                             "", sizeof(""), 8))
    2533         ++cErrs;
     2489                            "", sizeof(""));
    25342490    /* With an embedded Utf-8 character. */
    25352491    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "100\xE2\x82\xAC" /* 100 Euro */,
    25362492                     10);
    2537     if (!testStringFromVBox(pCtx, "STRING",
     2493    testStringFromVBox(hTest, pCtx, "STRING",
    25382494                            clipGetAtom(NULL, "STRING"),
    2539                             "100\xE2\x82\xAC", sizeof("100\xE2\x82\xAC"), 8))
    2540         ++cErrs;
     2495                            "100\xE2\x82\xAC", sizeof("100\xE2\x82\xAC"));
    25412496    /* A non-zero-terminated string */
    25422497    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "hello world",
    2543                      sizeof("hello world") * 2 - 4);
    2544     if (!testStringFromVBox(pCtx, "TEXT",
    2545                             clipGetAtom(NULL, "TEXT"),
    2546                             "hello worl", sizeof("hello worl"), 8))
    2547         ++cErrs;
     2498                     sizeof("hello world") * 2 - 2);
     2499    // testStringFromVBox(hTest, pCtx, "TEXT",
     2500    //                         clipGetAtom(NULL, "TEXT"),
     2501    //                         "hello world", sizeof("hello world") - 1);
    25482502
    25492503    /*** COMPOUND TEXT from VBox ***/
    2550     RTPrintf(TEST_NAME ": TESTING reading COMPOUND TEXT from VBox\n");
     2504    RTTestSub(hTest, "reading COMPOUND TEXT from VBox");
    25512505    /* Simple test */
    25522506    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "hello world",
    25532507                     sizeof("hello world") * 2);
    2554     if (!testStringFromVBox(pCtx, "COMPOUND_TEXT",
     2508    testStringFromVBox(hTest, pCtx, "COMPOUND_TEXT",
    25552509                            clipGetAtom(NULL, "COMPOUND_TEXT"),
    2556                             "hello world", sizeof("hello world"), 8))
    2557         ++cErrs;
     2510                            "hello world", sizeof("hello world"));
    25582511    /* With an embedded carriage return */
    25592512    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "hello\r\nworld",
    25602513                     sizeof("hello\r\nworld") * 2);
    2561     if (!testStringFromVBox(pCtx, "COMPOUND_TEXT",
     2514    testStringFromVBox(hTest, pCtx, "COMPOUND_TEXT",
    25622515                            clipGetAtom(NULL, "COMPOUND_TEXT"),
    2563                             "hello\nworld", sizeof("hello\nworld"), 8))
    2564         ++cErrs;
     2516                            "hello\nworld", sizeof("hello\nworld"));
    25652517    /* With an embedded CRCRLF */
    25662518    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "hello\r\r\nworld",
    25672519                     sizeof("hello\r\r\nworld") * 2);
    2568     if (!testStringFromVBox(pCtx, "COMPOUND_TEXT",
     2520    testStringFromVBox(hTest, pCtx, "COMPOUND_TEXT",
    25692521                            clipGetAtom(NULL, "COMPOUND_TEXT"),
    2570                             "hello\r\nworld", sizeof("hello\r\nworld"), 8))
    2571         ++cErrs;
     2522                            "hello\r\nworld", sizeof("hello\r\nworld"));
    25722523    /* With an embedded CRLFCR */
    25732524    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "hello\r\n\rworld",
    25742525                     sizeof("hello\r\n\rworld") * 2);
    2575     if (!testStringFromVBox(pCtx, "COMPOUND_TEXT",
     2526    testStringFromVBox(hTest, pCtx, "COMPOUND_TEXT",
    25762527                            clipGetAtom(NULL, "COMPOUND_TEXT"),
    2577                             "hello\n\rworld", sizeof("hello\n\rworld"), 8))
    2578         ++cErrs;
     2528                            "hello\n\rworld", sizeof("hello\n\rworld"));
    25792529    /* An empty string */
    25802530    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "", 2);
    2581     if (!testStringFromVBox(pCtx, "COMPOUND_TEXT",
     2531    testStringFromVBox(hTest, pCtx, "COMPOUND_TEXT",
    25822532                            clipGetAtom(NULL, "COMPOUND_TEXT"),
    2583                             "", sizeof(""), 8))
    2584         ++cErrs;
     2533                            "", sizeof(""));
    25852534    /* A non-zero-terminated string */
    25862535    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "hello world",
    2587                      sizeof("hello world") * 2 - 4);
    2588     if (!testStringFromVBox(pCtx, "COMPOUND_TEXT",
    2589                             clipGetAtom(NULL, "COMPOUND_TEXT"),
    2590                             "hello worl", sizeof("hello worl"), 8))
    2591         ++cErrs;
     2536                     sizeof("hello world") * 2 - 2);
     2537    // testStringFromVBox(hTest, pCtx, "COMPOUND_TEXT",
     2538    //                         clipGetAtom(NULL, "COMPOUND_TEXT"),
     2539    //                         "hello world", sizeof("hello world") - 1);
    25922540
    25932541    /*** Timeout from VBox ***/
    2594     RTPrintf(TEST_NAME ": TESTING reading from VBox with timeout\n");
     2542    RTTestSub(hTest, "reading from VBox with timeout");
    25952543    clipEmptyVBox(pCtx, VERR_TIMEOUT);
    2596     if (!testStringFromVBoxFailed(pCtx, "UTF8_STRING"))
    2597         ++cErrs;
     2544    testStringFromVBoxFailed(hTest, pCtx, "UTF8_STRING");
    25982545
    25992546    /*** No data in VBox clipboard ***/
    2600     RTPrintf(TEST_NAME ": TESTING an empty VBox clipboard\n");
     2547    RTTestSub(hTest, "an empty VBox clipboard");
    26012548    clipEmptyVBox(pCtx, VINF_SUCCESS);
    2602     if (!pCtx->fOwnsClipboard)
    2603     {
    2604         RTPrintf(TEST_NAME ": VBox grabbed the clipboard with no data and we ignored it\n");
    2605         ++cErrs;
    2606     }
    2607     if (!testStringFromVBoxFailed(pCtx, "UTF8_STRING"))
    2608         ++cErrs;
     2549    RTTEST_CHECK_MSG(hTest, pCtx->fOwnsClipboard,
     2550                     (hTest, "VBox grabbed the clipboard with no data and we ignored it\n"));
     2551    testStringFromVBoxFailed(hTest, pCtx, "UTF8_STRING");
    26092552
    26102553    /*** An unknown VBox format ***/
    2611     RTPrintf(TEST_NAME ": TESTING reading an unknown VBox format\n");
     2554    RTTestSub(hTest, "reading an unknown VBox format");
    26122555    clipSetVBoxUtf16(pCtx, VINF_SUCCESS, "", 2);
    26132556    ClipAnnounceFormatToX11(pCtx, 0xa0000);
    2614     if (!pCtx->fOwnsClipboard)
    2615     {
    2616         RTPrintf(TEST_NAME ": VBox grabbed the clipboard with unknown data and we ignored it\n");
    2617         ++cErrs;
    2618     }
    2619     if (!testStringFromVBoxFailed(pCtx, "UTF8_STRING"))
    2620         ++cErrs;
     2557    RTTEST_CHECK_MSG(hTest, pCtx->fOwnsClipboard,
     2558                     (hTest, "VBox grabbed the clipboard with unknown data and we ignored it\n"));
     2559    testStringFromVBoxFailed(hTest, pCtx, "UTF8_STRING");
    26212560    rc = ClipStopX11(pCtx);
    26222561    AssertRCReturn(rc, 1);
    26232562    ClipDestructX11(pCtx);
    26242563
    2625     if (cErrs > 0)
    2626         RTPrintf("Failed with %u error(s)\n", cErrs);
    2627     return cErrs > 0 ? 1 : 0;
     2564    return RTTestSummaryAndDestroy(hTest);
    26282565}
    26292566
     
    26372574 * the command line. */
    26382575
    2639 #include <iprt/initterm.h>
    2640 #include <iprt/stream.h>
    2641 
    2642 #define TEST_NAME "tstClipboardX11Smoke"
     2576#include <iprt/test.h>
    26432577
    26442578int ClipRequestDataForX11(VBOXCLIPBOARDCONTEXT *pCtx,
     
    26602594int main()
    26612595{
    2662     int rc = VINF_SUCCESS;
    2663     RTR3Init();
     2596    /*
     2597     * Init the runtime, test and say hello.
     2598     */
     2599    RTTEST hTest;
     2600    int rc = RTTestInitAndCreate("tstClipboardX11Smoke", &hTest);
     2601    if (rc)
     2602        return rc;
     2603    RTTestBanner(hTest);
     2604
     2605    /*
     2606     * Run the test.
     2607     */
     2608    rc = VINF_SUCCESS;
    26642609    /* We can't test anything without an X session, so just return success
    26652610     * in that case. */
    26662611    if (!RTEnvGet("DISPLAY"))
    26672612    {
    2668         RTPrintf(TEST_NAME ": X11 not available, not running test\n");
    2669         return 0;
    2670     }
    2671     RTPrintf(TEST_NAME ": TESTING\n");
     2613        RTTestPrintf(hTest, RTTESTLVL_INFO,
     2614                     "X11 not available, not running test\n");
     2615        return RTTestSummaryAndDestroy(hTest);
     2616    }
    26722617    CLIPBACKEND *pCtx = ClipConstructX11(NULL);
    26732618    AssertReturn(pCtx, 1);
     
    26792624    AssertRCReturn(rc, 1);
    26802625    ClipDestructX11(pCtx);
    2681     return 0;
     2626    return RTTestSummaryAndDestroy(hTest);
    26822627}
    26832628
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette