From eb12420155f600b90be1657baf154c65ce23d344 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 18 Jun 2014 23:49:00 -0400 Subject: [PATCH] implement Path::join() --- src/lib/src/Path.cc | 6 ++++-- test/src/test_Path.cc | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lib/src/Path.cc b/src/lib/src/Path.cc index 295d06b..279b69b 100644 --- a/src/lib/src/Path.cc +++ b/src/lib/src/Path.cc @@ -22,8 +22,10 @@ namespace jes Path Path::join(const Path & other) { - // TODO - return ""; + if (m_path.size() > 0 && *m_path.rbegin() == '/') + return Path(m_path + other.m_path); + else + return Path(m_path + '/' + other.m_path); } void Path::clean() diff --git a/test/src/test_Path.cc b/test/src/test_Path.cc index 7271bf8..daa31ad 100644 --- a/test/src/test_Path.cc +++ b/test/src/test_Path.cc @@ -21,3 +21,9 @@ TEST(PathTest, convert_backslashes_to_forward_slashes) Path p("C:\\foo\\bar.txt"); EXPECT_EQ("C:/foo/bar.txt", p.to_s()); } + +TEST(PathTest, joins_two_paths_together) +{ + EXPECT_EQ("C:/foo/../baz", Path("C:\\foo").join("../baz").to_s()); + EXPECT_EQ("/xyz/f.txt", Path("/xyz/").join("f.txt").to_s()); +}