mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 19:47:34 +00:00
AK: Add a basic URL class to help us handle URL's
We're gonna need these as we start to write more networking programs.
This commit is contained in:
parent
aaccf6ee4e
commit
ed43770b2f
5 changed files with 223 additions and 1 deletions
|
@ -1,4 +1,4 @@
|
|||
PROGRAMS = TestString TestQueue TestVector TestHashMap TestJSON TestWeakPtr TestNonnullRefPtr TestRefPtr TestFixedArray TestFileSystemPath
|
||||
PROGRAMS = TestString TestQueue TestVector TestHashMap TestJSON TestWeakPtr TestNonnullRefPtr TestRefPtr TestFixedArray TestFileSystemPath TestURL
|
||||
|
||||
CXXFLAGS = -std=c++17 -Wall -Wextra -ggdb3 -O2 -I../ -I../../
|
||||
|
||||
|
@ -13,6 +13,7 @@ SHARED_TEST_OBJS = \
|
|||
../JsonValue.o \
|
||||
../JsonParser.o \
|
||||
../FileSystemPath.o \
|
||||
../URL.o \
|
||||
|
||||
.cpp.o:
|
||||
@echo "HOST_CXX $<"; $(PRE_CXX) $(CXX) $(CXXFLAGS) -o $@ -c $<
|
||||
|
@ -58,6 +59,9 @@ TestOptional: TestOptional.o $(SHARED_TEST_OBJS)
|
|||
TestFileSystemPath: TestFileSystemPath.o $(SHARED_TEST_OBJS)
|
||||
$(PRE_CXX) $(CXX) $(CXXFLAGS) -o $@ TestFileSystemPath.o $(SHARED_TEST_OBJS)
|
||||
|
||||
TestURL: TestURL.o $(SHARED_TEST_OBJS)
|
||||
$(PRE_CXX) $(CXX) $(CXXFLAGS) -o $@ TestURL.o $(SHARED_TEST_OBJS)
|
||||
|
||||
|
||||
clean:
|
||||
rm -f $(SHARED_TEST_OBJS)
|
||||
|
|
49
AK/Tests/TestURL.cpp
Normal file
49
AK/Tests/TestURL.cpp
Normal file
|
@ -0,0 +1,49 @@
|
|||
#include <AK/TestSuite.h>
|
||||
|
||||
#include <AK/URL.h>
|
||||
|
||||
TEST_CASE(construct)
|
||||
{
|
||||
EXPECT_EQ(URL().is_valid(), false);
|
||||
}
|
||||
|
||||
TEST_CASE(basic)
|
||||
{
|
||||
{
|
||||
URL url("http://www.serenityos.org/index.html");
|
||||
EXPECT_EQ(url.is_valid(), true);
|
||||
EXPECT_EQ(url.protocol(), "http");
|
||||
EXPECT_EQ(url.port(), 80);
|
||||
EXPECT_EQ(url.path(), "/index.html");
|
||||
}
|
||||
{
|
||||
URL url("https://localhost:1234/~anon/test/page.html");
|
||||
EXPECT_EQ(url.is_valid(), true);
|
||||
EXPECT_EQ(url.protocol(), "https");
|
||||
EXPECT_EQ(url.port(), 1234);
|
||||
EXPECT_EQ(url.path(), "/~anon/test/page.html");
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE(some_bad_urls)
|
||||
{
|
||||
EXPECT_EQ(URL("http:serenityos.org").is_valid(), false);
|
||||
EXPECT_EQ(URL("http:/serenityos.org").is_valid(), false);
|
||||
EXPECT_EQ(URL("http//serenityos.org").is_valid(), false);
|
||||
EXPECT_EQ(URL("http:///serenityos.org").is_valid(), false);
|
||||
EXPECT_EQ(URL("serenityos.org").is_valid(), false);
|
||||
EXPECT_EQ(URL("://serenityos.org").is_valid(), false);
|
||||
EXPECT_EQ(URL("http://serenityos.org:80:80/").is_valid(), false);
|
||||
EXPECT_EQ(URL("http://serenityos.org:80:80").is_valid(), false);
|
||||
EXPECT_EQ(URL("http://serenityos.org:abc").is_valid(), false);
|
||||
EXPECT_EQ(URL("http://serenityos.org:abc:80").is_valid(), false);
|
||||
EXPECT_EQ(URL("http://serenityos.org:abc:80/").is_valid(), false);
|
||||
EXPECT_EQ(URL("http://serenityos.org:/abc/").is_valid(), false);
|
||||
}
|
||||
|
||||
TEST_CASE(serialization)
|
||||
{
|
||||
EXPECT_EQ(URL("http://www.serenityos.org/").to_string(), "http://www.serenityos.org:80/");
|
||||
}
|
||||
|
||||
TEST_MAIN(URL)
|
Loading…
Add table
Add a link
Reference in a new issue