//SqlResult_t.cxx #include "dataset_sql/SqlResult.h" #include "dataset_sql/SelectQuery.h" #include "dataset_sql/InsertQuery.h" #include "dataset_sql/DeleteQuery.h" #include #include using std::string; using std::cout; using std::endl; using dset::SelectQuery; using dset::InsertQuery; using dset::DeleteQuery; using dset::SqlResult; typedef SqlResult::Row Row; void msg(string txt) { cout << "--- " << txt << " ---" << endl; } int SqlResult_t() { msg("Begin testing SqlResult"); string names[9] = { "identifier", "idhi", "idlo", "sxml", "owner", "ctime", "comment", "created", "lastModified" }; SqlResult::NameList cols(names, names+9); SqlResult res(cols); msg("Insert a row"); Row row1; row1["idhi"] = "400"; row1["idlo"] = "1"; assert( res.insert_row(row1) == 0 ); assert( res.num_rows() == 1 ); msg("Insert another row"); Row row2; row2["idhi"] = "400"; row2["idlo"] = "2"; row2["owner"] = "abcd"; assert( res.insert_row(row2) == 0 ); assert( res.num_rows() == 2 ); msg("Insert an invalid row"); Row row3; row3["idhi"] = "400"; row3["name"] = "abc"; assert( res.insert_row(row3) != 0 ); msg("Fetch a row"); Row row; row = res.fetch_row(0); assert( row.size() != 0 ); msg("Fetch an invalid row"); row = res.fetch_row(3); assert( row.size() == 0 ); msg("Result set after insertion of 2 rows"); cout << res << endl; msg("Testing execute_select_query"); SelectQuery query("idlo,owner","idhi = 400 and idlo = 2"); SqlResult res1 = res.execute_select_query(query); assert(res1.is_valid()); msg("Result after execution of select query"); cout << res1 << endl; msg("Testing execute_insert_query"); Row ins_row; ins_row["idhi"] = "800"; ins_row["idlo"] = "800"; InsertQuery insquery(ins_row); assert(res.execute_insert_query(insquery) == 0); msg("Result after execution of insert query"); cout << res << endl; msg("Testing execute_update_query"); Row updaterow; updaterow["idhi"] = "400"; updaterow["idlo"] = "2"; updaterow["owner"] = "defg"; InsertQuery iquery(updaterow); SelectQuery squery("", "idhi = 400 and idlo = 2"); assert(res.execute_update_query(iquery, squery) == 0); msg("Result after execution of update query"); cout << res << endl; msg("Testing execute_delete_query"); DeleteQuery delquery("idhi = 800 and idlo = 800"); assert(res.execute_delete_query(delquery) == 0); msg("Result after execution of delete query"); cout << res << endl; msg("End Testing SqlResult"); return 0; } #ifdef CTEST_MAIN int main() { return SqlResult_t(); } #endif