From 43ec733b61a3f38b7f4c8e12786fd3762de72425 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 7 Aug 2019 21:07:02 +0200 Subject: [PATCH] AK: Add a basic unit test for FileSystemPath Just to make sure that things are on the up-and-up. --- AK/Tests/Makefile | 7 ++++++- AK/Tests/TestFileSystemPath.cpp | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 AK/Tests/TestFileSystemPath.cpp diff --git a/AK/Tests/Makefile b/AK/Tests/Makefile index 7621cf97bb9..380c9eab606 100644 --- a/AK/Tests/Makefile +++ b/AK/Tests/Makefile @@ -1,4 +1,4 @@ -PROGRAMS = TestString TestQueue TestVector TestHashMap TestJSON TestWeakPtr TestNonnullRefPtr TestRefPtr TestFixedArray +PROGRAMS = TestString TestQueue TestVector TestHashMap TestJSON TestWeakPtr TestNonnullRefPtr TestRefPtr TestFixedArray TestFileSystemPath CXXFLAGS = -std=c++17 -Wall -Wextra -ggdb3 -O2 -I../ -I../../ @@ -12,6 +12,7 @@ SHARED_TEST_OBJS = \ ../JsonObject.o \ ../JsonValue.o \ ../JsonParser.o \ + ../FileSystemPath.o \ .cpp.o: @echo "HOST_CXX $<"; $(PRE_CXX) $(CXX) $(CXXFLAGS) -o $@ -c $< @@ -54,6 +55,10 @@ TestRefPtr: TestRefPtr.o $(SHARED_TEST_OBJS) TestOptional: TestOptional.o $(SHARED_TEST_OBJS) $(PRE_CXX) $(CXX) $(CXXFLAGS) -o $@ TestOptional.o $(SHARED_TEST_OBJS) +TestFileSystemPath: TestFileSystemPath.o $(SHARED_TEST_OBJS) + $(PRE_CXX) $(CXX) $(CXXFLAGS) -o $@ TestFileSystemPath.o $(SHARED_TEST_OBJS) + + clean: rm -f $(SHARED_TEST_OBJS) rm -f $(PROGRAMS) diff --git a/AK/Tests/TestFileSystemPath.cpp b/AK/Tests/TestFileSystemPath.cpp new file mode 100644 index 00000000000..a3d29344ef5 --- /dev/null +++ b/AK/Tests/TestFileSystemPath.cpp @@ -0,0 +1,29 @@ +#include + +#include +#include + +TEST_CASE(construct) +{ + EXPECT_EQ(FileSystemPath().is_valid(), false); +} + +TEST_CASE(basic) +{ + FileSystemPath path("/abc/def/ghi.txt"); + EXPECT_EQ(path.is_valid(), true); + EXPECT_EQ(path.basename(), "ghi.txt"); + EXPECT_EQ(path.title(), "ghi"); + EXPECT_EQ(path.extension(), "txt"); + EXPECT_EQ(path.parts().size(), 3); + EXPECT_EQ(path.parts(), Vector({ "abc", "def", "ghi.txt" })); + EXPECT_EQ(path.string(), "/abc/def/ghi.txt"); +} + +TEST_CASE(dotdot_coalescing) +{ + EXPECT_EQ(FileSystemPath("/home/user/../../not/home").string(), "/not/home"); + EXPECT_EQ(FileSystemPath("/../../../../").string(), "/"); +} + +TEST_MAIN(FileSystemPath)