// TextDataset_t.cxx #include "dataset_base/TextDataset.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::CredentialSelectionCatalog; using dset::GssCredentialManager; using dset::Dataset; using dset::DatasetCreator; using dset::GenericDataset; using dset::TextDataset; void msg(const char* msg) { cout << "----- "; cout << msg; cout << " -----" << endl; } int TextDataset_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("TextDataset") ); msg("Create from no files"); TextDataset dst0("EMPTY", ""); cout << dst0 << endl; assert( dst0.is_valid() ); assert( dst0.location().is_empty() ); assert( dst0.content().is_valid() ); assert( dst0.content().front().name() == "EMPTY" ); assert( dst0.texts().size() == 0 ); msg("Create from files"); Text txt1; txt1.append("File number one"); txt1.write("file1.dat"); Text txt2; txt2.append("File 2"); txt2.write("file2.dat"); TextDataset dst("MYFILES", "file1.dat file2.dat"); 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.content().is_valid() ); assert( dst.content().size() == 1 ); assert( dst.content().front().name() == "MYFILES" ); const ContentIdList cids1 = dst.content().front().content_ids(); assert( cids1.size() == 2 ); assert( dst.content().is_valid() ); const TextDataset::TextList& txts1 = dst.texts(); assert( txts1.size() == 2 ); assert( txts1.front() == txt1 ); assert( txts1.back() == txt2 ); 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() ); TextDataset dst2(gdst); cout << dst2 << endl; assert( dst2.is_valid() ); assert( dst2.content() == dst.content() ); assert( dst2.location() == dst.location() ); assert( dst2.constituents() == dst.constituents() ); assert( dst2.texts().size() == 2 ); assert( dst2.texts() == dst.texts() ); msg("All tests passed."); return 0; } #ifdef CTEST_MAIN int main() { return TextDataset_t(); } #endif