// EventIdRange_t.cxx #include "dataset_id/EventIdRange.h" #include #include #include "dataset_util/XmlElement.h" using std::cout; using std::endl; void msg(const char* msg) { cout << "----- "; cout << msg; cout << " -----" << endl; } int EventIdRange_t() { msg("Default constructor"); { EventIdRange rng; cout << rng << endl; assert( ! rng.is_valid() ); } msg("EventId constructor."); { EventId id(22,111); EventIdRange rng(id,6); cout << rng << endl; assert( rng.size() == 6 ); assert( rng.run() == 22 ); assert( rng.first_event() == 111 ); assert( rng.last_event() == 116 ); } msg("Run/event constructor."); { EventIdRange rng(22,111,116); cout << rng << endl; assert( rng.size() == 6 ); assert( rng.run() == 22 ); assert( rng.first_event() == 111 ); assert( rng.last_event() == 116 ); } msg("Ordering and equality"); { EventIdRange rng1(1,11,14); EventIdRange rng2(2,3,5); EventIdRange rng3(2,4,9); EventIdRange rng4(2,6,9); EventIdRange rng5(2,8,9); EventIdRange rng6(2,8,9); assert( rng1 < rng2 ); assert( rng2 != rng3 ); assert( rng2 != rng4 ); assert( rng2 < rng5 ); assert( rng5 == rng6 ); } msg("Contains"); { EventIdRange rng(1,11,14); assert( rng.contains(EventIdRange(1,11,11)) ); assert( rng.contains(EventIdRange(1,11,12)) ); assert( rng.contains(EventIdRange(1,11,14)) ); assert( rng.contains(EventIdRange(1,14,14)) ); assert( ! rng.contains(EventIdRange(2,11,11)) ); assert( ! rng.contains(EventIdRange(1,10,10)) ); assert( ! rng.contains(EventIdRange(1,10,12)) ); assert( ! rng.contains(EventIdRange(1,10,15)) ); assert( ! rng.contains(EventIdRange(1,12,15)) ); assert( ! rng.contains(EventIdRange(1,15,16)) ); } msg("pop front"); { EventIdRange rng(1,11,14); cout << rng << endl; assert( rng.size() == 4 ); assert( rng.first_event() == 11 ); assert( rng.last_event() == 14 ); rng.pop_front(); cout << rng << endl; assert( rng.is_valid() ); assert( rng.size() == 3 ); assert( rng.first_event() == 12 ); assert( rng.last_event() == 14 ); rng.pop_front(); cout << rng << endl; rng.pop_front(); cout << rng << endl; assert( rng.is_valid() == 1 ); assert( rng.size() == 1 ); assert( rng.first_event() == 14 ); assert( rng.last_event() == 14 ); rng.pop_front(); cout << rng << endl; assert( ! rng.is_valid() == 1 ); rng.pop_front(); cout << rng << endl; assert( ! rng.is_valid() == 1 ); } msg("pop back"); { EventIdRange rng(1,11,14); cout << rng << endl; assert( rng.size() == 4 ); assert( rng.first_event() == 11 ); assert( rng.last_event() == 14 ); rng.pop_back(); cout << rng << endl; assert( rng.is_valid() ); assert( rng.size() == 3 ); assert( rng.first_event() == 11 ); assert( rng.last_event() == 13 ); rng.pop_back(); cout << rng << endl; rng.pop_back(); cout << rng << endl; assert( rng.is_valid() ); assert( rng.size() == 1 ); assert( rng.first_event() == 11 ); assert( rng.last_event() == 11 ); rng.pop_back(); cout << rng << endl; assert( ! rng.is_valid() ); rng.pop_back(); cout << rng << endl; assert( ! rng.is_valid() ); } msg("XML name"); cout << EventIdRange::xml_name() << endl; msg("DTD"); cout << EventIdRange::dtd() << endl; assert( EventIdRange::dtd().size() > 0 ); msg("Write XML"); { EventIdRange rng(123, 2401, 2468); const XmlElement* pele = rng.xml(); cout << *pele << endl; msg("Read XML"); EventIdRange rng2(*pele); cout << rng << endl; cout << rng2 << endl; assert( rng == rng2 ); } msg("Done"); return 0; } #ifdef CTEST_MAIN int main() { return EventIdRange_t(); } #endif