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
|
#include "uri.hh"
#include <gtest/gtest.h>
#include <string>
TEST(uri, empty) {
std::string tmp;
EXPECT_EQ("", uri::decode("", tmp).value_or("error"));
}
TEST(uri, example) {
std::string tmp;
EXPECT_EQ("?x=test", uri::decode("%3Fx%3Dtest", tmp).value_or("error"));
EXPECT_EQ("?x=test", uri::decode("%3fx%3dtest", tmp).value_or("error"));
EXPECT_EQ(
"шеллы",
uri::decode("%D1%88%D0%B5%D0%BB%D0%BB%D1%8B", tmp).value_or("error"));
EXPECT_EQ("JavaScript_шеллы",
uri::decode("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B", tmp)
.value_or("error"));
EXPECT_FALSE(uri::decode("%E0%A4%A", tmp).has_value());
EXPECT_EQ("search+query (correct)",
uri::decode("search+query%20%28correct%29", tmp).value_or("error"));
}
TEST(uri, bad) {
std::string tmp;
EXPECT_FALSE(uri::decode("%3Fx%3", tmp).has_value());
EXPECT_FALSE(uri::decode("%3Fx%3test", tmp).has_value());
EXPECT_FALSE(uri::decode("%%", tmp).has_value());
EXPECT_FALSE(uri::decode("%D1", tmp).has_value());
}
|