// DefaultDatasetMerger_t.cxx #include "dataset_split/DefaultDatasetMerger.h" #include #include #include "dataset_util/getcwd.h" #include "dataset_util/Environment.h" #include "dataset_util/XmlElement.h" #include "dataset_util/DtdRegistry.h" #include "dataset_util/DtdRegistry.h" #include "dataset_base/Dataset_t.h" #include "dataset_base/DatasetRepository.h" using std::string; using std::cout; using std::endl; using dset::DatasetList; using dset::Dataset; using dset::DatasetMergeResult; using dset::DatasetMerger; using dset::DatasetRepository; using dset::DefaultDatasetMerger; void msg(string txt) { cout << "*** "; cout << txt; cout << " ***" << endl; } bool check(int value, int expect =0) { if ( value != expect ) { cout << "Expected " << expect << "; found " << value << endl; } return value == expect; } int DefaultDatasetMerger_t() { msg("Create test DR"); assert( DatasetRepository::create_default_instance() == 0 ); msg("Create dataset 1"); TestDataset dst1; dst1.lock(); cout << dst1 << endl; msg("Create dataset 2"); TestDataset dst2; dst2.lock(); cout << dst2 << endl; msg("Create dataset 3"); TestDataset dst3; dst3.lock(); cout << dst3 << endl; msg("Create merger"); DefaultDatasetMerger merger(getcwd()); cout << merger << endl; assert( merger.is_valid() ); assert( merger.is_open() ); msg("Merge datasets"); assert( merger.append(dst1) == 0 ); assert( merger.append(dst2) == 0 ); cout << merger << endl; assert( merger.is_valid() ); msg("Fetch result"); DatasetMergeResult res = merger.result(); cout << res << endl; assert( res.is_valid() ); assert( res.input_datasets().size() == 2 ); assert( res.merged_datasets().size() == 2 ); assert( res.rejected_datasets().size() == 0 ); const Dataset* pdst = res.dataset(); assert( pdst != 0 ); assert( pdst->is_valid() ); assert( pdst->is_locked() ); assert( res.dataset() == pdst ); msg("Merge another dataset"); assert( merger.append(dst3) == 0 ); cout << merger << endl; res = merger.result(); assert( res.merged_datasets().size() == 3 ); assert( res.dataset() != pdst ); assert( res.dataset() != 0 ); msg("Close"); assert( merger.close() == 0 ); assert( ! merger.is_open() ); msg("Testing complete"); return 0; } #ifdef CTEST_MAIN int main() { return DefaultDatasetMerger_t(); } #endif