diff options
Diffstat (limited to 'unittests/System/Path.cpp')
-rw-r--r-- | unittests/System/Path.cpp | 74 |
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 |