// DatasetIdList_t.cxx #include "dataset_id/DatasetIdList.h" #include #include #include #include "dataset_util/XmlElement.h" #include "dataset_util/DtdRegistry.h" #include "dataset_util/FileName.h" using std::string; using std::cout; using std::endl; using std::vector; namespace { void msg(const char* msg) { cout << "----- "; cout << msg; cout << " -----" << endl; } } int DatasetIdList_t() { msg("make ID's."); DatasetId id1(123,456); DatasetId id2(123,457); DatasetId id3(369,111); msg("Fill list"); DatasetIdList dids; cout << dids << endl; dids.insert(id1); dids.insert(id2); dids.insert(id3); assert( dids.size() == 3 ); msg("XML name"); cout << DatasetIdList::xml_name() << endl; msg("DTD"); cout << DatasetIdList::dtd() << endl; assert( DatasetIdList::dtd().size() > 0 ); msg("Write to XML"); const XmlElement* pele = dids.xml(); cout << *pele << endl; msg("Read XML"); { DatasetIdList dids2(*pele); cout << dids2 << endl; assert( dids2.size() == dids.size() ); assert( dids2 == dids ); } msg("Read XML child"); { XmlElement xtest("Test"); xtest.add_child(dids.xml()); cout << xtest << endl; DatasetIdList dids2(xtest, true); cout << dids2 << endl; assert( dids2 == dids ); } msg("Read XML child -- NOT"); { XmlElement xtest("Test"); xtest.add_child(dids.xml()); cout << xtest << endl; DatasetIdList dids2(xtest, false); cout << dids2 << endl; assert( dids2.size() == 0 ); } msg("Read XML with too many children"); { XmlElement xtest("Test"); xtest.add_child(dids.xml()); xtest.add_child(dids.xml()); cout << xtest << endl; DatasetIdList dids2(xtest, true); cout << dids2 << endl; assert( dids2.size() == 0 ); } msg("Read XML child"); { XmlElement xtest("Test"); XmlElement* pchild = new XmlElement("TestChild"); pchild->add_child(dids.xml()); xtest.add_child(pchild); cout << xtest << endl; DatasetIdList dids2(xtest, true); cout << dids2 << endl; assert( dids2.size() == 0 ); } msg("Display DTD."); DtdRegistry::display(cout) << endl; string fname = DtdRegistry::instance("dataset").write(); assert( fname == "dataset.dtd" ); cout << FileName(fname).fullpath() << endl; msg("All tests passed."); return 0; } #ifdef CTEST_MAIN int main() { return DatasetIdList_t(); } #endif