summaryrefslogtreecommitdiff
path: root/test/TestUriQueryParser.cxx
blob: 9455f0664b6704b0369a05ed81c6ea3980c63c12 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
 * Unit tests for src/util/
 */

#include "util/UriQueryParser.hxx"
#include "util/StringView.hxx"

#include <gtest/gtest.h>

static bool
operator==(StringView a, StringView b)
{
	if (a.IsNull() || b.IsNull())
		return a.IsNull() == b.IsNull();

	return a.Equals(b);
}

TEST(UriQueryParser, UriFindRawQueryParameter)
{
	const char *q = "foo=1&bar=2&quoted=%20%00+%%&empty1&empty2=";
	EXPECT_EQ(UriFindRawQueryParameter(q, "doesntexist"),
		  (const char *)nullptr);
	EXPECT_EQ(UriFindRawQueryParameter(q, "foo"),
		  "1");
	EXPECT_EQ(UriFindRawQueryParameter(q, "bar"),
		  "2");
	EXPECT_EQ(UriFindRawQueryParameter(q, "quoted"),
		  "%20%00+%%");
	EXPECT_EQ(UriFindRawQueryParameter(q, "empty1"),
		  "");
	EXPECT_EQ(UriFindRawQueryParameter(q, "empty2"),
		  "");
}