// FileFinder_t.cxx #include "dataset_util/FileFinder.h" #include #include #include "dataset_util/mkdir.h" using std::string; using std::cout; using std::endl; template void print(const List& rhs) { cout << "List has " << rhs.size() << " entries:" << endl; unsigned int i=0; while ( i < rhs.size() ) { cout << " " << rhs[i] << endl; ++i; } } template bool compare(const List& lhs, const List& rhs) { if ( lhs == rhs ) { print(lhs); return true; } print(lhs); print(rhs); return false; } int FileFinder_t() { cout << "Create directories" << endl; mkdir("testdir1"); mkdir("testdir1/file1"); mkdir("testdir1/sdir1"); mkdir("testdir1/sdir1/file1"); mkdir("testdir1/sdir2"); mkdir("testdir1/sdir2/sdir1"); mkdir("testdir1/sdir2/sdir1/file1"); mkdir("testdir1/sdir3"); mkdir("testdir1/sdir3/file1"); mkdir("testdir2"); mkdir("testdir2/sdir1"); mkdir("testdir2/sdir1/file1"); { FileFinder::FileList result; FileFinder finder("testdir1", 0, 0, 0); cout << finder << endl; assert( compare(finder.find_all("file1"), result) ); assert( finder.find("file1") == "" ); } { FileFinder::FileList result; result.push_back(FileStatus("testdir1/file1")); FileFinder finder("testdir1", 0, 0, 10); cout << finder << endl; assert( compare(finder.find_all("file1"), result) ); assert( finder.find("file1") == "testdir1/file1" ); } { FileFinder::FileList result; result.push_back(FileStatus("testdir1/file1")); result.push_back(FileStatus("testdir1/sdir1/file1")); result.push_back(FileStatus("testdir1/sdir3/file1")); FileFinder finder("testdir1", 0, 1, 10); cout << finder << endl; assert( compare(finder.find_all("file1"), result) ); assert( finder.find("file1") == "testdir1/file1" ); } { FileFinder::FileList result; result.push_back(FileStatus("testdir1/file1")); result.push_back(FileStatus("testdir1/sdir1/file1")); result.push_back(FileStatus("testdir1/sdir2/sdir1/file1")); result.push_back(FileStatus("testdir1/sdir3/file1")); FileFinder finder("testdir1", 0, 10, 10); cout << finder << endl; assert( compare(finder.find_all("file1"), result) ); assert( finder.find("file1") == "testdir1/file1" ); } { FileFinder::FileList result; result.push_back(FileStatus("testdir1/sdir1/file1")); FileFinder finder("testdir1/sdir1", 0, 10, 10); cout << finder << endl; assert( compare(finder.find_all("file1"), result) ); assert( finder.find("file1") == "testdir1/sdir1/file1" ); } { FileFinder::FileList result; result.push_back(FileStatus("testdir1/sdir1/file1")); result.push_back(FileStatus("testdir1/file1")); result.push_back(FileStatus("testdir1/sdir3/file1")); FileFinder finder("testdir1/sdir1", 1, 0, 10); cout << finder << endl; assert( compare(finder.find_all("file1"), result) ); assert( finder.find("file1") == "testdir1/sdir1/file1" ); } { FileFinder::FileList result; result.push_back(FileStatus("testdir1/sdir1/file1")); result.push_back(FileStatus("testdir1/file1")); result.push_back(FileStatus("testdir1/sdir2/sdir1/file1")); result.push_back(FileStatus("testdir1/sdir3/file1")); FileFinder finder("testdir1/sdir1", 1, 10, 10); cout << finder << endl; assert( compare(finder.find_all("file1"), result) ); assert( finder.find("file1") == "testdir1/sdir1/file1" ); } { FileFinder::FileList result; result.push_back(FileStatus("testdir1/sdir1/file1")); result.push_back(FileStatus("testdir1/file1")); FileFinder finder("testdir1/sdir1", 1, 10, 2); cout << finder << endl; assert( compare(finder.find_all("file1"), result) ); assert( finder.find("file1") == "testdir1/sdir1/file1" ); } return 0; } #ifdef CTEST_MAIN int main() { return FileFinder_t(); } #endif