// DtdRegistry_t.cxx #include "dataset_util/DtdRegistry.h" #include "dataset_util/FileStatus.h" #include #include #include using std::string; using std::cout; using std::endl; namespace { void msg(string msg) { cout << "*** "; cout << msg; cout << endl; } } // end unnamed namespace int DtdRegistry_t() { msg("Begin testing DtdRegistry"); msg("Fetch registry"); DtdRegistry& reg1 = DtdRegistry::instance("System One"); cout << reg1 << endl; cout << reg1.text() << endl; assert( reg1.name() == "System_One" ); assert( reg1.types().size() == 0 ); msg("Add types"); { Text dtd; dtd.append(""); assert( reg1.add_type("Type1", dtd) == 0 ); assert( reg1.add_type("Type1", dtd) != 0 ); } { Text dtd; dtd.append(""); dtd.append(""); assert( reg1.add_type("Type2", dtd) == 0 ); } cout << reg1 << endl; cout << reg1.text() << endl; assert( reg1.types().size() == 2 ); assert( reg1.dtds().size() == 0 ); assert( DtdRegistry::is_registered("Type1") ); assert( DtdRegistry::is_registered("Type2") ); assert( ! DtdRegistry::is_registered("Type3") ); assert( DtdRegistry::system("Type1")->name() == "System_One" ); assert( DtdRegistry::system("Type1")->filename() == "System_One.dtd" ); msg("Add sub-DTD by reference"); DtdRegistry& reg2 = DtdRegistry::instance("System Two"); { Text dtd; dtd.append(""); assert( reg2.add_type("Type21", dtd) == 0 ); } cout << reg2 << endl; assert( reg1.add_dtd(reg2.name()) == 0 ); cout << reg1 << endl; assert( reg1.types().size() == 2 ); assert( reg1.dtds().size() == 1 ); msg("Add sub-DTD by value"); DtdRegistry& reg3 = DtdRegistry::instance("System Threeeee"); { Text dtd; dtd.append(""); assert( reg2.add_type("Type33", dtd) == 0 ); } cout << reg3 << endl; assert( reg1.add_dtd(reg3.name()) == 0 ); cout << reg1 << endl; assert( reg1.types().size() == 2 ); assert( reg1.dtds().size() == 2 ); msg("Display all DTD's"); DtdRegistry::display(cout) << endl; msg("Write file"); string fname = reg1.write(); assert ( fname.size() != 0 ); cout << fname << endl; assert( FileStatus(fname).is_readable() ); string com = "cat " + fname; assert( system(com.c_str()) == 0 ); msg("Test successful"); return 0; } #ifdef CTEST_MAIN int main() { return DtdRegistry_t(); } #endif