JD2022-TU1/main/unittests/core/file/URL.cpp

47 lines
1.4 KiB
C++

#include "precompiled_unittests_core.h"
#include <core/file/URL.h>
namespace ITF
{
TEST(URL, ResourceParsing)
{
URL url1("http://server");
URL url2("http://server/");
URL url3("//host:8080/test");
URL url4("anything:://server/resource/path/dir/?param=0&str=test%20with%20spaces&empty=&plop=42");
URL url5("anything:://server?no_resource_but_query_string=10");
URL url6("anything:://server/resource%20with%20spaces"); // should NOT be decoded
EXPECT_EQ(url1.parseResource(), "");
EXPECT_EQ(url2.parseResource(), "/");
EXPECT_EQ(url3.parseResource(), "/test");
EXPECT_EQ(url4.parseResource(), "/resource/path/dir/");
EXPECT_EQ(url5.parseResource(), "");
EXPECT_EQ(url6.parseResource(), "/resource%20with%20spaces");
}
TEST(URL, QueryStringParsing)
{
URL url1("http://server");
URL url2("test?val=42");
URL url3("anything:://server/resource/path/dir/?param=0&str=test%20with%20spaces&empty=&plop=42");
URL::QueryString qs1 = url1.parseQueryString();
URL::QueryString qs2 = url2.parseQueryString();
URL::QueryString qs3 = url3.parseQueryString();
ASSERT_EQ(0U, qs1.size());
ASSERT_EQ(1U, qs2.size());
ASSERT_EQ(4U, qs3.size());
ASSERT_EQ(qs2["val"], "42");
ASSERT_EQ(qs3["param"], "0");
ASSERT_EQ(qs3["str"], "test with spaces");
ASSERT_EQ(qs3["empty"], "");
ASSERT_EQ(qs3["plop"], "42");
}
}