// SingleFileDataset_t.cxx #include "dataset_base/SingleFileDataset.h" #include #include #include #include #include "dataset_util/FileName.h" #include "dataset_util/XmlElement.h" #include "dataset_util/DtdRegistry.h" #include "dataset_id/SimpleUniqueIdGenerator.h" #include "dataset_credential/CredentialSelectionCatalog.h" #include "dataset_credential/GssCredentialManager.h" #include "dataset_base/DatasetCreator.h" #include "dataset_base/Dataset_t.h" using std::string; using std::ostream; using std::cout; using std::endl; using dset::Url; using dset::CredentialSelectionCatalog; using dset::GssCredentialManager; using dset::Dataset; using dset::DatasetCreator; using dset::GenericDataset; using dset::SingleFileDataset; void msg(const char* msg) { cout << "----- "; cout << msg; cout << " -----" << endl; } int SingleFileDataset_t() { system("touch file1.dat"); SimpleUniqueIdGenerator::create_collection("Dataset", 123, 1001); SimpleUniqueIdGenerator::set_as_default(); msg("Fetch default instance of CSC."); assert( CredentialSelectionCatalog::create_default_instance() == 0 ); CredentialSelectionCatalog& sc = CredentialSelectionCatalog::default_instance(); cout << sc << endl; assert( sc.is_valid() ); string owner = "me"; assert( GssCredentialManager::set_default() == 0 ); assert( GssCredentialManager::set_owner("me") == 0 ); msg("Check promoter registration"); assert( GenericDataset::has_promoter("SingleFileDataset") ); msg("Create from file"); Url url1("file:file1.dat"); string clab = "mycontent"; SingleFileDataset dst(url1, clab); assert( ! dst.is_locked() ); assert( dst.lock() == 0 ); assert( dst.is_locked() ); cout << dst << endl; assert( dst.is_valid() ); assert( ! dst.location().is_empty() ); assert( dst.location().files().front() == url1 ); assert( dst.content().is_valid() ); assert( dst.file() == url1 ); msg("Check casts."); assert( dst.is() ); assert( dst.is() ); assert( dst.is() ); msg("Clone"); GenericDataset* pdst_clone = dst.clone(); assert( pdst_clone != 0 ); cout << *pdst_clone << endl; assert( pdst_clone->is_valid() ); assert( pdst_clone->is() ); assert( pdst_clone->id().is_valid() ); assert( pdst_clone->id() != dst.id() ); assert( pdst_clone->parent() != 0 ); assert( pdst_clone->parent() == &dst ); assert( pdst_clone->parent()->id() == dst.id() ); assert( pdst_clone->content() == dst.content() ); assert( pdst_clone->location() == dst.location() ); assert( pdst_clone->constituents() == dst.constituents() ); msg("Write to XML"); const XmlElement* pele = dst.xml(); cout << *pele << endl; msg("Read XML"); GenericDataset gdst(*pele); assert( gdst.is_valid() ); SingleFileDataset dst2(gdst); cout << dst2 << endl; assert( dst2.is_valid() ); assert( dst2.content() == dst.content() ); assert( dst2.location() == dst.location() ); assert( dst2.constituents() == dst.constituents() ); msg("Use creator"); DatasetId pid(123,456); const Dataset* pdst = SingleFileDataset::create("SingleFileDataset", url1, clab, pid); assert( pdst != 0 ); cout << *pdst << endl; assert( pdst->fulltype() == "SingleFileDataset" ); assert( pdst->location().files().front() == url1 ); assert( pdst->content() == dst.content() ); assert( pdst->parent_id() == pid ); delete pdst; msg("All tests passed."); return 0; } #ifdef CTEST_MAIN int main() { return SingleFileDataset_t(); } #endif