// FileName_t.cxx #include "dataset_util/FileName.h" #include using std::string; using std::cout; using std::endl; bool check_link(string lname, string uname) { cout << "--- Check link" << endl; FileName fname(lname); FileName ufname = fname.unlinked(); cout << uname << endl; cout << ufname << endl; return ufname.name() == uname; } int FileName_t() { cout << "--- Create names" << endl; string f0; string f1 = "test1.dat"; string f2 = "mydir/test2.dat"; string f3 = "/usr/bin/ls"; cout << f0 << endl; cout << f1 << endl; cout << f2 << endl; cout << f3 << endl; cout << "--- Create FileName objects" << endl; FileName fn0(f0); FileName fn1(f1); FileName fn2(f2); FileName fn3(f3); cout << fn0 << endl; cout << fn1 << endl; cout << fn2 << endl; cout << fn3 << endl; cout << "--- Check validity" << endl; assert( ! fn0.is_valid() ); assert( fn1.is_valid() ); assert( fn2.is_valid() ); assert( fn3.is_valid() ); cout << "--- Check full path status" << endl; assert( ! fn0.is_fullpath() ); assert( ! fn1.is_fullpath() ); assert( ! fn2.is_fullpath() ); assert( fn3.is_fullpath() ); cout << "--- Check relative path status" << endl; assert( ! fn0.is_relative() ); assert( fn1.is_relative() ); assert( fn2.is_relative() ); assert( ! fn3.is_relative() ); cout << "--- Check name" << endl; assert( fn0.name() == f0 ); assert( fn1.name() == f1 ); assert( fn2.name() == f2 ); assert( fn3.name() == f3 ); cout << "--- Check full path" << endl; assert( fn0.fullpath().name() == "" ); assert( fn1.fullpath().name().size() > fn1.name().size() ); assert( fn2.fullpath().name().size() > fn2.name().size() ); assert( fn3.fullpath().name() == fn3.name() ); assert( fn3.fullpath_name() == fn3.name() ); cout << "--- Check nopath" << endl; assert( fn0.nopath_name() == "" ); assert( fn1.nopath_name() == "test1.dat" ); assert( fn2.nopath_name() == "test2.dat" ); assert( fn3.nopath_name() == "ls" ); cout << "--- Check directory" << endl; assert( fn0.directory_name() == "" ); assert( fn1.directory_name() == "" ); assert( fn2.directory_name() == "mydir" ); assert( fn3.directory_name() == "/usr/bin" ); cout << "--- Create links" << endl; system("rm -rf adir"); system("mkdir -p adir/bdir/cdir"); system("cd adir; ln -s bdir b1"); system("cd adir/bdir; ln -s cdir c1"); system("cd adir/bdir/cdir; touch d0; ln -s d0 d1"); assert( check_link("/usr", "/usr") ); assert( check_link("adir", "adir") ); assert( check_link("adir/b1", "adir/bdir") ); assert( ! check_link("adir/bdir", "adir/b1") ); assert( check_link("adir/bdir/c2", "adir/bdir/c2") ); assert( check_link("adir/b1/c2", "adir/bdir/c2") ); assert( check_link("adir/bdir/cdir", "adir/bdir/cdir") ); assert( check_link("adir/bdir/c1", "adir/bdir/cdir") ); assert( check_link("adir/b1/c1", "adir/bdir/cdir") ); return 0; } #ifdef CTEST_MAIN int main() { return FileName_t(); } #endif