MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / testQueryParams

Method testQueryParams

Tests/Libraries/Http/HttpURLParserTest.cpp:291–362  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

289}
290
291void SC::HttpURLParserTest::testQueryParams()
292{
293 HttpURLParser urlParser;
294 StringSpan value;
295
296 // Multiple query parameters
297 SC_TEST_EXPECT(urlParser.parse("http://example.com/path?key1=value1&key2=value2&key3=value3"));
298 SC_TEST_EXPECT(urlParser.search == "?key1=value1&key2=value2&key3=value3");
299 SC_TEST_EXPECT(urlParser.getQueryValue("key2", value));
300 SC_TEST_EXPECT(value == "value2");
301 SC_TEST_EXPECT(HttpURLParser::getQueryValue("key1=value1&key2=value2", "key1", value));
302 SC_TEST_EXPECT(value == "value1");
303
304 // Query parameter with empty value
305 SC_TEST_EXPECT(urlParser.parse("http://example.com/path?empty=&key=value"));
306 SC_TEST_EXPECT(urlParser.search == "?empty=&key=value");
307 SC_TEST_EXPECT(urlParser.getQueryValue("empty", value));
308 SC_TEST_EXPECT(value.isEmpty());
309
310 // Query parameter with no value
311 SC_TEST_EXPECT(urlParser.parse("http://example.com/path?flag&key=value"));
312 SC_TEST_EXPECT(urlParser.search == "?flag&key=value");
313 SC_TEST_EXPECT(urlParser.getQueryValue("flag", value));
314 SC_TEST_EXPECT(value.isEmpty());
315
316 // Only query parameters, no path
317 SC_TEST_EXPECT(urlParser.parse("http://example.com?query=value"));
318 SC_TEST_EXPECT(urlParser.pathname == "/");
319 SC_TEST_EXPECT(urlParser.search == "?query=value");
320
321 // Query parameters with special characters
322 SC_TEST_EXPECT(urlParser.parse("http://example.com/path?q=hello%20world&special=%2B%2D"));
323 SC_TEST_EXPECT(urlParser.search == "?q=hello%20world&special=%2B%2D");
324 SC_TEST_EXPECT(urlParser.getQueryValue("q", value));
325 SC_TEST_EXPECT(value == "hello%20world");
326 SC_TEST_EXPECT(urlParser.getQueryValue("special", value));
327 SC_TEST_EXPECT(value == "%2B%2D");
328
329 // First repeated key wins
330 SC_TEST_EXPECT(urlParser.parse("http://example.com/path?name=first&name=second"));
331 SC_TEST_EXPECT(urlParser.getQueryValue("name", value));
332 SC_TEST_EXPECT(value == "first");
333
334 // Missing and empty search
335 SC_TEST_EXPECT(not urlParser.getQueryValue("missing", value));
336 SC_TEST_EXPECT(value.isEmpty());
337 SC_TEST_EXPECT(not HttpURLParser::getQueryValue("", "missing", value));
338 SC_TEST_EXPECT(not HttpURLParser::getQueryValue("?", "missing", value));
339
340 // UTF8 values stay raw and zero-copy.
341 SC_TEST_EXPECT(urlParser.parse("http://example.com/path?q=tëst&vâlue=ok"_u8));
342 SC_TEST_EXPECT(urlParser.getQueryValue("q", value));
343 SC_TEST_EXPECT(value == "tëst"_u8);
344 SC_TEST_EXPECT(urlParser.getQueryValue("vâlue"_u8, value));
345 SC_TEST_EXPECT(value == "ok");
346
347 HttpURLQueryIterator iterator("?flag&empty=&key=value");
348 HttpURLQueryItem item;

Callers

nothing calls this directly

Calls 4

getQueryValueMethod · 0.80
parseMethod · 0.45
isEmptyMethod · 0.45
nextMethod · 0.45

Tested by

no test coverage detected