Changeset 45389 in vbox for trunk/src/VBox/Runtime/testcase
- Timestamp:
- Apr 7, 2013 4:11:30 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 84814
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/testcase/tstRTPath.cpp
r44623 r45389 37 37 #include <iprt/string.h> 38 38 #include <iprt/test.h> 39 40 41 static void testParser(RTTEST hTest) 42 { 43 RTTestSub(hTest, "RTPathParse"); 44 45 static struct 46 { 47 uint16_t cComps; 48 uint16_t cchPath; 49 uint16_t offSuffix; 50 const char *pszPath; 51 uint16_t fProps; 52 uint32_t fFlags; 53 } const s_aTests[] = 54 { 55 { 2, 13, 9, "C:/Config.sys", RTPATH_PROP_VOLUME | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX, RTPATHPARSE_FLAGS_STYLE_DOS }, 56 { 2, 13, 10, "C://Config.sys", RTPATH_PROP_VOLUME | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX | RTPATH_PROP_EXTRA_SLASHES, RTPATHPARSE_FLAGS_STYLE_DOS }, 57 { 2, 12, 8, "C:Config.sys", RTPATH_PROP_VOLUME | RTPATH_PROP_RELATIVE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX, RTPATHPARSE_FLAGS_STYLE_DOS }, 58 { 1, 10, 6, "Config.sys", RTPATH_PROP_RELATIVE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX, RTPATHPARSE_FLAGS_STYLE_DOS }, 59 { 1, 4, 4, "//./", RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE, RTPATHPARSE_FLAGS_STYLE_DOS }, 60 { 2, 5, 5, "//./f", RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_DOS }, 61 { 2, 5, 6, "//.//f", RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_EXTRA_SLASHES, RTPATHPARSE_FLAGS_STYLE_DOS }, 62 { 3, 7, 7, "//././f", RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_DOT_REFS, RTPATHPARSE_FLAGS_STYLE_DOS }, 63 { 3, 8, 8, "//.././f", RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_DOT_REFS, RTPATHPARSE_FLAGS_STYLE_DOS }, 64 { 3, 9, 9, "//../../f", RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_RELATIVE | RTPATH_PROP_FILENAME | RTPATH_PROP_DOTDOT_REFS, RTPATHPARSE_FLAGS_STYLE_DOS }, 65 { 1, 1, 1, "/", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE, RTPATHPARSE_FLAGS_STYLE_UNIX }, 66 { 2, 4, 4, "/bin", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX }, 67 { 2, 4, 5, "/bin/", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_DIR_SLASH, RTPATHPARSE_FLAGS_STYLE_UNIX }, 68 { 3, 7, 7, "/bin/ls", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX }, 69 { 3, 12, 7, "/etc/rc.conf", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX, RTPATHPARSE_FLAGS_STYLE_UNIX }, 70 { 1, 1, 2, "//", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_EXTRA_SLASHES, RTPATHPARSE_FLAGS_STYLE_UNIX }, 71 { 1, 1, 3, "///", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_EXTRA_SLASHES, RTPATHPARSE_FLAGS_STYLE_UNIX }, 72 { 3, 6, 7, "/.//bin", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_EXTRA_SLASHES | RTPATH_PROP_DOT_REFS | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX }, 73 { 1, 3, 3, "bin", RTPATH_PROP_RELATIVE | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX }, 74 { 1, 3, 4, "bin/", RTPATH_PROP_RELATIVE | RTPATH_PROP_DIR_SLASH, RTPATHPARSE_FLAGS_STYLE_UNIX }, 75 { 1, 3, 7, "bin////", RTPATH_PROP_RELATIVE | RTPATH_PROP_DIR_SLASH | RTPATH_PROP_EXTRA_SLASHES, RTPATHPARSE_FLAGS_STYLE_UNIX }, 76 { 3, 10, 10, "bin/../usr", RTPATH_PROP_RELATIVE | RTPATH_PROP_DOTDOT_REFS | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX }, 77 { 4, 11, 11, "/bin/../usr", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_RELATIVE | RTPATH_PROP_DOTDOT_REFS | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX }, 78 { 4, 8, 8, "/a/.../u", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX }, 79 { 4, 8, 8, "/a/.b./u", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX }, 80 { 4, 8, 8, "/a/..c/u", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX }, 81 { 4, 8, 8, "/a/d../u", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX }, 82 { 4, 8, 8, "/a/.e/.u", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX }, 83 { 4, 8, 8, "/a/.f/.u", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX }, 84 { 4, 8, 8, "/a/.g/u.", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX }, 85 { 3, 9, 10, "/a/h/u.ext", RTPATH_PROP_EXTRA_SLASHES | RTPATH_PROP_RELATIVE, RTPATHPARSE_FLAGS_STYLE_UNIX | RTPATHPARSE_FLAGS_MIDDLE }, 86 { 3, 9, 9, "a/h/u.ext", RTPATH_PROP_RELATIVE, RTPATHPARSE_FLAGS_STYLE_UNIX | RTPATHPARSE_FLAGS_MIDDLE }, 87 { 3, 9, 10, "a/h/u.ext/", RTPATH_PROP_EXTRA_SLASHES | RTPATH_PROP_RELATIVE, RTPATHPARSE_FLAGS_STYLE_UNIX | RTPATHPARSE_FLAGS_MIDDLE }, 88 }; 89 90 union 91 { 92 RTPATHPARSED Parsed; 93 uint8_t ab[4096]; 94 } u; 95 96 for (uint32_t i = 0; i < RT_ELEMENTS(s_aTests); i++) 97 { 98 int rc = RTPathParse(s_aTests[i].pszPath, &u.Parsed, sizeof(u), s_aTests[i].fFlags); 99 if ( rc != VINF_SUCCESS 100 || s_aTests[i].cComps != u.Parsed.cComps 101 || s_aTests[i].fProps != u.Parsed.fProps 102 || s_aTests[i].offSuffix != u.Parsed.offSuffix 103 || s_aTests[i].cchPath != u.Parsed.cchPath) 104 { 105 RTTestFailed(hTest, "i=%d rc=%Rrc %s", i, rc, s_aTests[i].pszPath); 106 RTTestFailureDetails(hTest, 107 " cComps %u, got %u\n" 108 " fProps %#x, got %#x, xor=>%#x\n" 109 " offSuffix %u, got %u\n" 110 " cchPath %u, got %u\n" 111 , 112 s_aTests[i].cComps, u.Parsed.cComps, 113 s_aTests[i].fProps, u.Parsed.fProps, s_aTests[i].fProps ^ u.Parsed.fProps, 114 s_aTests[i].offSuffix, u.Parsed.offSuffix, 115 s_aTests[i].cchPath, u.Parsed.cchPath); 116 } 117 } 118 } 39 119 40 120 … … 596 676 } 597 677 678 testParser(hTest); 679 598 680 /* 599 681 * Summary.
Note:
See TracChangeset
for help on using the changeset viewer.