Changeset 19946 in vbox for trunk/src/VBox/Runtime
- Timestamp:
- May 23, 2009 10:07:30 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/testcase/tstBase64.cpp
r16774 r19946 33 33 *******************************************************************************/ 34 34 #include <iprt/base64.h> 35 35 36 #include <iprt/err.h> 36 37 #include <iprt/initterm.h> 38 #include <iprt/stdarg.h> 37 39 #include <iprt/stream.h> 38 40 #include <iprt/string.h> 39 #include <iprt/ stdarg.h>41 #include <iprt/test.h> 40 42 41 43 … … 53 55 * Global Variables * 54 56 *******************************************************************************/ 55 static int g_cErrors = 0; 56 57 58 static void tstBase64(const void *pvData, size_t cbData,const char *pszEnc, size_t cchEnc,59 int fTextData, int fNormalEnc , const char *pszTestFmt, ...)57 58 59 static void tstBase64(const void *pvData, size_t cbData, 60 const char *pszEnc, size_t cchEnc, 61 int fTextData, int fNormalEnc) 60 62 { 61 63 char szOut[0x10000]; 62 64 size_t cchOut = 0; 63 65 64 /* Format the test name first. */65 va_list va;66 va_start(va, pszTestFmt);67 char szTest[32];68 RTStrPrintfV(szTest, sizeof(szTest), pszTestFmt, va);69 va_end(va);70 71 66 /* 72 67 * Test decoding. … … 74 69 int rc = RTBase64Decode(pszEnc, szOut, cbData, &cchOut, NULL); 75 70 if (RT_FAILURE(rc)) 76 { 77 RTPrintf("tstBase64: FAILURE - %s: RTBase64Decode -> %Rrc\n", szTest, rc); 78 g_cErrors++; 79 } 71 RTTestIFailed("RTBase64Decode -> %Rrc", rc); 80 72 else if (cchOut != cbData) 81 { 82 RTPrintf("tstBase64: FAILURE - %s: RTBase64Decode returned %zu bytes, expected %zu.\n", 83 szTest, cchOut, cbData); 84 g_cErrors++; 85 } 73 RTTestIFailed("RTBase64Decode returned %zu bytes, expected %zu.", 74 cchOut, cbData); 86 75 else if (memcmp(szOut, pvData, cchOut)) 87 76 { 88 77 if (fTextData) 89 RT Printf("tstBase64: FAILURE - %s:RTBase64Decode returned:\n%.*s\nexpected:\n%s\n",90 szTest,(int)cchOut, szOut, pvData);78 RTTestIFailed("RTBase64Decode returned:\n%.*s\nexpected:\n%s\n", 79 (int)cchOut, szOut, pvData); 91 80 else 92 RTPrintf("tstBase64: FAILURE - %s: RTBase64Decode return mismatching output\n", szTest); 93 g_cErrors++; 81 RTTestIFailed("RTBase64Decode return mismatching output\n"); 94 82 } 95 83 96 84 cchOut = RTBase64DecodedSize(pszEnc, NULL); 97 85 if (cchOut != cbData) 98 { 99 RTPrintf("tstBase64: FAILURE - %s: RTBase64DecodedSize returned %zu bytes, expected %zu.\n", 100 szTest, cchOut, cbData); 101 g_cErrors++; 102 } 86 RTTestIFailed("RTBase64DecodedSize returned %zu bytes, expected %zu.\n", 87 cchOut, cbData); 103 88 104 89 /* … … 107 92 rc = RTBase64Encode(pvData, cbData, szOut, cchEnc + 1, &cchOut); 108 93 if (RT_FAILURE(rc)) 109 { 110 RTPrintf("tstBase64: FAILURE - %s: RTBase64Encode -> %Rrc\n", szTest, rc); 111 g_cErrors++; 112 } 94 RTTestIFailed("RTBase64Encode -> %Rrc\n", rc); 113 95 else if (fNormalEnc && cchOut != cchEnc) 114 { 115 RTPrintf("tstBase64: FAILURE - %s: RTBase64Encode returned %zu bytes, expected %zu.\n", 116 szTest, cchOut, cchEnc); 117 g_cErrors++; 118 } 96 RTTestIFailed("RTBase64Encode returned %zu bytes, expected %zu.\n", 97 cchOut, cchEnc); 119 98 else if (fNormalEnc && memcmp(szOut, pszEnc, cchOut + 1)) 120 { 121 RTPrintf("tstBase64: FAILURE - %s: RTBase64Encode returned:\n%*s\nexpected:\n%s\n", 122 szTest, szOut, pszEnc); 123 g_cErrors++; 124 } 99 RTTestIFailed("RTBase64Encode returned:\n%*s\nexpected:\n%s\n", 100 szOut, pszEnc); 125 101 126 102 size_t cchOut2 = RTBase64EncodedLength(cbData); 127 103 if (cchOut != cchOut2) 128 { 129 RTPrintf("tstBase64: FAILURE - %s: RTBase64EncodedLength returned %zu bytes, expected %zu.\n", 130 szTest, cchOut2, cchOut); 131 g_cErrors++; 132 } 104 RTTestIFailed("RTBase64EncodedLength returned %zu bytes, expected %zu.\n", 105 cchOut2, cchOut); 133 106 134 107 /** @todo negative testing. */ … … 138 111 int main() 139 112 { 140 RTR3Init(); 141 113 int rc = RTR3Init(); 114 if (RT_FAILURE(rc)) 115 return 1; 116 RTTEST hTest; 117 rc = RTTestCreate("tstRTBase64", &hTest); 118 if (RT_FAILURE(rc)) 119 return 1; 120 RTTestBanner(hTest); 142 121 143 122 /* 144 123 * Series of simple tests. 145 124 */ 146 RTPrintf("tstBase64: TESTING - Test 1\n");147 125 static const struct 148 126 { … … 173 151 174 152 for (unsigned i = 0; i < RT_ELEMENTS(g_aTests); i++) 153 { 154 RTTestSubF(hTest, "Test 1-%u", i); 175 155 tstBase64(g_aTests[i].pszText, g_aTests[i].cchText, 176 156 g_aTests[i].pszEnc, g_aTests[i].cchEnc, 177 1 /* fTextData */, 1 /* fNormalEnc */, "Test 1-#u", i); 157 1 /* fTextData */, 1 /* fNormalEnc */); 158 } 178 159 179 160 /* 180 161 * Try with some more junk in the encoding and different line length. 181 162 */ 182 RT Printf("tstBase64: TESTING - Test 2\n");163 RTTestSub(hTest, "Test 2"); 183 164 static const char s_szText2[] = 184 165 "Man is distinguished, not only by his reason, but by this singular passion " … … 196 177 tstBase64(s_szText2, sizeof(s_szText2) - 1, 197 178 s_szEnc2, sizeof(s_szEnc2) - 1, 198 1 /* fTextData */, 0 /* fNormalEnc */ , "Test 2");179 1 /* fTextData */, 0 /* fNormalEnc */); 199 180 200 181 /* 201 182 * Finally, a more extensive test. 202 183 */ 203 RT Printf("tstBase64: TESTING - Test 3\n");184 RTTestSub(hTest, "Test 3"); 204 185 static uint8_t s_abData3[12*256]; 205 186 for (unsigned i = 0; i < 256; i++) … … 288 269 tstBase64(s_abData3, sizeof(s_abData3), 289 270 s_szEnc3, sizeof(s_szEnc3) - 1, 290 0 /* fTextData */, 0 /* fNormalEnc */ , "Test 3");271 0 /* fTextData */, 0 /* fNormalEnc */); 291 272 292 273 /* 293 274 * Summary. 294 275 */ 295 if (!g_cErrors) 296 RTPrintf("tstBase64: SUCCESS\n"); 297 else 298 RTPrintf("tstBase64: FAILURE - %d errors\n", g_cErrors); 299 return !!g_cErrors; 276 return RTTestSummaryAndDestroy(hTest); 300 277 } 301 278
Note:
See TracChangeset
for help on using the changeset viewer.