VirtualBox

Changeset 86358 in vbox for trunk/src/VBox/Runtime


Ignore:
Timestamp:
Sep 30, 2020 6:09:08 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
140649
Message:

tstStrSimplePattern: Converted to iprt/test.h (was using IPRT w/o initializing it, causing trouble in strict and asan builds).

File:
1 edited

Legend:

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

    r82968 r86358  
    3030*********************************************************************************************************************************/
    3131#include <iprt/string.h>
    32 #include <iprt/stream.h>
    33 #include <iprt/errcore.h>
    34 #include <iprt/initterm.h>
     32#include <iprt/test.h>
    3533
    3634
    3735int main()
    3836{
    39     int cErrors = 0;
     37    RTTEST hTest;
     38    RTEXITCODE rcExit = RTTestInitAndCreate("tstRTStrSimplePattern", &hTest);
     39    if (rcExit != RTEXITCODE_SUCCESS)
     40        return rcExit;
    4041
    41 #define CHECK_EXPR(expr) \
    42     do { bool const f = !!(expr); if (RT_UNLIKELY(!f)) { RTPrintf("tstStrSimplePattern(%d): %s!\n", __LINE__, #expr); cErrors++; } } while (0)
    43 #define CHECK_EXPR_MSG(expr, msg) \
    44     do { \
    45         bool const f = !!(expr); \
    46         if (RT_UNLIKELY(!f)) { \
    47             RTPrintf("tstStrSimplePattern(%d): %s!\n", __LINE__, #expr); \
    48             RTPrintf("tstStrSimplePattern: "); \
    49             RTPrintf msg; \
    50             ++cErrors; \
    51         } \
    52     } while (0)
     42    RTTESTI_CHECK(RTStrSimplePatternMatch("*", ""));
     43    RTTESTI_CHECK(RTStrSimplePatternMatch("*", "asdfasdflkjasdlfkj"));
     44    RTTESTI_CHECK(RTStrSimplePatternMatch("*?*?*?*?*", "asdfasdflkjasdlfkj"));
     45    RTTESTI_CHECK(RTStrSimplePatternMatch("asdf??df", "asdfasdf"));
     46    RTTESTI_CHECK(!RTStrSimplePatternMatch("asdf??dq", "asdfasdf"));
     47    RTTESTI_CHECK(RTStrSimplePatternMatch("asdf*df", "asdfasdf"));
     48    RTTESTI_CHECK(!RTStrSimplePatternMatch("asdf*dq", "asdfasdf"));
     49    RTTESTI_CHECK(RTStrSimplePatternMatch("a*", "asdfasdf"));
     50    RTTESTI_CHECK(RTStrSimplePatternMatch("a*f", "asdfasdf"));
     51    RTTESTI_CHECK(!RTStrSimplePatternMatch("a*q", "asdfasdf"));
     52    RTTESTI_CHECK(!RTStrSimplePatternMatch("a*q?", "asdfasdf"));
     53    RTTESTI_CHECK(RTStrSimplePatternMatch("?*df", "asdfasdf"));
    5354
    54     CHECK_EXPR(RTStrSimplePatternMatch("*", ""));
    55     CHECK_EXPR(RTStrSimplePatternMatch("*", "asdfasdflkjasdlfkj"));
    56     CHECK_EXPR(RTStrSimplePatternMatch("*?*?*?*?*", "asdfasdflkjasdlfkj"));
    57     CHECK_EXPR(RTStrSimplePatternMatch("asdf??df", "asdfasdf"));
    58     CHECK_EXPR(!RTStrSimplePatternMatch("asdf??dq", "asdfasdf"));
    59     CHECK_EXPR(RTStrSimplePatternMatch("asdf*df", "asdfasdf"));
    60     CHECK_EXPR(!RTStrSimplePatternMatch("asdf*dq", "asdfasdf"));
    61     CHECK_EXPR(RTStrSimplePatternMatch("a*", "asdfasdf"));
    62     CHECK_EXPR(RTStrSimplePatternMatch("a*f", "asdfasdf"));
    63     CHECK_EXPR(!RTStrSimplePatternMatch("a*q", "asdfasdf"));
    64     CHECK_EXPR(!RTStrSimplePatternMatch("a*q?", "asdfasdf"));
    65     CHECK_EXPR(RTStrSimplePatternMatch("?*df", "asdfasdf"));
    66 
    67     CHECK_EXPR(RTStrSimplePatternNMatch("*", 1, "", 0));
    68     CHECK_EXPR(RTStrSimplePatternNMatch("*", ~(size_t)0, "", 0));
    69     CHECK_EXPR(RTStrSimplePatternNMatch("*", ~(size_t)0, "", ~(size_t)0));
    70     CHECK_EXPR(RTStrSimplePatternNMatch("*", 1, "asdfasdflkjasdlfkj", ~(size_t)0));
    71     CHECK_EXPR(RTStrSimplePatternNMatch("*", ~(size_t)0, "asdfasdflkjasdlfkj", ~(size_t)0));
    72     CHECK_EXPR(RTStrSimplePatternNMatch("*", 1, "asdfasdflkjasdlfkj", 3));
    73     CHECK_EXPR(RTStrSimplePatternNMatch("*", 2, "asdfasdflkjasdlfkj", 10));
    74     CHECK_EXPR(RTStrSimplePatternNMatch("*", 15, "asdfasdflkjasdlfkj", 10));
    75     CHECK_EXPR(RTStrSimplePatternNMatch("*?*?*?*?*", 1, "asdfasdflkjasdlfkj", 128));
    76     CHECK_EXPR(RTStrSimplePatternNMatch("*?*?*?*?*", 5, "asdfasdflkjasdlfkj", 0));
    77     CHECK_EXPR(RTStrSimplePatternNMatch("*?*?*?*?*", 5, "asdfasdflkjasdlfkj", ~(size_t)0));
    78     CHECK_EXPR(RTStrSimplePatternNMatch("*?*?*?*?*", ~(size_t)0, "asdfasdflkjasdlfkj", ~(size_t)0));
    79     CHECK_EXPR(RTStrSimplePatternNMatch("asdf??df", 8, "asdfasdf", 8));
    80     CHECK_EXPR(RTStrSimplePatternNMatch("asdf??df", ~(size_t)0, "asdfasdf", 8));
    81     CHECK_EXPR(RTStrSimplePatternNMatch("asdf??df", ~(size_t)0, "asdfasdf", ~(size_t)0));
    82     CHECK_EXPR(RTStrSimplePatternNMatch("asdf??df", 7, "asdfasdf", 7));
    83     CHECK_EXPR(!RTStrSimplePatternNMatch("asdf??df", 7, "asdfasdf", 8));
    84     CHECK_EXPR(!RTStrSimplePatternNMatch("asdf??dq", 8, "asdfasdf", 8));
    85     CHECK_EXPR(RTStrSimplePatternNMatch("asdf??dq", 7, "asdfasdf", 7));
    86     CHECK_EXPR(RTStrSimplePatternNMatch("asdf*df", 8, "asdfasdf", 8));
    87     CHECK_EXPR(!RTStrSimplePatternNMatch("asdf*dq", 8, "asdfasdf", 8));
    88     CHECK_EXPR(RTStrSimplePatternNMatch("a*", 10, "asdfasdf", 8));
    89     CHECK_EXPR(RTStrSimplePatternNMatch("a*f", 3, "asdfasdf", ~(size_t)0));
    90     CHECK_EXPR(!RTStrSimplePatternNMatch("a*q", 3, "asdfasdf", ~(size_t)0));
    91     CHECK_EXPR(!RTStrSimplePatternNMatch("a*q?", 4, "asdfasdf", 9));
    92     CHECK_EXPR(RTStrSimplePatternNMatch("?*df", 4, "asdfasdf", 8));
     55    RTTESTI_CHECK(RTStrSimplePatternNMatch("*", 1, "", 0));
     56    RTTESTI_CHECK(RTStrSimplePatternNMatch("*", ~(size_t)0, "", 0));
     57    RTTESTI_CHECK(RTStrSimplePatternNMatch("*", ~(size_t)0, "", ~(size_t)0));
     58    RTTESTI_CHECK(RTStrSimplePatternNMatch("*", 1, "asdfasdflkjasdlfkj", ~(size_t)0));
     59    RTTESTI_CHECK(RTStrSimplePatternNMatch("*", ~(size_t)0, "asdfasdflkjasdlfkj", ~(size_t)0));
     60    RTTESTI_CHECK(RTStrSimplePatternNMatch("*", 1, "asdfasdflkjasdlfkj", 3));
     61    RTTESTI_CHECK(RTStrSimplePatternNMatch("*", 2, "asdfasdflkjasdlfkj", 10));
     62    RTTESTI_CHECK(RTStrSimplePatternNMatch("*", 15, "asdfasdflkjasdlfkj", 10));
     63    RTTESTI_CHECK(RTStrSimplePatternNMatch("*?*?*?*?*", 1, "asdfasdflkjasdlfkj", 128));
     64    RTTESTI_CHECK(RTStrSimplePatternNMatch("*?*?*?*?*", 5, "asdfasdflkjasdlfkj", 0));
     65    RTTESTI_CHECK(RTStrSimplePatternNMatch("*?*?*?*?*", 5, "asdfasdflkjasdlfkj", ~(size_t)0));
     66    RTTESTI_CHECK(RTStrSimplePatternNMatch("*?*?*?*?*", ~(size_t)0, "asdfasdflkjasdlfkj", ~(size_t)0));
     67    RTTESTI_CHECK(RTStrSimplePatternNMatch("asdf??df", 8, "asdfasdf", 8));
     68    RTTESTI_CHECK(RTStrSimplePatternNMatch("asdf??df", ~(size_t)0, "asdfasdf", 8));
     69    RTTESTI_CHECK(RTStrSimplePatternNMatch("asdf??df", ~(size_t)0, "asdfasdf", ~(size_t)0));
     70    RTTESTI_CHECK(RTStrSimplePatternNMatch("asdf??df", 7, "asdfasdf", 7));
     71    RTTESTI_CHECK(!RTStrSimplePatternNMatch("asdf??df", 7, "asdfasdf", 8));
     72    RTTESTI_CHECK(!RTStrSimplePatternNMatch("asdf??dq", 8, "asdfasdf", 8));
     73    RTTESTI_CHECK(RTStrSimplePatternNMatch("asdf??dq", 7, "asdfasdf", 7));
     74    RTTESTI_CHECK(RTStrSimplePatternNMatch("asdf*df", 8, "asdfasdf", 8));
     75    RTTESTI_CHECK(!RTStrSimplePatternNMatch("asdf*dq", 8, "asdfasdf", 8));
     76    RTTESTI_CHECK(RTStrSimplePatternNMatch("a*", 10, "asdfasdf", 8));
     77    RTTESTI_CHECK(RTStrSimplePatternNMatch("a*f", 3, "asdfasdf", ~(size_t)0));
     78    RTTESTI_CHECK(!RTStrSimplePatternNMatch("a*q", 3, "asdfasdf", ~(size_t)0));
     79    RTTESTI_CHECK(!RTStrSimplePatternNMatch("a*q?", 4, "asdfasdf", 9));
     80    RTTESTI_CHECK(RTStrSimplePatternNMatch("?*df", 4, "asdfasdf", 8));
    9381
    9482    size_t offPattern;
    95     CHECK_EXPR(RTStrSimplePatternMultiMatch("asdq|a*f|a??t", ~(size_t)0, "asdf", 4, NULL));
    96     CHECK_EXPR(RTStrSimplePatternMultiMatch("asdq|a*f|a??t", ~(size_t)0, "asdf", 4, &offPattern));
    97     CHECK_EXPR(offPattern == 5);
    98     CHECK_EXPR(RTStrSimplePatternMultiMatch("asdq|a??t|a??f", ~(size_t)0, "asdf", 4, NULL));
    99     CHECK_EXPR(RTStrSimplePatternMultiMatch("asdq|a??t|a??f", ~(size_t)0, "asdf", 4, &offPattern));
    100     CHECK_EXPR(offPattern == 10);
    101     CHECK_EXPR(RTStrSimplePatternMultiMatch("a*f|a??t|a??f", ~(size_t)0, "asdf", 4, NULL));
    102     CHECK_EXPR(RTStrSimplePatternMultiMatch("a*f|a??t|a??f", ~(size_t)0, "asdf", 4, &offPattern));
    103     CHECK_EXPR(offPattern == 0);
    104     CHECK_EXPR(!RTStrSimplePatternMultiMatch("asdq|a??y|a??x", ~(size_t)0, "asdf", 4, NULL));
    105     CHECK_EXPR(!RTStrSimplePatternMultiMatch("asdq|a??y|a??x", ~(size_t)0, "asdf", 4, &offPattern));
    106     CHECK_EXPR(offPattern == ~(size_t)0);
    107     CHECK_EXPR(RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 9, "asdf", 4, NULL));
    108     CHECK_EXPR(RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 8, "asdf", 4, NULL));
    109     CHECK_EXPR(RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 7, "asdf", 4, NULL));
    110     CHECK_EXPR(!RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 6, "asdf", 4, NULL));
    111     CHECK_EXPR(!RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 5, "asdf", 4, NULL));
    112     CHECK_EXPR(!RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 4, "asdf", 4, NULL));
    113     CHECK_EXPR(!RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 3, "asdf", 4, NULL));
    114     CHECK_EXPR(RTStrSimplePatternMultiMatch("asdf", 4, "asdf", 4, NULL));
    115     CHECK_EXPR(RTStrSimplePatternMultiMatch("asdf|", 5, "asdf", 4, NULL));
     83    RTTESTI_CHECK(RTStrSimplePatternMultiMatch("asdq|a*f|a??t", ~(size_t)0, "asdf", 4, NULL));
     84    RTTESTI_CHECK(RTStrSimplePatternMultiMatch("asdq|a*f|a??t", ~(size_t)0, "asdf", 4, &offPattern));
     85    RTTESTI_CHECK(offPattern == 5);
     86    RTTESTI_CHECK(RTStrSimplePatternMultiMatch("asdq|a??t|a??f", ~(size_t)0, "asdf", 4, NULL));
     87    RTTESTI_CHECK(RTStrSimplePatternMultiMatch("asdq|a??t|a??f", ~(size_t)0, "asdf", 4, &offPattern));
     88    RTTESTI_CHECK(offPattern == 10);
     89    RTTESTI_CHECK(RTStrSimplePatternMultiMatch("a*f|a??t|a??f", ~(size_t)0, "asdf", 4, NULL));
     90    RTTESTI_CHECK(RTStrSimplePatternMultiMatch("a*f|a??t|a??f", ~(size_t)0, "asdf", 4, &offPattern));
     91    RTTESTI_CHECK(offPattern == 0);
     92    RTTESTI_CHECK(!RTStrSimplePatternMultiMatch("asdq|a??y|a??x", ~(size_t)0, "asdf", 4, NULL));
     93    RTTESTI_CHECK(!RTStrSimplePatternMultiMatch("asdq|a??y|a??x", ~(size_t)0, "asdf", 4, &offPattern));
     94    RTTESTI_CHECK(offPattern == ~(size_t)0);
     95    RTTESTI_CHECK(RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 9, "asdf", 4, NULL));
     96    RTTESTI_CHECK(RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 8, "asdf", 4, NULL));
     97    RTTESTI_CHECK(RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 7, "asdf", 4, NULL));
     98    RTTESTI_CHECK(!RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 6, "asdf", 4, NULL));
     99    RTTESTI_CHECK(!RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 5, "asdf", 4, NULL));
     100    RTTESTI_CHECK(!RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 4, "asdf", 4, NULL));
     101    RTTESTI_CHECK(!RTStrSimplePatternMultiMatch("asdq|a*f|a??t", 3, "asdf", 4, NULL));
     102    RTTESTI_CHECK(RTStrSimplePatternMultiMatch("asdf", 4, "asdf", 4, NULL));
     103    RTTESTI_CHECK(RTStrSimplePatternMultiMatch("asdf|", 5, "asdf", 4, NULL));
    116104
    117105
     
    119107     * Summary.
    120108     */
    121     if (!cErrors)
    122         RTPrintf("tstStrToNum: SUCCESS\n");
    123     else
    124         RTPrintf("tstStrToNum: FAILURE - %d errors\n", cErrors);
    125     return !!cErrors;
     109    return RTTestSummaryAndDestroy(hTest);
    126110}
    127111
Note: See TracChangeset for help on using the changeset viewer.

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