From 1e1217e49bcac9228e37c7b6868d63da900ab07f Mon Sep 17 00:00:00 2001 From: deva Date: Fri, 7 Aug 2009 13:00:10 +0000 Subject: Unit test and header documentation. --- server/src/widgetgenerator.cc | 121 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) (limited to 'server/src/widgetgenerator.cc') diff --git a/server/src/widgetgenerator.cc b/server/src/widgetgenerator.cc index f8f3790..1e60479 100644 --- a/server/src/widgetgenerator.cc +++ b/server/src/widgetgenerator.cc @@ -198,3 +198,124 @@ std::string widgetgenerator(std::string cpr, Macro ¯o, LUAQueryMapper &mappe return send_macro_widget(macro, macro.widgets, " ", mapper, values); } + +#ifdef TEST_WIDGETGENERATOR + +#include + +#define PATIENTID "1234567890" + +int main() +{ + time_t now = time(NULL); + + printf("Test pretty printer:\n"); + { + Macro macro; + macro.widgets.attributes["tagname"] = "lineedit"; + macro.widgets.attributes["name"] = "mywidget"; + macro.widgets.attributes["value"] = "myvalue"; + macro.widgets.attributes["map"] = "mapvalue"; + macro.widgets.widgets.push_back(macro.widgets); + + Database db("testdb", "", "", "", "", ""); + LUAQueryMapper mapper; + std::string result; + Fields fields; + QueryResult queryresult; + + // Test simple + result = widgetgenerator(PATIENTID, macro, mapper, db); + printf("[%s]\n", result.c_str()); + if(result != " \n" + " \n" + " \n") return 1; + } + + printf("Positive tests:\n"); + { + Macro macro; + macro.widgets.attributes["tagname"] = "lineedit"; + macro.widgets.attributes["name"] = "mywidget"; + macro.widgets.attributes["value"] = "myvalue"; + macro.widgets.attributes["map"] = "mapvalue"; + + Database db("testdb", "", "", "", "", ""); + LUAQueryMapper mapper; + std::string result; + Fields fields; + QueryResult queryresult; + + // Test simple + result = widgetgenerator(PATIENTID, macro, mapper, db); + printf("[%s]\n", result.c_str()); + if(result != " \n") return 1; + + // Make a database commit and test if the value shows up + fields["mywidget"] = "testval"; + db.commitTransaction("testuser", PATIENTID, macro, fields, now); + + result = widgetgenerator(PATIENTID, macro, mapper, db); + printf("[%s]\n", result.c_str()); + if(result != " \n") return 1; + + // Make a query result (newer than the db value) and see if it shows up + queryresult.timestamp = now + 1; + queryresult.source = "testsource"; + queryresult.values["mapvalue"] = "mymapvalue"; + mapper.addQueryResult(queryresult); + + result = widgetgenerator(PATIENTID, macro, mapper, db); + printf("[%s]\n", result.c_str()); + if(result != " \n") return 1; + + // Make another db value (newer than the query result) and see if it shows up. + fields["mywidget"] = "testval2"; + db.commitTransaction("testuser", PATIENTID, macro, fields, now + 2); + + result = widgetgenerator(PATIENTID, macro, mapper, db); + printf("[%s]\n", result.c_str()); + if(result != " \n") return 1; + } + + printf("Negative tests:\n"); + { + Macro macro; + macro.widgets.attributes["tagname"] = "lineedit"; + macro.widgets.attributes["name"] = "mywidget"; + macro.widgets.attributes["value"] = "myvalue"; + macro.widgets.attributes["map"] = "mapvalue"; + + Database db("testdb", "", "", "", "", ""); + LUAQueryMapper mapper; + std::string result; + Fields fields; + QueryResult queryresult; + + // Test simple + result = widgetgenerator(PATIENTID, macro, mapper, db); + printf("[%s]\n", result.c_str()); + if(result != " \n") return 1; + + // Make a database commit too old, and test if the value shows up + fields["mywidget"] = "testval"; + db.commitTransaction("testuser", PATIENTID, macro, fields, now - Conf::db_max_ttl - 1); + + result = widgetgenerator(PATIENTID, macro, mapper, db); + printf("[%s]\n", result.c_str()); + if(result == " \n") return 1; + + // Make a too old query result (newer than the db value) and see if it shows up + queryresult.timestamp = now - Conf::pentominos_max_ttl - 1; + queryresult.source = "testsource"; + queryresult.values["mapvalue"] = "mymapvalue"; + mapper.addQueryResult(queryresult); + + result = widgetgenerator(PATIENTID, macro, mapper, db); + printf("[%s]\n", result.c_str()); + if(result == " \n") return 1; + } + return 0; +} + +#endif/*TEST_WIDGETGENERATOR*/ -- cgit v1.2.3