VirtualBox

Changeset 57724 in vbox for trunk


Ignore:
Timestamp:
Sep 11, 2015 8:16:53 PM (9 years ago)
Author:
vboxsync
Message:

tstRTUri: Added test with UTF-8 chars both in escaped and plain forms.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/testcase/tstRTUri.cpp

    r57723 r57724  
    5454    const char *pszHost;
    5555    uint32_t    uPort;
     56
     57    const char *pszCreated;
    5658} g_aTests[] =
    5759{
     
    6769        /*.pszHost      =*/ "example.com",
    6870        /*.uPort        =*/ 8042,
     71        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    6972    },
    7073    {   /* #1 */
     
    7982        /*.pszHost      =*/ "example.com",
    8083        /*.uPort        =*/ 8042,
     84        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    8185    },
    8286    {   /* #2 */
     
    9195        /*.pszHost      =*/ "example.com",
    9296        /*.uPort        =*/ 8042,
     97        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    9398    },
    9499    {   /* #3 */
     
    103108        /*.pszHost      =*/ NULL,
    104109        /*.uPort        =*/ UINT32_MAX,
     110        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    105111    },
    106112    {   /* #4 */
     
    115121        /*.pszHost      =*/ NULL,
    116122        /*.uPort        =*/ UINT32_MAX,
     123        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    117124    },
    118125    {   /* #5 */
     
    127134        /*.pszHost      =*/ NULL,
    128135        /*.uPort        =*/ UINT32_MAX,
     136        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    129137    },
    130138    {   /* #6 */
     
    139147        /*.pszHost      =*/ NULL,
    140148        /*.uPort        =*/ UINT32_MAX,
     149        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    141150    },
    142151    {   /* #7 */
     
    151160        /*.pszHost      =*/ NULL,
    152161        /*.uPort        =*/ UINT32_MAX,
     162        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    153163    },
    154164    {   /* #8 */
     
    163173        /*.pszHost      =*/ NULL,
    164174        /*.uPort        =*/ UINT32_MAX,
     175        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    165176    },
    166177    {   /* #9 */
     
    175186        /*.pszHost      =*/ "example.com",
    176187        /*.uPort        =*/ 8042,
     188        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    177189    },
    178190    {   /* #10 */
     
    187199        /*.pszHost      =*/ "example.com",
    188200        /*.uPort        =*/ 8042,
     201        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    189202    },
    190203    {   /* #11 */
     
    199212        /*.pszHost      =*/ "example.com",
    200213        /*.uPort        =*/ 8042,
     214        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    201215    },
    202216    {   /* #12 */
     
    211225        /*.pszHost      =*/ "example.com",
    212226        /*.uPort        =*/ 8042,
     227        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    213228    },
    214229    {   /* #13 */
     
    223238        /*.pszHost      =*/ "example.com",
    224239        /*.uPort        =*/ 8042,
     240        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    225241    },
    226242    {   /* #14 */
     
    235251        /*.pszHost      =*/ NULL,
    236252        /*.uPort        =*/ UINT32_MAX,
     253        /*.pszCreated   =*/ NULL /* same as pszUri*/,
    237254    },
    238255    {   /* #15 */
     
    247264        /*.pszHost      =*/ NULL,
    248265        /*.uPort        =*/ UINT32_MAX,
     266        /*.pszCreated   =*/ NULL /* same as pszUri*/,
     267    },
     268    {   /* #16 - UTF-8 escape sequences. */
     269        "http://example.com/%ce%b3%ce%bb%cf%83%ce%b1%20%e0%a4%95\xe0\xa4\x95",
     270        /*.pszScheme    =*/ "http",
     271        /*.pszAuthority =*/ "example.com",
     272        /*.pszPath      =*/ "/\xce\xb3\xce\xbb\xcf\x83\xce\xb1 \xe0\xa4\x95\xe0\xa4\x95",
     273        /*.pszQuery     =*/ NULL,
     274        /*.pszFragment  =*/ NULL,
     275        /*.pszUsername  =*/ NULL,
     276        /*.pszPassword  =*/ NULL,
     277        /*.pszHost      =*/ "example.com",
     278        /*.uPort        =*/ UINT32_MAX,
     279        /*.pszCreated   =*/ "http://example.com/\xce\xb3\xce\xbb\xcf\x83\xce\xb1%20\xe0\xa4\x95\xe0\xa4\x95",
    249280    },
    250281};
     
    324355    RTTestBanner(hTest);
    325356
     357#define CHECK_STR_API(a_Call, a_pszExpected) \
     358        do { \
     359            char *pszTmp = a_Call; \
     360            if (a_pszExpected) \
     361            { \
     362                if (!pszTmp) \
     363                    RTTestIFailed("#%u: %s returns NULL, expected '%s'", i, #a_Call, a_pszExpected); \
     364                else if (strcmp(pszTmp, a_pszExpected)) \
     365                        RTTestIFailed("#%u: %s returns '%s', expected '%s'", i, #a_Call, pszTmp, a_pszExpected); \
     366            } \
     367            else if (pszTmp) \
     368                RTTestIFailed("#%u: %s returns '%s', expected NULL", i, #a_Call, pszTmp); \
     369            RTStrFree(pszTmp); \
     370        } while (0)
     371
    326372    RTTestISub("RTUriParse & RTUriParsed*");
    327373    for (uint32_t i = 0; i < RT_ELEMENTS(g_aTests); i++)
     
    331377        if (RT_SUCCESS(rc))
    332378        {
    333 #define CHECK_STR_API(a_Call, a_pszExpected) \
    334             do { \
    335                 char *pszTmp = a_Call; \
    336                 if (a_pszExpected) \
    337                 { \
    338                     if (!pszTmp) \
    339                         RTTestIFailed("#%u: %s returns NULL, expected '%s'", i, #a_Call, a_pszExpected); \
    340                     else if (strcmp(pszTmp, a_pszExpected)) \
    341                             RTTestIFailed("#%u: %s returns '%s', expected '%s'", i, #a_Call, pszTmp, a_pszExpected); \
    342                 } \
    343                 else if (pszTmp) \
    344                     RTTestIFailed("#%u: %s returns '%s', expected NULL", i, #a_Call, pszTmp); \
    345                 RTStrFree(pszTmp); \
    346             } while (0)
    347379            CHECK_STR_API(RTUriParsedScheme(g_aTests[i].pszUri, &Parsed), g_aTests[i].pszScheme);
    348380            CHECK_STR_API(RTUriParsedAuthority(g_aTests[i].pszUri, &Parsed), g_aTests[i].pszAuthority);
     
    362394    RTTestISub("RTUriCreate");
    363395    for (uint32_t i = 0; i < RT_ELEMENTS(g_aTests); i++)
    364         tstCreate(i, g_aTests[i].pszScheme, g_aTests[i].pszAuthority, g_aTests[i].pszPath,
    365                   g_aTests[i].pszQuery, g_aTests[i].pszFragment, g_aTests[i].pszUri);
     396        CHECK_STR_API(RTUriCreate(g_aTests[i].pszScheme, g_aTests[i].pszAuthority, g_aTests[i].pszPath,
     397                                  g_aTests[i].pszQuery, g_aTests[i].pszFragment),
     398                      g_aTests[i].pszCreated ? g_aTests[i].pszCreated : g_aTests[i].pszUri);
    366399
    367400    /* File Uri path */
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