// CbntDataset_t.cxx #include "dataset_CBNT/CbntDataset.h" #include #include "dataset_util/FileStatus.h" #include "dataset_util/XmlElement.h" #include "dataset_id/SimpleUniqueIdGenerator.h" #include "dataset_credential/CredentialSelectionCatalog.h" #include "dataset_credential/GssCredentialManager.h" #include "dataset_base/DatasetCreator.h" #include "dataset_CBNT/HbookFile.h" #include "dataset_CBNT/HbookFile_t.h" using std::cout; using std::endl; using std::string; using dset::Url; using dset::CredentialSelectionCatalog; using dset::GssCredentialManager; using dset::Dataset; using dset::DatasetCreator; using dset::GenericDataset; using dset::CbntDataset; void msg(string txt) { cout << "------- "; cout << txt; cout << " -------" << endl; } int CbntDataset_t() { msg("Set ID generator"); SimpleUniqueIdGenerator::create_collection("Dataset", 501, 0); 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("Static methods"); string cname = CbntDataset::content_id_name(); cout << cname << endl; assert( cname.size() != 0 ); msg("Check promoter registration"); assert( GenericDataset::has_promoter("CbntDataset") ); msg("Find hbook file"); string infile = find_file("cbnt.hbook"); cout << infile << endl; assert( infile.size() != 0 ); assert( FileStatus(infile).is_readable() ); Url file("file:" + infile); msg("Create dataset"); CbntDataset ds(file); cout << ds << endl; assert( ds.is_valid() ); assert( ds.id().is_valid() ); assert( ds.is_locked() ); assert( ds.content().size() == 1 ); assert( ds.content().front().content_ids().size() == 8 ); assert( ds.content().front().event_ids().size() == 200 ); assert( ds.error() == 0 ); assert( ds.filename() == infile ); assert( ds.event_flags().size() == ds.content().front().event_ids().size() ); msg("Merge should fail"); { CbntDataset dsm(file); assert( dsm.merge(ds) != 0 ); } msg("Check type info"); assert( ds.is() ); assert( ds.is() ); assert( ds.is() ); msg("Check hbook file"); cout << ds.hbook_file() << endl; assert( ds.hbook_file().is_valid() ); assert( ds.hbook_file().full_filename() == infile ); msg("Clone"); { Dataset* pds2 = ds.clone(); assert( pds2 != 0 ); cout << *pds2 << endl; assert( pds2->is_valid() ); assert( pds2->id().is_valid() ); assert( ! (pds2->id() == ds.id()) ); assert( ! pds2->is_locked() ); assert( pds2->content() == ds.content() ); const CbntDataset& cds2 = pds2->cast(); assert( cds2.file() == file ); delete pds2; } msg("Check event and content"); { const ContentId& cid = *ds.content().front().content_ids().begin(); const EventId& eid = ds.content().front().event_ids().front(); assert( cid.is_valid() ); assert( eid.is_valid() ); } msg("Create XML"); const XmlElement* pele = ds.xml(); assert( pele != 0 ); cout << *pele << endl; msg("Reconstruct from XML"); { const Dataset* pds2 = DatasetCreator::create(*pele); assert( pds2 != 0 ); cout << *pds2 << endl; assert( pds2->is_valid() ); assert( pds2->id().is_valid() ); assert( pds2->id() == ds.id() ); assert( pds2->is_locked() ); assert( pds2->content() == ds.content() ); const CbntDataset& cds2 = pds2->cast(); assert( cds2.file() == file ); assert( cds2.hbook_file().is_valid() ); assert( ! cds2.hbook_file().is_open() ); delete pds2; } /* msg("Select events"); { EventIdRange rng(2001, 1, 100); EventIdList eids; eids.insert(rng); cout << eids << endl; Dataset* pdse = ds.clone(); EventIdList::size_type cnt = dse.select_events(eids); cout << *pdse << endl; assert( cnt != 0 ); assert( cnt == dse.event_ids().size() ); assert( cnt < ds.file_event_count() ); assert( cnt < eids.size() ); const CbntDataset& cdse = dse.cast(); assert( cdse.event_flags().size() == cdse.file_event_count() ); } */ msg("DTD"); assert( CbntDataset::dtd().size() != 0 ); cout << CbntDataset::dtd() << endl; return 0; } #ifdef CTEST_MAIN int main() { return CbntDataset_t(); } #endif