13ef91c55SMichael J. Spencer //===- llvm/unittest/Support/Path.cpp - Path tests ------------------------===// 23ef91c55SMichael J. Spencer // 33ef91c55SMichael J. Spencer // The LLVM Compiler Infrastructure 43ef91c55SMichael J. Spencer // 53ef91c55SMichael J. Spencer // This file is distributed under the University of Illinois Open Source 63ef91c55SMichael J. Spencer // License. See LICENSE.TXT for details. 73ef91c55SMichael J. Spencer // 83ef91c55SMichael J. Spencer //===----------------------------------------------------------------------===// 93ef91c55SMichael J. Spencer 103ef91c55SMichael J. Spencer #include "llvm/Support/PathV2.h" 113ef91c55SMichael J. Spencer 123ef91c55SMichael J. Spencer #include "gtest/gtest.h" 133ef91c55SMichael J. Spencer 143ef91c55SMichael J. Spencer using namespace llvm; 153ef91c55SMichael J. Spencer 163ef91c55SMichael J. Spencer namespace { 173ef91c55SMichael J. Spencer 183ef91c55SMichael J. Spencer TEST(Support, Path) { 193ef91c55SMichael J. Spencer SmallVector<StringRef, 40> paths; 203ef91c55SMichael J. Spencer paths.push_back(""); 213ef91c55SMichael J. Spencer paths.push_back("."); 223ef91c55SMichael J. Spencer paths.push_back(".."); 233ef91c55SMichael J. Spencer paths.push_back("foo"); 243ef91c55SMichael J. Spencer paths.push_back("/"); 253ef91c55SMichael J. Spencer paths.push_back("/foo"); 263ef91c55SMichael J. Spencer paths.push_back("foo/"); 273ef91c55SMichael J. Spencer paths.push_back("/foo/"); 283ef91c55SMichael J. Spencer paths.push_back("foo/bar"); 293ef91c55SMichael J. Spencer paths.push_back("/foo/bar"); 303ef91c55SMichael J. Spencer paths.push_back("//net"); 313ef91c55SMichael J. Spencer paths.push_back("//net/foo"); 323ef91c55SMichael J. Spencer paths.push_back("///foo///"); 333ef91c55SMichael J. Spencer paths.push_back("///foo///bar"); 343ef91c55SMichael J. Spencer paths.push_back("/."); 353ef91c55SMichael J. Spencer paths.push_back("./"); 363ef91c55SMichael J. Spencer paths.push_back("/.."); 373ef91c55SMichael J. Spencer paths.push_back("../"); 383ef91c55SMichael J. Spencer paths.push_back("foo/."); 393ef91c55SMichael J. Spencer paths.push_back("foo/.."); 403ef91c55SMichael J. Spencer paths.push_back("foo/./"); 413ef91c55SMichael J. Spencer paths.push_back("foo/./bar"); 423ef91c55SMichael J. Spencer paths.push_back("foo/.."); 433ef91c55SMichael J. Spencer paths.push_back("foo/../"); 443ef91c55SMichael J. Spencer paths.push_back("foo/../bar"); 453ef91c55SMichael J. Spencer paths.push_back("c:"); 463ef91c55SMichael J. Spencer paths.push_back("c:/"); 473ef91c55SMichael J. Spencer paths.push_back("c:foo"); 483ef91c55SMichael J. Spencer paths.push_back("c:/foo"); 493ef91c55SMichael J. Spencer paths.push_back("c:foo/"); 503ef91c55SMichael J. Spencer paths.push_back("c:/foo/"); 513ef91c55SMichael J. Spencer paths.push_back("c:/foo/bar"); 523ef91c55SMichael J. Spencer paths.push_back("prn:"); 533ef91c55SMichael J. Spencer paths.push_back("c:\\"); 543ef91c55SMichael J. Spencer paths.push_back("c:foo"); 553ef91c55SMichael J. Spencer paths.push_back("c:\\foo"); 563ef91c55SMichael J. Spencer paths.push_back("c:foo\\"); 573ef91c55SMichael J. Spencer paths.push_back("c:\\foo\\"); 583ef91c55SMichael J. Spencer paths.push_back("c:\\foo/"); 593ef91c55SMichael J. Spencer paths.push_back("c:/foo\\bar"); 603ef91c55SMichael J. Spencer 613ef91c55SMichael J. Spencer for (SmallVector<StringRef, 40>::const_iterator i = paths.begin(), 623ef91c55SMichael J. Spencer e = paths.end(); 633ef91c55SMichael J. Spencer i != e; 643ef91c55SMichael J. Spencer ++i) { 653ef91c55SMichael J. Spencer outs() << *i << " =>\n Iteration: ["; 663ef91c55SMichael J. Spencer for (sys::path::const_iterator ci = sys::path::begin(*i), 673ef91c55SMichael J. Spencer ce = sys::path::end(*i); 683ef91c55SMichael J. Spencer ci != ce; 693ef91c55SMichael J. Spencer ++ci) { 703ef91c55SMichael J. Spencer outs() << *ci << ','; 713ef91c55SMichael J. Spencer } 723ef91c55SMichael J. Spencer outs() << "]\n"; 733ef91c55SMichael J. Spencer 743ef91c55SMichael J. Spencer StringRef res; 753ef91c55SMichael J. Spencer SmallString<16> temp_store; 76*b775d0b3SMichael J. Spencer if (error_code ec = sys::path::root_path(*i, res)) 77*b775d0b3SMichael J. Spencer ASSERT_FALSE(ec.message().c_str()); 783ef91c55SMichael J. Spencer outs() << " root_path: " << res << '\n'; 79*b775d0b3SMichael J. Spencer if (error_code ec = sys::path::root_name(*i, res)) 80*b775d0b3SMichael J. Spencer ASSERT_FALSE(ec.message().c_str()); 813ef91c55SMichael J. Spencer outs() << " root_name: " << res << '\n'; 82*b775d0b3SMichael J. Spencer if (error_code ec = sys::path::root_directory(*i, res)) 83*b775d0b3SMichael J. Spencer ASSERT_FALSE(ec.message().c_str()); 843ef91c55SMichael J. Spencer outs() << " root_directory: " << res << '\n'; 853ef91c55SMichael J. Spencer 863ef91c55SMichael J. Spencer temp_store = *i; 87*b775d0b3SMichael J. Spencer if (error_code ec = sys::path::make_absolute(temp_store)) 88*b775d0b3SMichael J. Spencer ASSERT_FALSE(ec.message().c_str()); 893ef91c55SMichael J. Spencer outs() << " make_absolute: " << temp_store << '\n'; 903ef91c55SMichael J. Spencer 913ef91c55SMichael J. Spencer outs().flush(); 923ef91c55SMichael J. Spencer } 933ef91c55SMichael J. Spencer } 943ef91c55SMichael J. Spencer 953ef91c55SMichael J. Spencer } // anonymous namespace 96