// EventId_t.cxx #include "dataset_id/EventId.h" #include #include #include #include "dataset_util/XmlElement.h" #include "dataset_util/DtdRegistry.h" using std::cout; using std::endl; #if ( __GNUC__ != 2 ) using namespace std::rel_ops; #endif void msg(const char* msg) { cout << "----- "; cout << msg; cout << " -----" << endl; } int EventId_t() { msg("Check index sizes"); assert( sizeof(EventId::RunNumber) == 4 ); assert( sizeof(EventId::EventNumber) == 4 ); msg("Default constructor."); { EventId evid; cout << evid << endl; assert( ! evid.is_valid() ); } msg("Create and destroy."); { EventId evid(11,222); cout << evid << endl; assert( evid.is_valid() ); assert( evid.run() == 11 ); assert( evid.event() == 222 ); } msg("Ordering."); assert( EventId(10,10) < EventId(12,8) ); assert( EventId(10,10) < EventId(10,12) ); msg("Increment."); { EventId evid(888, 111); assert( evid.event() == 111 ); ++evid; assert( evid.event() == 112 ); ++evid; assert( evid.event() == 113 ); } msg("Equality"); { EventId evid0(1,1); EventId evid1(1,1); assert( evid0 == evid1 ); } msg("Other relops"); { EventId evid0(1,1); EventId evid1(1,1); EventId evid2(2,1); cout << evid0 << endl; cout << evid1 << endl; cout << evid2 << endl; assert( evid1 < evid2 ); assert( evid0 == evid1 ); assert( ! (evid1 == evid2) ); assert( evid1 != evid2 ); assert( evid1 <= evid0 ); assert( evid1 <= evid2 ); assert( evid2 > evid1 ); assert( evid2 >= evid1 ); assert( evid0 >= evid1 ); } msg("XML name."); cout << EventId::xml_name() << endl; msg("DTD"); cout << EventId::dtd() << endl; assert( EventId::dtd().size() > 0 ); assert( DtdRegistry::instance("dataset").has_type("EventId") ); msg("Write to XML"); { EventId evid(888, 111); const XmlElement* pele = evid.xml(); cout << *pele << endl; msg("Read from XML"); EventId evid2(*pele); cout << evid << endl; cout << evid2 << endl; assert( evid == evid2 ); } msg("All tests passed."); return 0; } #ifdef CTEST_MAIN int main() { return EventId_t(); } #endif