儲存庫 vbox 的更動 103437
- 時間撮記:
- 2024-2-19 下午01:30:09 (13 月 以前)
- svn:sync-xref-src-repo-rev:
- 161767
- 檔案:
-
- 修改 1 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/HostServices/SharedFolders/testcase/tstShflCase.cpp
r103434 r103437 147 147 { 148 148 RT_NOREF4(hDir, pcbDirEntry, enmAdditionalAttribs, fFlags); 149 const char *pszSrcName; 149 150 switch (iDirList) 150 151 { … … 152 153 if (iDirFile == RT_ELEMENTS(g_apszDirsC)) 153 154 return VERR_NO_MORE_FILES; 154 pDirEntry->cbName = (uint16_t)strlen(g_apszDirsC[iDirFile]); 155 strcpy(pDirEntry->szName, g_apszDirsC[iDirFile++]); 155 pszSrcName = g_apszDirsC[iDirFile]; 156 156 break; 157 157 case 2: 158 158 if (iDirFile == RT_ELEMENTS(g_apszTestdirEntries)) 159 159 return VERR_NO_MORE_FILES; 160 pDirEntry->cbName = (uint16_t)strlen(g_apszTestdirEntries[iDirFile]); 161 strcpy(pDirEntry->szName, g_apszTestdirEntries[iDirFile++]); 160 pszSrcName = g_apszTestdirEntries[iDirFile]; 162 161 break; 163 162 case 3: 164 163 if (iDirFile == RT_ELEMENTS(g_apszSUBDIREntries)) 165 164 return VERR_NO_MORE_FILES; 166 pDirEntry->cbName = (uint16_t)strlen(g_apszSUBDIREntries[iDirFile]); 167 strcpy(pDirEntry->szName, g_apszSUBDIREntries[iDirFile++]); 168 break; 169 } 165 pszSrcName = g_apszSUBDIREntries[iDirFile]; 166 break; 167 default: 168 AssertFailed(); 169 return VERR_NO_MORE_FILES; 170 } 171 172 size_t const cbDirEntry = *pcbDirEntry; 173 size_t const cbNameAvail = cbDirEntry - RT_UOFFSETOF(RTDIRENTRYEX, szName); 174 size_t const cchSrcName = strlen(pszSrcName); 175 *pcbDirEntry = RT_UOFFSETOF(RTDIRENTRYEX, szName) + cchSrcName + 1; 176 pDirEntry->cbName = (uint16_t)cchSrcName; 177 AssertReturn(cchSrcName < cbNameAvail, VERR_BUFFER_OVERFLOW); 178 179 memcpy(pDirEntry->szName, pszSrcName, cchSrcName + 1); 180 iDirFile++; 170 181 return VINF_SUCCESS; 171 182 } … … 255 266 } 256 267 257 Log2(("vbsfCorrectCasing: found %s\n", &pDirEntry->szName[0]));268 Log2(("vbsfCorrectCasing: found '%s'\n", &pDirEntry->szName[0])); 258 269 if ( pDirEntry->cbName == cchComponent 259 270 && !RTStrICmp(pszStartComponent, &pDirEntry->szName[0])) … … 417 428 int main() 418 429 { 419 RTR3InitExeNoArguments(0); 430 RTTEST hTest; 431 RTEXITCODE rcExit = RTTestInitAndCreate("tstShflCase", &hTest); 432 if (rcExit != RTEXITCODE_SUCCESS) 433 return rcExit; 434 RTTestBanner(hTest); 435 420 436 RTLogFlush(NULL); 421 437 RTLogDestinations(NULL, "stdout"); … … 423 439 RTLogFlags(NULL, "unbuffered"); 424 440 425 char szTest[128]; 426 #define SET_SZ_TEST(a_szStr) do { \ 427 AssertCompile(sizeof(a_szStr) < sizeof(szTest)); \ 428 memcpy(szTest, a_szStr, sizeof(a_szStr)); \ 429 } while (0) 430 431 SET_SZ_TEST("c:\\test Dir\\z.bAt"); 432 testCase(szTest); 433 SET_SZ_TEST("c:\\test dir\\z.bAt"); 434 testCase(szTest); 435 SET_SZ_TEST("c:\\test dir\\SUBDIR\\z.bAt"); 436 testCase(szTest); 437 SET_SZ_TEST("c:\\test dir\\SUBDiR\\atestje.bat"); 438 testCase(szTest); 439 SET_SZ_TEST("c:\\TEST dir\\subDiR\\aTestje.baT"); 440 testCase(szTest); 441 SET_SZ_TEST("c:\\TEST dir\\subDiR\\*"); 442 testCase(szTest, true); 443 SET_SZ_TEST("c:\\TEST dir\\subDiR\\"); 444 testCase(szTest, true); 445 SET_SZ_TEST("c:\\test dir\\SUBDIR\\"); 446 testCase(szTest); 447 SET_SZ_TEST("c:\\test dir\\invalid\\SUBDIR\\test.bat"); 448 testCase(szTest); 449 return 0; 450 } 451 441 static const struct 442 { 443 int rcExpect; 444 bool fWildcard; 445 const char *pszPath; 446 size_t cchPath; 447 } s_aTests[] = 448 { 449 { VINF_SUCCESS, false, RT_STR_TUPLE("c:\\test Dir\\z.bAt") }, 450 { VINF_SUCCESS, false, RT_STR_TUPLE("c:\\test dir\\z.bAt") }, 451 { VINF_SUCCESS, false, RT_STR_TUPLE("c:\\test dir\\SUBDIR\\z.bAt") }, 452 { VINF_SUCCESS, false, RT_STR_TUPLE("c:\\test dir\\SUBDiR\\atestje.bat") }, 453 { VINF_SUCCESS, false, RT_STR_TUPLE("c:\\TEST dir\\subDiR\\aTestje.baT") }, 454 { VINF_SUCCESS, true, RT_STR_TUPLE("c:\\TEST dir\\subDiR\\*") }, 455 { VINF_SUCCESS, true, RT_STR_TUPLE("c:\\TEST dir\\subDiR\\") }, 456 { VINF_SUCCESS, false, RT_STR_TUPLE("c:\\test dir\\SUBDIR\\") }, 457 { VERR_NO_MORE_FILES, false, RT_STR_TUPLE("c:\\test dir\\invalid\\SUBDIR\\test.bat") }, 458 }; 459 for (size_t i = 0; i < RT_ELEMENTS(s_aTests); i++) 460 { 461 char szTest[128]; 462 AssertContinueStmt(s_aTests[i].cchPath < sizeof(szTest), RTTestFailed(hTest, "too long: #%zu", i)); 463 memcpy(szTest, s_aTests[i].pszPath, s_aTests[i].cchPath + 1); 464 int rc = testCase(szTest, s_aTests[i].fWildcard); 465 if (rc != s_aTests[i].rcExpect) 466 RTTestFailed(hTest, "testCase returned %Rrc, expected %Rrc (path: %s)", 467 rc, s_aTests[i].rcExpect, s_aTests[i].pszPath); 468 } 469 return RTTestSummaryAndDestroy(hTest); 470 } 471
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器