Changeset 77689 in vbox for trunk/src/VBox/Runtime/testcase
- Timestamp:
- Mar 13, 2019 7:47:02 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 129330
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/testcase/tstRTFileOpenEx-1.cpp
r77681 r77689 43 43 44 44 45 /** @note FsPerf have a copy of this code. */ 46 static void tstOpenExTest(unsigned uLine, int cbExist, int cbNext, const char *pszFilename, uint64_t fAction, 47 int rcExpect, RTFILEACTION enmActionExpected) 48 { 49 uint64_t const fCreateMode = (0644 << RTFILE_O_CREATE_MODE_SHIFT); 50 RTFILE hFile; 51 int rc; 52 53 /* 54 * File existence and size. 55 */ 56 bool fOkay = false; 57 RTFSOBJINFO ObjInfo; 58 rc = RTPathQueryInfoEx(pszFilename, &ObjInfo, RTFSOBJATTRADD_NOTHING, RTPATH_F_ON_LINK); 59 if (RT_SUCCESS(rc)) 60 fOkay = cbExist == (int64_t)ObjInfo.cbObject; 61 else 62 fOkay = rc == VERR_FILE_NOT_FOUND && cbExist < 0; 63 if (!fOkay) 64 { 65 if (cbExist >= 0) 66 { 67 rc = RTFileOpen(&hFile, pszFilename, RTFILE_O_WRITE | RTFILE_O_CREATE_REPLACE | RTFILE_O_DENY_NONE | fCreateMode); 68 if (RT_SUCCESS(rc)) 69 { 70 while (cbExist > 0) 71 { 72 size_t cbToWrite = strlen(pszFilename); 73 if ((ssize_t)cbToWrite > cbExist) 74 cbToWrite = cbExist; 75 rc = RTFileWrite(hFile, pszFilename, cbToWrite, NULL); 76 if (RT_FAILURE(rc)) 77 { 78 RTTestIFailed("%u: RTFileWrite(%s,%#x) -> %Rrc\n", uLine, pszFilename, cbToWrite, rc); 79 break; 80 } 81 cbExist -= cbToWrite; 82 } 83 84 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 85 } 86 else 87 RTTestIFailed("%u: RTFileDelete(%s) -> %Rrc\n", uLine, pszFilename, rc); 88 89 } 90 else 91 { 92 rc = RTFileDelete(pszFilename); 93 if (rc != VINF_SUCCESS && rc != VERR_FILE_NOT_FOUND) 94 RTTestIFailed("%u: RTFileDelete(%s) -> %Rrc\n", uLine, pszFilename, rc); 95 } 96 } 97 98 /* 99 * The actual test. 100 */ 101 RTFILEACTION enmActuallyTaken = RTFILEACTION_END; 102 hFile = NIL_RTFILE; 103 rc = RTFileOpenEx(pszFilename, fAction | RTFILE_O_READWRITE | RTFILE_O_DENY_NONE | fCreateMode, &hFile, &enmActuallyTaken); 104 if ( rc != rcExpect 105 || enmActuallyTaken != enmActionExpected 106 || (RT_SUCCESS(rc) ? hFile == NIL_RTFILE : hFile != NIL_RTFILE)) 107 RTTestIFailed("%u: RTFileOpenEx(%s, %#llx) -> %Rrc + %d (hFile=%p), expected %Rrc + %d\n", 108 uLine, pszFilename, fAction, rc, enmActuallyTaken, hFile, rcExpect, enmActionExpected); 109 if (RT_SUCCESS(rc)) 110 { 111 if ( enmActionExpected == RTFILEACTION_REPLACED 112 || enmActionExpected == RTFILEACTION_TRUNCATED) 113 { 114 uint8_t abBuf[16]; 115 rc = RTFileRead(hFile, abBuf, 1, NULL); 116 if (rc != VERR_EOF) 117 RTTestIFailed("%u: RTFileRead(%s,,1,) -> %Rrc, expected VERR_EOF\n", uLine, pszFilename, rc); 118 } 119 120 while (cbNext > 0) 121 { 122 size_t cbToWrite = strlen(pszFilename); 123 if ((ssize_t)cbToWrite > cbNext) 124 cbToWrite = cbNext; 125 rc = RTFileWrite(hFile, pszFilename, cbToWrite, NULL); 126 if (RT_FAILURE(rc)) 127 { 128 RTTestIFailed("%u: RTFileWrite(%s,%#x) -> %Rrc\n", uLine, pszFilename, cbToWrite, rc); 129 break; 130 } 131 cbNext -= cbToWrite; 132 } 133 134 rc = RTFileClose(hFile); 135 if (RT_FAILURE(rc)) 136 RTTestIFailed("%u: RTFileClose(%p) -> %Rrc\n", uLine, hFile, rc); 137 } 138 } 139 140 141 /** @note FsPerf have a copy of this code. */ 45 142 void tstFileActionTaken(RTTEST hTest) 46 143 { 47 uint64_t const fMode = (0644 << RTFILE_O_CREATE_MODE_SHIFT);48 RTFILE hFile;49 RTFILEACTION enmTaken;50 int rc;51 uint8_t abBuf[512];52 53 144 RTTestSub(hTest, "Action taken"); 54 RTFileDelete(g_szTestFile);55 145 56 146 /* … … 58 148 */ 59 149 /* RTFILE_O_OPEN - non-existing: */ 60 RTTEST_CHECK(hTest, !RTPathExists(g_szTestFile)); 61 hFile = NIL_RTFILE; 62 enmTaken = RTFILEACTION_END; 63 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_OPEN | RTFILE_O_DENY_NONE, &hFile, &enmTaken); 64 if (rc != VERR_FILE_NOT_FOUND && rc != VERR_OPEN_FAILED) 65 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN(#1) -> %Rrc, expected VERR_FILE_NOT_FOUND or VERR_OPEN_FAILED", rc); 66 if (enmTaken != RTFILEACTION_INVALID) 67 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN(#1) -> enmTaken=%d, expected %d (RTFILEACTION_INVALID)", 68 enmTaken, RTFILEACTION_INVALID); 69 if (hFile != NIL_RTFILE) 70 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN(#1) -> hFile=%p, expected %p (NIL_RTFILE)", hFile, NIL_RTFILE); 150 tstOpenExTest(__LINE__, -1, -1, g_szTestFile, RTFILE_O_OPEN, VERR_FILE_NOT_FOUND, RTFILEACTION_INVALID); 71 151 72 152 /* RTFILE_O_OPEN_CREATE - non-existing: */ 73 RTTEST_CHECK(hTest, !RTPathExists(g_szTestFile)); 74 hFile = NIL_RTFILE; 75 enmTaken = RTFILEACTION_END; 76 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_OPEN_CREATE | RTFILE_O_DENY_NONE | fMode, &hFile, &enmTaken); 77 if (rc != VINF_SUCCESS) 78 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE(#1) -> %Rrc, expected VINF_SUCCESS", rc); 79 if (enmTaken != RTFILEACTION_CREATED) 80 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE(#1) -> enmTaken=%d, expected %d (RTFILEACTION_CREATED)", 81 enmTaken, RTFILEACTION_CREATED); 82 if (hFile == NIL_RTFILE) 83 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE(#1) -> hFile=%p (NIL_RTFILE)", hFile); 84 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 153 tstOpenExTest(__LINE__, -1, -1, g_szTestFile, RTFILE_O_OPEN_CREATE, VINF_SUCCESS, RTFILEACTION_CREATED); 85 154 86 155 /* RTFILE_O_OPEN_CREATE - existing: */ 87 RTTEST_CHECK(hTest, RTPathExists(g_szTestFile)); 88 hFile = NIL_RTFILE; 89 enmTaken = RTFILEACTION_END; 90 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_OPEN_CREATE | RTFILE_O_DENY_NONE | fMode, &hFile, &enmTaken); 91 if (rc != VINF_SUCCESS) 92 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE(#2) -> %Rrc, expected VINF_SUCCESS", rc); 93 if (enmTaken != RTFILEACTION_OPENED) 94 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE(#2) -> enmTaken=%d, expected %d (RTFILEACTION_OPENED)", 95 enmTaken, RTFILEACTION_OPENED); 96 if (hFile == NIL_RTFILE) 97 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE(#2) -> hFile=%p (NIL_RTFILE)", hFile); 98 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 156 tstOpenExTest(__LINE__, 0, 0, g_szTestFile, RTFILE_O_OPEN_CREATE, VINF_SUCCESS, RTFILEACTION_OPENED); 99 157 100 158 /* RTFILE_O_OPEN - existing: */ 101 RTTEST_CHECK(hTest, RTPathExists(g_szTestFile)); 102 hFile = NIL_RTFILE; 103 enmTaken = RTFILEACTION_END; 104 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_OPEN | RTFILE_O_DENY_NONE, &hFile, &enmTaken); 105 if (rc != VINF_SUCCESS) 106 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN(#2) -> %Rrc, expected VINF_SUCCESS", rc); 107 if (enmTaken != RTFILEACTION_OPENED) 108 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN(#2) -> enmTaken=%d, expected %d (RTFILEACTION_OPENED)", 109 enmTaken, RTFILEACTION_OPENED); 110 if (hFile == NIL_RTFILE) 111 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN(#3) -> hFile=%p (NIL_RTFILE)", hFile); 112 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 113 159 tstOpenExTest(__LINE__, 0, 0, g_szTestFile, RTFILE_O_OPEN, VINF_SUCCESS, RTFILEACTION_OPENED); 114 160 115 161 /* … … 117 163 */ 118 164 /* RTFILE_O_OPEN + TRUNCATE - existing zero sized file: */ 119 RTTEST_CHECK(hTest, RTPathExists(g_szTestFile)); 120 hFile = NIL_RTFILE; 121 enmTaken = RTFILEACTION_END; 122 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_OPEN | RTFILE_O_TRUNCATE | RTFILE_O_DENY_NONE, &hFile, &enmTaken); 123 if (rc != VINF_SUCCESS) 124 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN+TRUNCATE(#1) -> %Rrc, expected VINF_SUCCESS", rc); 125 if (enmTaken != RTFILEACTION_TRUNCATED) 126 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN+TRUNCATE(#1) -> enmTaken=%d, expected %d (RTFILEACTION_TRUNCATED)", 127 enmTaken, RTFILEACTION_TRUNCATED); 128 if (hFile == NIL_RTFILE) 129 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN+TRUNCATE(#1) -> hFile=%p (NIL_RTFILE)", hFile); 130 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 165 tstOpenExTest(__LINE__, 0, 0, g_szTestFile, RTFILE_O_OPEN | RTFILE_O_TRUNCATE, VINF_SUCCESS, RTFILEACTION_TRUNCATED); 131 166 132 167 /* RTFILE_O_OPEN_CREATE + TRUNCATE - existing zero sized file: */ 133 RTTEST_CHECK(hTest, RTPathExists(g_szTestFile)); 134 hFile = NIL_RTFILE; 135 enmTaken = RTFILEACTION_END; 136 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_OPEN_CREATE | RTFILE_O_TRUNCATE | RTFILE_O_DENY_NONE, &hFile, &enmTaken); 137 if (rc != VINF_SUCCESS) 138 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE+TRUNCATE(#1) -> %Rrc, expected VINF_SUCCESS", rc); 139 if (enmTaken != RTFILEACTION_TRUNCATED) 140 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE+TRUNCATE(#1) -> enmTaken=%d, expected %d (RTFILEACTION_TRUNCATED)", 141 enmTaken, RTFILEACTION_TRUNCATED); 142 if (hFile == NIL_RTFILE) 143 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE+TRUNCATE(#1) -> hFile=%p (NIL_RTFILE)", hFile); 144 RTTESTI_CHECK_RC(RTFileRead(hFile, abBuf, 1, NULL), VERR_EOF); /* check that it was truncated */ 145 RTTESTI_CHECK_RC(RTFileWrite(hFile, RT_STR_TUPLE("test"), NULL), VINF_SUCCESS); /* for the trunction in the next test */ 146 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 168 tstOpenExTest(__LINE__, 0, 10, g_szTestFile, RTFILE_O_OPEN_CREATE | RTFILE_O_TRUNCATE, VINF_SUCCESS, RTFILEACTION_TRUNCATED); 147 169 148 170 /* RTFILE_O_OPEN_CREATE + TRUNCATE - existing non-zero sized file: */ 149 RTTEST_CHECK(hTest, RTPathExists(g_szTestFile)); 150 hFile = NIL_RTFILE; 151 enmTaken = RTFILEACTION_END; 152 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_OPEN_CREATE | RTFILE_O_TRUNCATE | RTFILE_O_DENY_NONE, &hFile, &enmTaken); 153 if (rc != VINF_SUCCESS) 154 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE+TRUNCATE(#2) -> %Rrc, expected VINF_SUCCESS", rc); 155 if (enmTaken != RTFILEACTION_TRUNCATED) 156 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE+TRUNCATE(#2) -> enmTaken=%d, expected %d (RTFILEACTION_TRUNCATED)", 157 enmTaken, RTFILEACTION_TRUNCATED); 158 if (hFile == NIL_RTFILE) 159 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE+TRUNCATE(#2) -> hFile=%p (NIL_RTFILE)", hFile); 160 RTTESTI_CHECK_RC(RTFileRead(hFile, abBuf, 1, NULL), VERR_EOF); /* check that it was truncated */ 161 RTTESTI_CHECK_RC(RTFileWrite(hFile, RT_STR_TUPLE("test"), NULL), VINF_SUCCESS); /* for the trunction in the next test */ 162 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 171 tstOpenExTest(__LINE__, 10, 10, g_szTestFile, RTFILE_O_OPEN_CREATE | RTFILE_O_TRUNCATE, VINF_SUCCESS, RTFILEACTION_TRUNCATED); 172 173 /* RTFILE_O_OPEN + TRUNCATE - existing non-zero sized file: */ 174 tstOpenExTest(__LINE__, 10, -1, g_szTestFile, RTFILE_O_OPEN | RTFILE_O_TRUNCATE, VINF_SUCCESS, RTFILEACTION_TRUNCATED); 175 176 /* RTFILE_O_OPEN + TRUNCATE - non-existing file: */ 177 tstOpenExTest(__LINE__, -1, -1, g_szTestFile, RTFILE_O_OPEN | RTFILE_O_TRUNCATE, VERR_FILE_NOT_FOUND, RTFILEACTION_INVALID); 163 178 164 179 /* RTFILE_O_OPEN_CREATE + TRUNCATE - non-existing file: */ 165 RTTEST_CHECK_RC(hTest, RTFileDelete(g_szTestFile), VINF_SUCCESS); 166 RTTEST_CHECK(hTest, !RTPathExists(g_szTestFile)); 167 hFile = NIL_RTFILE; 168 enmTaken = RTFILEACTION_END; 169 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_OPEN_CREATE | RTFILE_O_TRUNCATE | RTFILE_O_DENY_NONE, &hFile, &enmTaken); 170 if (rc != VINF_SUCCESS) 171 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE+TRUNCATE(#2) -> %Rrc, expected VINF_SUCCESS", rc); 172 if (enmTaken != RTFILEACTION_CREATED) 173 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE+TRUNCATE(#2) -> enmTaken=%d, expected %d (RTFILEACTION_CREATED)", 174 enmTaken, RTFILEACTION_CREATED); 175 if (hFile == NIL_RTFILE) 176 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN_CREATE+TRUNCATE(#2) -> hFile=%p (NIL_RTFILE)", hFile); 177 RTTESTI_CHECK_RC(RTFileWrite(hFile, RT_STR_TUPLE("test"), NULL), VINF_SUCCESS); /* for the trunction in the next test */ 178 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 179 180 /* RTFILE_O_OPEN + TRUNCATE - existing non-zero sized file: */ 181 RTTEST_CHECK(hTest, RTPathExists(g_szTestFile)); 182 hFile = NIL_RTFILE; 183 enmTaken = RTFILEACTION_END; 184 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_OPEN | RTFILE_O_TRUNCATE | RTFILE_O_DENY_NONE, &hFile, &enmTaken); 185 if (rc != VINF_SUCCESS) 186 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN+TRUNCATE(#2) -> %Rrc, expected VINF_SUCCESS", rc); 187 if (enmTaken != RTFILEACTION_TRUNCATED) 188 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN+TRUNCATE(#2) -> enmTaken=%d, expected %d (RTFILEACTION_TRUNCATED)", 189 enmTaken, RTFILEACTION_TRUNCATED); 190 if (hFile == NIL_RTFILE) 191 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_OPEN+TRUNCATE(#2) -> hFile=%p (NIL_RTFILE)", hFile); 192 RTTESTI_CHECK_RC(RTFileRead(hFile, abBuf, 1, NULL), VERR_EOF); /* check that it was truncated */ 193 RTTESTI_CHECK_RC(RTFileWrite(hFile, RT_STR_TUPLE("test"), NULL), VINF_SUCCESS); /* for the replacement in the next test */ 194 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 195 180 tstOpenExTest(__LINE__, -1, 0, g_szTestFile, RTFILE_O_OPEN_CREATE | RTFILE_O_TRUNCATE, VINF_SUCCESS, RTFILEACTION_CREATED); 196 181 197 182 /* … … 199 184 */ 200 185 /* RTFILE_O_CREATE_REPLACE - existing: */ 201 RTTEST_CHECK(hTest, RTPathExists(g_szTestFile)); 202 hFile = NIL_RTFILE; 203 enmTaken = RTFILEACTION_END; 204 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_CREATE_REPLACE | RTFILE_O_DENY_NONE | fMode, &hFile, &enmTaken); 205 if (rc != VINF_SUCCESS) 206 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE_REPLACE(#1) -> %Rrc, expected VINF_SUCCESS", rc); 207 if (enmTaken != RTFILEACTION_REPLACED) 208 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE_REPLACE(#1) -> enmTaken=%d, expected %d (RTFILEACTION_REPLACED)", 209 enmTaken, RTFILEACTION_REPLACED); 210 if (hFile == NIL_RTFILE) 211 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE_REPLACE(#1) -> hFile=%p (NIL_RTFILE)", hFile); 212 RTTESTI_CHECK_RC(RTFileRead(hFile, abBuf, 1, NULL), VERR_EOF); /* check that it was replaced */ 213 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 186 tstOpenExTest(__LINE__, 0, -1, g_szTestFile, RTFILE_O_CREATE_REPLACE, VINF_SUCCESS, RTFILEACTION_REPLACED); 214 187 215 188 /* RTFILE_O_CREATE_REPLACE - non-existing: */ 216 RTTESTI_CHECK_RC(RTFileDelete(g_szTestFile), VINF_SUCCESS); 217 RTTEST_CHECK(hTest, !RTPathExists(g_szTestFile)); 218 hFile = NIL_RTFILE; 219 enmTaken = RTFILEACTION_END; 220 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_CREATE_REPLACE | RTFILE_O_DENY_NONE | fMode, &hFile, &enmTaken); 221 if (rc != VINF_SUCCESS) 222 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE_REPLACE(#2) -> %Rrc, expected VINF_SUCCESS", rc); 223 if (enmTaken != RTFILEACTION_CREATED) 224 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE_REPLACE(#2) -> enmTaken=%d, expected %d (RTFILEACTION_CREATED)", 225 enmTaken, RTFILEACTION_CREATED); 226 if (hFile == NIL_RTFILE) 227 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE_REPLACE(#2) -> hFile=%p (NIL_RTFILE)", hFile); 228 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 189 tstOpenExTest(__LINE__, -1, 0, g_szTestFile, RTFILE_O_CREATE_REPLACE, VINF_SUCCESS, RTFILEACTION_CREATED); 229 190 230 191 /* RTFILE_O_CREATE - existing: */ 231 RTTEST_CHECK(hTest, RTPathExists(g_szTestFile)); 232 hFile = NIL_RTFILE; 233 enmTaken = RTFILEACTION_END; 234 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_CREATE | RTFILE_O_DENY_NONE | fMode, &hFile, &enmTaken); 235 if (rc != VERR_ALREADY_EXISTS && rc != VERR_OPEN_FAILED) 236 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE(#1) -> %Rrc, expected VERR_ALREADY_EXISTS or VERR_OPEN_FAILED", rc); 237 if (enmTaken != RTFILEACTION_ALREADY_EXISTS) 238 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE(#1) -> enmTaken=%d, expected %d (RTFILEACTION_ALREADY_EXISTS)", 239 enmTaken, RTFILEACTION_ALREADY_EXISTS); 240 if (hFile != NIL_RTFILE) 241 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE(#1) -> hFile=%p, expected %p (NIL_RTFILE)", hFile, NIL_RTFILE); 192 tstOpenExTest(__LINE__, 0, -1, g_szTestFile, RTFILE_O_CREATE, VERR_ALREADY_EXISTS, RTFILEACTION_ALREADY_EXISTS); 242 193 243 194 /* RTFILE_O_CREATE - non-existing: */ 244 RTTESTI_CHECK_RC(RTFileDelete(g_szTestFile), VINF_SUCCESS); 245 RTTEST_CHECK(hTest, !RTPathExists(g_szTestFile)); 246 hFile = NIL_RTFILE; 247 enmTaken = RTFILEACTION_END; 248 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_CREATE | RTFILE_O_DENY_NONE | fMode, &hFile, &enmTaken); 249 if (rc != VINF_SUCCESS) 250 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE(#2) -> %Rrc, expected VINF_SUCCESS", rc); 251 if (enmTaken != RTFILEACTION_CREATED) 252 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE(#2) -> enmTaken=%d, expected %d (RTFILEACTION_CREATED)", 253 enmTaken, RTFILEACTION_CREATED); 254 if (hFile == NIL_RTFILE) 255 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE(#2) -> hFile=%p (NIL_RTFILE)", hFile); 256 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 195 tstOpenExTest(__LINE__, -1, -1, g_szTestFile, RTFILE_O_CREATE, VINF_SUCCESS, RTFILEACTION_CREATED); 257 196 258 197 /* … … 260 199 */ 261 200 /* RTFILE_O_CREATE+TRUNCATE - non-existing: */ 262 RTTESTI_CHECK_RC(RTFileDelete(g_szTestFile), VINF_SUCCESS); 263 RTTEST_CHECK(hTest, !RTPathExists(g_szTestFile)); 264 hFile = NIL_RTFILE; 265 enmTaken = RTFILEACTION_END; 266 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_CREATE | RTFILE_O_TRUNCATE | RTFILE_O_DENY_NONE | fMode, &hFile, &enmTaken); 267 if (rc != VINF_SUCCESS) 268 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE+TRUNCATE(#1) -> %Rrc, expected VINF_SUCCESS", rc); 269 if (enmTaken != RTFILEACTION_CREATED) 270 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE+TRUNCATE(#1) -> enmTaken=%d, expected %d (RTFILEACTION_CREATED)", 271 enmTaken, RTFILEACTION_CREATED); 272 if (hFile == NIL_RTFILE) 273 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE+TRUNCATE(#1) -> hFile=%p (NIL_RTFILE)", hFile); 274 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 201 tstOpenExTest(__LINE__, -1, 10, g_szTestFile, RTFILE_O_CREATE | RTFILE_O_TRUNCATE, VINF_SUCCESS, RTFILEACTION_CREATED); 275 202 276 203 /* RTFILE_O_CREATE+TRUNCATE - existing: */ 277 RTTEST_CHECK(hTest, RTPathExists(g_szTestFile)); 278 hFile = NIL_RTFILE; 279 enmTaken = RTFILEACTION_END; 280 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_CREATE | RTFILE_O_TRUNCATE | RTFILE_O_DENY_NONE | fMode, &hFile, &enmTaken); 281 if (rc != VERR_ALREADY_EXISTS && rc != VERR_OPEN_FAILED) 282 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE+TRUNCATE(#2) -> %Rrc, expected VERR_ALREADY_EXISTS or VERR_OPEN_FAILED", rc); 283 if (enmTaken != RTFILEACTION_ALREADY_EXISTS) 284 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE+TRUNCATE(#2) -> enmTaken=%d, expected %d (RTFILEACTION_ALREADY_EXISTS)", 285 enmTaken, RTFILEACTION_ALREADY_EXISTS); 286 if (hFile != NIL_RTFILE) 287 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE+TRUNCATE(#2) -> hFile=%p, expected %p (NIL_RTFILE)", hFile, NIL_RTFILE); 204 tstOpenExTest(__LINE__, 10, 10, g_szTestFile, RTFILE_O_CREATE | RTFILE_O_TRUNCATE, VERR_ALREADY_EXISTS, RTFILEACTION_ALREADY_EXISTS); 288 205 289 206 /* RTFILE_O_CREATE_REPLACE+TRUNCATE - existing: */ 290 RTTEST_CHECK(hTest, RTPathExists(g_szTestFile)); 291 hFile = NIL_RTFILE; 292 enmTaken = RTFILEACTION_END; 293 rc = RTFileOpenEx(g_szTestFile, RTFILE_O_READWRITE | RTFILE_O_CREATE_REPLACE | RTFILE_O_TRUNCATE | RTFILE_O_DENY_NONE | fMode, &hFile, &enmTaken); 294 if (rc != VINF_SUCCESS) 295 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE_REPLACE+TRUNCATE(#1) -> %Rrc, expected VINF_SUCCESS", rc); 296 if (enmTaken != RTFILEACTION_REPLACED) 297 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE_REPLACE+TRUNCATE(#1) -> enmTaken=%d, expected %d (RTFILEACTION_REPLACED)", 298 enmTaken, RTFILEACTION_REPLACED); 299 if (hFile == NIL_RTFILE) 300 RTTestFailed(hTest, "RTFileOpenEx+RTFILE_O_CREATE_REPLACE+TRUNCATE(#1) -> hFile=%p (NIL_RTFILE)", hFile); 301 RTTESTI_CHECK_RC(RTFileClose(hFile), VINF_SUCCESS); 207 tstOpenExTest(__LINE__, 10, -1, g_szTestFile, RTFILE_O_CREATE_REPLACE | RTFILE_O_TRUNCATE, VINF_SUCCESS, RTFILEACTION_REPLACED); 208 209 /* RTFILE_O_CREATE_REPLACE+TRUNCATE - non-existing: */ 210 tstOpenExTest(__LINE__, -1, -1, g_szTestFile, RTFILE_O_CREATE_REPLACE | RTFILE_O_TRUNCATE, VINF_SUCCESS, RTFILEACTION_CREATED); 302 211 303 212 RTTESTI_CHECK_RC(RTFileDelete(g_szTestFile), VINF_SUCCESS);
Note:
See TracChangeset
for help on using the changeset viewer.