// XmlParser_t.cxx #include "dataset_xml/XmlParser.h" #include #include #include #include #include "dataset_util/DtdRegistry.h" using std::string; using std::ostream; using std::cout; using std::endl; void msg(const char* msg) { cout << "----- "; cout << msg; cout << " -----" << endl; } bool check(int stat) { if ( stat == 0 ) return true; cout << "Status is " << stat << endl; return false; } int XmlParser_t() { // Create XML for two objects. string xfile1 = "test_env1.xml"; string xfile2 = "test_env2.xml"; { Text xml; xml.append(""); xml.append(""); xml.append(""); xml.append( "" ); xml.write(xfile1); } { Text xml; xml.append(""); xml.append(""); xml.append(""); xml.append( "" ); xml.write(xfile2); } msg("Parse"); { XmlParser par; const XmlElement* pele = par.parse(xfile1); cout << *pele << endl; assert( pele->name() == "Text" ); msg("Parse again"); const XmlElement* pele1 = par.parse(xfile1); cout << *pele1 << endl; assert( pele->name() == "Text" ); msg("Parse new file"); const XmlElement* pele2 = par.parse(xfile2); cout << *pele2 << endl; assert( pele->name() == "Text" ); msg("Write"); assert( check(par.write(xfile1, *pele)) ); { string newfile = "new" + xfile1; string com1 = "if test -r " + newfile + "; then rm " + newfile + "; fi"; assert( system(com1.c_str()) == 0 ); string com = "test -r " + newfile; assert( system(com.c_str()) != 0 ); assert( par.write(newfile, *pele) == 0 ); assert( system(com.c_str()) == 0 ); msg("..Read back"); const XmlElement* pele3 = par.parse(newfile); assert( pele3 != 0 ); cout << *pele3 << endl; assert( pele3->name() == "Text" ); assert( pele->to_xml_text() == pele3->to_xml_text() ); } delete pele; } msg("Parse text"); { XmlParser par; string xtxt = ""; const XmlElement* pele = par.parse(xtxt); assert( pele != 0 ); cout << *pele << endl; assert( pele->name() == "Text" ); } msg("All tests passed."); return 0; } #ifdef CTEST_MAIN int main() { return XmlParser_t(); } #endif