aboutsummaryrefslogtreecommitdiff
path: root/unittests/System/Path.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'unittests/System/Path.cpp')
-rw-r--r--unittests/System/Path.cpp74
1 files changed, 72 insertions, 2 deletions
diff --git a/unittests/System/Path.cpp b/unittests/System/Path.cpp
index 2b0817f50c..daeb0175d2 100644
--- a/unittests/System/Path.cpp
+++ b/unittests/System/Path.cpp
@@ -7,15 +7,85 @@
//
//===----------------------------------------------------------------------===//
-// For now, just test that the header file parses.
#include "llvm/Support/PathV2.h"
#include "gtest/gtest.h"
+using namespace llvm;
+
namespace {
TEST(System, Path) {
- // TODO: Add tests!
+ SmallVector<StringRef, 40> paths;
+ paths.push_back("");
+ paths.push_back(".");
+ paths.push_back("..");
+ paths.push_back("foo");
+ paths.push_back("/");
+ paths.push_back("/foo");
+ paths.push_back("foo/");
+ paths.push_back("/foo/");
+ paths.push_back("foo/bar");
+ paths.push_back("/foo/bar");
+ paths.push_back("//net");
+ paths.push_back("//net/foo");
+ paths.push_back("///foo///");
+ paths.push_back("///foo///bar");
+ paths.push_back("/.");
+ paths.push_back("./");
+ paths.push_back("/..");
+ paths.push_back("../");
+ paths.push_back("foo/.");
+ paths.push_back("foo/..");
+ paths.push_back("foo/./");
+ paths.push_back("foo/./bar");
+ paths.push_back("foo/..");
+ paths.push_back("foo/../");
+ paths.push_back("foo/../bar");
+ paths.push_back("c:");
+ paths.push_back("c:/");
+ paths.push_back("c:foo");
+ paths.push_back("c:/foo");
+ paths.push_back("c:foo/");
+ paths.push_back("c:/foo/");
+ paths.push_back("c:/foo/bar");
+ paths.push_back("prn:");
+ paths.push_back("c:\\");
+ paths.push_back("c:foo");
+ paths.push_back("c:\\foo");
+ paths.push_back("c:foo\\");
+ paths.push_back("c:\\foo\\");
+ paths.push_back("c:\\foo/");
+ paths.push_back("c:/foo\\bar");
+
+ for (SmallVector<StringRef, 40>::const_iterator i = paths.begin(),
+ e = paths.end();
+ i != e;
+ ++i) {
+ outs() << *i << " =>\n Iteration: [";
+ for (sys::path::const_iterator ci = sys::path::begin(*i),
+ ce = sys::path::end(*i);
+ ci != ce;
+ ++ci) {
+ outs() << *ci << ',';
+ }
+ outs() << "]\n";
+
+ StringRef res;
+ SmallString<16> temp_store;
+ if (error_code ec = sys::path::root_path(*i, res)) ASSERT_FALSE(ec.message().c_str());
+ outs() << " root_path: " << res << '\n';
+ if (error_code ec = sys::path::root_name(*i, res)) ASSERT_FALSE(ec.message().c_str());
+ outs() << " root_name: " << res << '\n';
+ if (error_code ec = sys::path::root_directory(*i, res)) ASSERT_FALSE(ec.message().c_str());
+ outs() << " root_directory: " << res << '\n';
+
+ temp_store = *i;
+ if (error_code ec = sys::path::make_absolute(temp_store)) ASSERT_FALSE(ec.message().c_str());
+ outs() << " make_absolute: " << temp_store << '\n';
+
+ outs().flush();
+ }
}
} // anonymous namespace