Changeset 86358 in vbox for trunk/src/VBox/Runtime
- Timestamp:
- Sep 30, 2020 6:09:08 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 140649
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/testcase/tstStrSimplePattern.cpp
r82968 r86358 30 30 *********************************************************************************************************************************/ 31 31 #include <iprt/string.h> 32 #include <iprt/stream.h> 33 #include <iprt/errcore.h> 34 #include <iprt/initterm.h> 32 #include <iprt/test.h> 35 33 36 34 37 35 int main() 38 36 { 39 int cErrors = 0; 37 RTTEST hTest; 38 RTEXITCODE rcExit = RTTestInitAndCreate("tstRTStrSimplePattern", &hTest); 39 if (rcExit != RTEXITCODE_SUCCESS) 40 return rcExit; 40 41 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")); 53 54 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)); 93 81 94 82 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)); 116 104 117 105 … … 119 107 * Summary. 120 108 */ 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); 126 110 } 127 111
Note:
See TracChangeset
for help on using the changeset viewer.