// EdoIdContext_t.cxx #include "EdoIdContext.h" #include #include #include "FileType.h" #include "FileId.h" #include "EventId.h" #include "EdoType.h" #include "EdoKey.h" #include "EdoId.h" using std::cout; using std::endl; using hes::Index; using hes::IndexVector; using hes::FileType; using hes::FileId; using hes::EventId; using hes::EdoType; using hes::EdoKey; using hes::EdoId; using hes::EdoIdContext; int main() { string line = "--------------------------------------"; cout << line << endl; { cout << "Size of EdoIdContext is " << sizeof(EdoIdContext) << " bytes" << endl; cout << line << endl; } { cout << "Version: " << EdoId::version() << endl; assert( EdoId::version() == 1 ); cout << line << endl; } // Create some EDO ID's. FileType ftype(1); FileId fid(ftype, 0xabababL, 0x12121212L); EventId eid(0xcdcdcdcd, 0x34343434); EdoType typ(0xefefefef); EdoKey key1("first"); EdoKey key2("second"); EdoKey key3("third"); EdoId id1(fid, eid, typ, key1); EdoId id2(fid, eid, typ, key2); EdoId id3(fid, eid, typ, key3); { EdoIdContext ctxt; cout << ctxt << endl; cout << ctxt.max_allowed_index() << endl; assert( ctxt.max_allowed_index() == 511 ); assert( ctxt.max_allowed_index(0) == 511 ); assert( ctxt.max_allowed_index(1) == 1 ); cout << ctxt.max_allowed_index() << endl; assert( ctxt.max_allowed_index() == 1 ); assert( ctxt.max_allowed_index(2) == 2 ); cout << ctxt.max_allowed_index() << endl; assert( ctxt.max_allowed_index() == 2 ); cout << line << endl; } { EdoIdContext ctxt; cout << ctxt << endl; assert( ctxt.max_index() == 0 ); assert( ctxt.size() == 0 ); cout << line << endl; Index idx = 3; cout << "Insert 3 at 3." << endl; assert( ctxt.insert(id3, idx) == idx ); cout << ctxt << endl; assert( ctxt.max_index() == 3 ); assert( ctxt.size() == 1 ); assert( ctxt.edo_id(idx) == id3 ); assert( ctxt.index(id3) == idx ); cout << line << endl; cout << "Insert 2 at 3." << endl; assert( ctxt.insert(id2, idx) == 0 ); cout << ctxt << endl; assert( ctxt.max_index() == 3 ); assert( ctxt.size() == 1 ); assert( ctxt.edo_id(idx) == id3 ); assert( ctxt.index(id3) == idx ); cout << line << endl; idx = 1; cout << "Insert 1." << endl; ctxt.insert(id1); cout << ctxt << endl; assert( ctxt.max_index() == 3 ); assert( ctxt.size() == 2 ); assert( ctxt.edo_id(idx) == id1 ); assert( ctxt.index(id1) == idx ); cout << line << endl; idx = 2; cout << "Insert 2." << endl; assert( ctxt.insert(id2) == 2 ); cout << ctxt << endl; assert( ctxt.max_index() == 3 ); assert( ctxt.size() == 3 ); assert( ctxt.edo_id(idx) == id2 ); assert( ctxt.index(id2) == idx ); cout << line << endl; cout << "Reinsert 2." << endl; assert( ctxt.insert(id2) == 2 ); cout << ctxt << endl; assert( ctxt.max_index() == 3 ); assert( ctxt.size() == 3 ); assert( ctxt.edo_id(idx) == id2 ); assert( ctxt.index(id2) == idx ); cout << line << endl; cout << "Reinsert 2 at 3." << endl; assert( ctxt.insert(id2,3) == 0 ); cout << ctxt << endl; assert( ctxt.max_index() == 3 ); assert( ctxt.size() == 3 ); assert( ctxt.edo_id(idx) == id2 ); assert( ctxt.index(id2) == idx ); cout << line << endl; cout << "Create index vector." << endl; IndexVector idxs; ctxt.write(idxs); assert( idxs.size() > 0 ); cout << "Create new context from index vector." << endl; IndexVector::const_iterator iidx = idxs.begin(); EdoIdContext ctxt2(iidx); cout << ctxt2 << endl; assert( ctxt.size() == 3 ); assert( ctxt.edo_id(1) == id1 ); assert( ctxt.edo_id(2) == id2 ); assert( ctxt.edo_id(3) == id3 ); assert( iidx == idxs.end() ); cout << line << endl; } return 0; }