#include "uri.hh" #include #include 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()); }