Changeset 45394 in vbox for trunk/src/VBox/Runtime/testcase/tstRTPath.cpp
- Timestamp:
- Apr 7, 2013 7:03:00 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 84819
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/testcase/tstRTPath.cpp
r45391 r45394 39 39 40 40 41 static void testParser (RTTEST hTest)41 static void testParserAndSplitter(RTTEST hTest) 42 42 { 43 RTTestSub(hTest, "RTPathParse");44 45 43 static struct 46 44 { … … 53 51 } const s_aTests[] = 54 52 { 53 { 2, 5, 5, "/bin/", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_DIR_SLASH, RTPATH_STR_F_STYLE_UNIX }, 55 54 { 2, 13, 9, "C:/Config.sys", RTPATH_PROP_VOLUME | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX, RTPATH_STR_F_STYLE_DOS }, 56 55 { 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, RTPATH_STR_F_STYLE_DOS }, … … 65 64 { 1, 1, 1, "/", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE, RTPATH_STR_F_STYLE_UNIX }, 66 65 { 2, 4, 4, "/bin", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME, RTPATH_STR_F_STYLE_UNIX }, 67 { 2, 4, 5, "/bin/", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_DIR_SLASH, RTPATH_STR_F_STYLE_UNIX },66 { 2, 5, 5, "/bin/", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_DIR_SLASH, RTPATH_STR_F_STYLE_UNIX }, 68 67 { 3, 7, 7, "/bin/ls", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME, RTPATH_STR_F_STYLE_UNIX }, 69 68 { 3, 12, 7, "/etc/rc.conf", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX, RTPATH_STR_F_STYLE_UNIX }, … … 72 71 { 3, 6, 7, "/.//bin", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_EXTRA_SLASHES | RTPATH_PROP_DOT_REFS | RTPATH_PROP_FILENAME, RTPATH_STR_F_STYLE_UNIX }, 73 72 { 1, 3, 3, "bin", RTPATH_PROP_RELATIVE | RTPATH_PROP_FILENAME, RTPATH_STR_F_STYLE_UNIX }, 74 { 1, 3, 4, "bin/", RTPATH_PROP_RELATIVE | RTPATH_PROP_DIR_SLASH, RTPATH_STR_F_STYLE_UNIX },75 { 1, 3, 7, "bin////", RTPATH_PROP_RELATIVE | RTPATH_PROP_DIR_SLASH | RTPATH_PROP_EXTRA_SLASHES, RTPATH_STR_F_STYLE_UNIX },73 { 1, 4, 4, "bin/", RTPATH_PROP_RELATIVE | RTPATH_PROP_DIR_SLASH, RTPATH_STR_F_STYLE_UNIX }, 74 { 1, 4, 7, "bin////", RTPATH_PROP_RELATIVE | RTPATH_PROP_DIR_SLASH | RTPATH_PROP_EXTRA_SLASHES, RTPATH_STR_F_STYLE_UNIX }, 76 75 { 3, 10, 10, "bin/../usr", RTPATH_PROP_RELATIVE | RTPATH_PROP_DOTDOT_REFS | RTPATH_PROP_FILENAME, RTPATH_STR_F_STYLE_UNIX }, 77 76 { 4, 11, 11, "/bin/../usr", RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_RELATIVE | RTPATH_PROP_DOTDOT_REFS | RTPATH_PROP_FILENAME, RTPATH_STR_F_STYLE_UNIX }, … … 91 90 { 92 91 RTPATHPARSED Parsed; 92 RTPATHSPLIT Split; 93 93 uint8_t ab[4096]; 94 94 } u; 95 95 96 RTTestSub(hTest, "RTPathParse"); 96 97 for (uint32_t i = 0; i < RT_ELEMENTS(s_aTests); i++) 97 98 { 99 memset(&u, i & 1 ? 0xff : 0, sizeof(u)); 98 100 int rc = RTPathParse(s_aTests[i].pszPath, &u.Parsed, sizeof(u), s_aTests[i].fFlags); 99 101 if ( rc != VINF_SUCCESS … … 114 116 s_aTests[i].offSuffix, u.Parsed.offSuffix, 115 117 s_aTests[i].cchPath, u.Parsed.cchPath); 118 } 119 } 120 121 RTTestSub(hTest, "RTPathSplit"); 122 for (uint32_t i = 0; i < RT_ELEMENTS(s_aTests); i++) 123 { 124 memset(&u, i & 1 ? 0xff : 0, sizeof(u)); 125 int rc = RTPathSplit(s_aTests[i].pszPath, &u.Split, sizeof(u), s_aTests[i].fFlags); 126 if ( rc != VINF_SUCCESS 127 || s_aTests[i].cComps != u.Split.cComps 128 || s_aTests[i].fProps != u.Split.fProps 129 || s_aTests[i].cchPath != u.Split.cchPath) 130 { 131 RTTestFailed(hTest, "i=%d rc=%Rrc %s", i, rc, s_aTests[i].pszPath); 132 RTTestFailureDetails(hTest, 133 " cComps %u, got %u\n" 134 " fProps %#x, got %#x, xor=>%#x\n" 135 " cchPath %u, got %u\n" 136 , 137 s_aTests[i].cComps, u.Split.cComps, 138 s_aTests[i].fProps, u.Split.fProps, s_aTests[i].fProps ^ u.Split.fProps, 139 s_aTests[i].cchPath, u.Split.cchPath); 140 } 141 else 142 { 143 RTTESTI_CHECK_MSG(*u.Split.pszSuffix == '\0' || *u.Split.pszSuffix == '.', ("%s", u.Split.pszSuffix)); 144 for (uint32_t idxComp = RTPATH_PROP_HAS_ROOT_SPEC(u.Split.fProps); idxComp < u.Split.cComps; idxComp++) 145 if ( (s_aTests[i].fFlags & RTPATH_STR_F_STYLE_MASK) == RTPATH_STR_F_STYLE_DOS 146 ? strpbrk(u.Split.apszComps[idxComp], "/\\") 147 : strchr(u.Split.apszComps[idxComp], RTPATH_SLASH) ) 148 RTTestFailed(hTest, "i=%d idxComp=%d '%s'", i, idxComp, u.Split.apszComps[idxComp]); 149 150 PRTPATHSPLIT pSplit = NULL; 151 RTTESTI_CHECK_RC(rc = RTPathSplitA(s_aTests[i].pszPath, &pSplit, s_aTests[i].fFlags), VINF_SUCCESS); 152 if (RT_SUCCESS(rc)) 153 { 154 RTTESTI_CHECK(pSplit); 155 RTTESTI_CHECK(pSplit->cComps == u.Split.cComps); 156 RTTESTI_CHECK(pSplit->fProps == u.Split.fProps); 157 RTTESTI_CHECK(pSplit->cchPath == u.Split.cchPath); 158 RTTESTI_CHECK(pSplit->cbNeeded == u.Split.cbNeeded); 159 RTTESTI_CHECK(!strcmp(pSplit->pszSuffix, u.Split.pszSuffix)); 160 for (uint32_t idxComp = 0; idxComp < u.Split.cComps; idxComp++) 161 RTTESTI_CHECK(!strcmp(pSplit->apszComps[idxComp], pSplit->apszComps[idxComp])); 162 RTPathSplitFree(pSplit); 163 } 116 164 } 117 165 } … … 702 750 } 703 751 704 testParser (hTest);752 testParserAndSplitter(hTest); 705 753 706 754 /*
Note:
See TracChangeset
for help on using the changeset viewer.