// JobPreferencesId_t.cxx #include "dial_job/JobPreferencesId.h" #include #include #include #include #include "dataset_util/XmlElement.h" #include "dataset_util/DtdRegistry.h" using std::string; using std::cout; using std::endl; #if ( __GNUC__ != 2 ) using namespace std::rel_ops; #endif using dial::JobPreferencesId; void msg(const char* msg) { cout << "----- "; cout << msg; cout << " -----" << endl; } int JobPreferencesId_t() { msg("Check index size"); assert( sizeof(JobPreferencesId::Index) == 4 ); msg("convert index"); { JobPreferencesId::Index idx(12345678); { string sidx = index_to_string(idx); cout << "(" << sidx << ")" << endl; assert( sidx.size() == 8 ); } { string sidx = index_to_string(idx, '0'); cout << "(" << sidx << ")" << endl; assert( sidx.size() == 10 ); } { string sidx = index_to_string(idx, '-'); cout << "(" << sidx << ")" << endl; assert( sidx.size() == 10 ); } } msg("Default constructor."); { JobPreferencesId id; cout << id << endl; assert( ! id.is_valid() ); } msg("Create and destroy."); { JobPreferencesId id(11,222); cout << id << endl; assert( id.is_valid() ); assert( id.collection() == 11 ); assert( id.entry() == 222 ); } msg("Convert to string and back"); { JobPreferencesId id(123, 369); cout << id << endl; msg("... without pad"); string snopad = id.to_string(); cout << snopad << endl; cout << snopad.size() << endl; assert( snopad.size() == 7 ); { UniqueId id2(snopad); cout << id2 << endl; assert( id2 == id ); } msg("... with pad"); string spad = id.to_string(true); cout << spad << endl; cout << spad.size() << endl; assert( spad.size() == 21 ); { UniqueId id2(spad); cout << id2 << endl; assert( id2 == id ); } } msg("Ordering."); assert( JobPreferencesId(10,10) < JobPreferencesId(12,8) ); assert( JobPreferencesId(10,10) < JobPreferencesId(10,12) ); msg("Next."); { JobPreferencesId bad = JobPreferencesId(888,0).next(); assert( ! bad.is_valid() ); JobPreferencesId good = JobPreferencesId(888,123).next(); assert( good.is_valid() ); assert( good.entry() == 124 ); } msg("Equality"); { JobPreferencesId id0(1,2); JobPreferencesId id1(1,2); assert( id0 == id1 ); } msg("Other relops"); { JobPreferencesId id0(1,1); JobPreferencesId id1(1,1); JobPreferencesId id2(2,1); assert( id1 < id2 ); assert( id0 == id1 ); assert( id1 != id2 ); assert( id1 <= id0 ); assert( id1 <= id2 ); assert( id2 > id1 ); assert( id2 >= id1 ); assert( id0 >= id1 ); } msg("Write XML"); { JobPreferencesId id(123,456); cout << id << endl; const XmlElement* pele = id.xml(); cout << *pele << endl; msg("Read XML"); JobPreferencesId id2(*pele); cout << id2 << endl; assert( id2 == id ); delete pele; } msg("Test generator"); { JobPreferencesId id1 = JobPreferencesId::generate(); JobPreferencesId id2 = JobPreferencesId::generate(); cout << id1 << endl; cout << id2 << endl; assert( id1.is_valid() ); assert( id1.is_valid() ); assert( id1 < id2 ); } msg("Check DTD"); cout << JobPreferencesId::dtd() << endl; assert( JobPreferencesId::dtd().size() ); assert( DtdRegistry::instance("dial").has_type("JobPreferencesId") ); return 0; } #ifdef CTEST_MAIN int main() { return JobPreferencesId_t(); } #endif