| 1242 | |
| 1243 | namespace { |
| 1244 | bool testToStringCharsRequiredHelper(const wchar_t * text) { |
| 1245 | // Parse |
| 1246 | UriParserStateW state; |
| 1247 | UriUriW uri; |
| 1248 | state.uri = &uri; |
| 1249 | int res = uriParseUriW(&state, text); |
| 1250 | if (res != 0) { |
| 1251 | uriFreeUriMembersW(&uri); |
| 1252 | return false; |
| 1253 | } |
| 1254 | |
| 1255 | // Required space? |
| 1256 | int charsRequired; |
| 1257 | if (uriToStringCharsRequiredW(&uri, &charsRequired) != 0) { |
| 1258 | uriFreeUriMembersW(&uri); |
| 1259 | return false; |
| 1260 | } |
| 1261 | |
| 1262 | EXPECT_EQ(charsRequired, wcslen(text)); |
| 1263 | |
| 1264 | // Minimum |
| 1265 | wchar_t * buffer = new wchar_t[charsRequired + 1]; |
| 1266 | if (uriToStringW(buffer, &uri, charsRequired + 1, NULL) != 0) { |
| 1267 | uriFreeUriMembersW(&uri); |
| 1268 | delete [] buffer; |
| 1269 | return false; |
| 1270 | } |
| 1271 | |
| 1272 | // One less than minimum |
| 1273 | if (uriToStringW(buffer, &uri, charsRequired, NULL) == 0) { |
| 1274 | uriFreeUriMembersW(&uri); |
| 1275 | delete [] buffer; |
| 1276 | return false; |
| 1277 | } |
| 1278 | |
| 1279 | uriFreeUriMembersW(&uri); |
| 1280 | delete [] buffer; |
| 1281 | return true; |
| 1282 | } |
| 1283 | } // namespace |
| 1284 | |
| 1285 | TEST(UriSuite, TestToStringCharsRequired) { |