aboutsummaryrefslogtreecommitdiffstats
path: root/meowpp.test/src/dsa.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'meowpp.test/src/dsa.cpp')
-rw-r--r--meowpp.test/src/dsa.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/meowpp.test/src/dsa.cpp b/meowpp.test/src/dsa.cpp
new file mode 100644
index 0000000..9b93395
--- /dev/null
+++ b/meowpp.test/src/dsa.cpp
@@ -0,0 +1,80 @@
+#include "dsa.h"
+
+#include <vector>
+#include <string>
+#include <cstdlib>
+#include <ctime>
+
+#include "meowpp/Usage.h"
+
+////////////////////////////
+meow::Usage usg("meowpp"), usg2;
+int count = 0;
+////////////////////////
+
+int main(int argc, char** argv){
+ std::vector<std::string> ids(meow::ObjSelector<0>::names());
+ usg2.optionAdd('t', "Select which subject to test",
+ "<number>", "",
+ false);
+ for(size_t i = 0; i < ids.size(); i++){
+ TestFunction* tmp = (TestFunction*)meow::ObjSelector<0>::get(ids[i]);
+ usg2.optionValueAcceptAdd('t', ids[i], tmp->name() + ", " + tmp->description());
+ }
+
+ usg.optionAdd('h', "Display this help document");
+ usg.usageBeginAdd("<name> is a little test program to check whether"
+ "the data structures in the template is correct by"
+ "random generate lots of data to test");
+ usg.usageEndAdd ("zzzzzzzzzzzzzzz....");
+ usg.import(usg2);
+
+ std::string err;
+ if(usg.arguments(argc, argv, &err) == false){
+ printf("%s\n\n%s\n", err.c_str(), usg.usage().c_str());
+ return 1;
+ }else if(usg.hasOptionSetup('h')){
+ printf("%s", usg.usage().c_str());
+ return 0;
+ }else{
+ usg2.update(usg);
+ if(usg2.optionValuesSize('t') > 0){
+ for(int i = 0, I = usg2.optionValuesSize('t'); i < I; i++){
+ std::string wh = usg2.optionValue('t', i);
+ TestFunction* f = (TestFunction*)meow::ObjSelector<0>::get(wh);
+ if(f->run() == false){
+ printf("error occure on %s\n", f->name().c_str());
+ return 1;
+ }else{
+ printf("%s success\n", f->name().c_str());
+ }
+ }
+ }else{
+ while(true){
+ for(int i = 0, I = ids.size(); i < I; i++){
+ TestFunction* tmp = (TestFunction*)meow::ObjSelector<0>::get(ids[i]);
+ printf(" %s) %s\n", ids[i].c_str(), tmp->name().c_str());
+ }
+ printf("please select(EOF to quit): ");
+ int id;
+ if(!~scanf("%d", &id)){
+ break;
+ }
+ printf("\n");
+ TestFunction* f = (TestFunction*)meow::ObjSelector<0>::get(meow::stringPrintf("%d", id));
+ if(f == NULL){
+ printf("Bad value!\n\n");
+ continue;
+ }
+ if(f->run() == false){
+ printf("error occure on %s\n", f->name().c_str());
+ return 1;
+ }else{
+ printf("%s success\n", f->name().c_str());
+ }
+ }
+ printf("\n");
+ }
+ }
+ return 0;
+}