// Dataset_t.cxx #include "dataset_base/Dataset_t.h" #include #include "dataset_id/SimpleUniqueIdGenerator.h" using std::cout; using std::endl; using dset::Url; using dset::Content; using dset::Location; using dset::Dataset; using dset::DatasetList; void msg(const char* msg) { cout << "----- "; cout << msg; cout << " -----" << endl; } class TestDataset2 : public Dataset { }; int Dataset_t() { msg("Check ID generator"); SimpleUniqueIdGenerator::create_collection("Dataset", 123, 1001); SimpleUniqueIdGenerator::set_as_default(); assert( Dataset::id_generator().is_global() ); Dataset::set_local_id_generator(); assert( Dataset::id_generator().is_valid() ); assert( ! Dataset::id_generator().is_global() ); Dataset::reset_id_generator(); assert( Dataset::id_generator().is_global() ); msg("Create invalid dataset"); TestDataset invalid_dst(false); assert( ! invalid_dst.is_valid() ); msg("Create virtual test dataset"); TestDataset tdst; Dataset& mdst = tdst; const Dataset& dst = mdst; cout << dst << endl; assert( dst.is_valid() ); assert( ! dst.is_locked() ); assert( dst.id().is_valid() ); assert( dst.parent() == 0 ); msg("Fetch XML"); const XmlElement* pxdst = dst.xml(); assert( pxdst == 0 ); msg("Lock"); assert( ! dst.is_locked() ); mdst.lock(); cout << dst << endl; assert( dst.is_locked() ); msg("Location"); assert( dst.location().is_empty() ); assert( dst.is_virtual() ); msg("Fetch XML"); pxdst = dst.xml(); assert( pxdst != 0 ); cout << *pxdst << endl; delete pxdst; msg("Clone"); Dataset* pdst_clone = dst.clone(); assert( pdst_clone != 0 ); assert( ! pdst_clone->is_locked() ); cout << *pdst_clone << endl; msg("Comparison"); assert( ! (dst < dst) ); TestDataset dst2; cout << dst2 << endl; assert( dst < dst2 ); msg("Cast from const"); assert( dst.is() ); assert( dst.is() ); assert( ! dst.is() ); cout << dst.cast() << endl; msg("Cast from mutable"); assert( mdst.is() ); assert( mdst.is() ); assert( ! mdst.is() ); cout << mdst.cast() << endl; msg("Create location"); Location loc; Text txt1("myfile1.dat"); txt1.append("data file"); txt1.write(); loc.files().push_back(Url("file:" + txt1.name())); cout << loc << endl; assert( ! loc.is_empty() ); msg("Create non-virtual test dataset"); Content con; TestDataset tdst3(con, loc); assert( ! tdst3.location().is_empty() ); assert( ! tdst3.is_virtual() ); msg("Create list"); DatasetList dsts; cout << dsts << endl; assert( dsts.size() == 0 ); msg("Add some datasets"); dsts.push_back(0); dsts.push_back(&dst); dsts.push_back(&dst2); cout << dsts << endl; assert( dsts.size() == 3 ); assert( ! is_valid(dsts) ); msg("Memory report"); cout << Dataset::memory_report() << endl; return 0; } #ifdef CTEST_MAIN int main() { return Dataset_t(); } #endif