Files Classes Functions Hierarchy
#include <projunittest.h>
Public Member Functions | |
| projunittest () | |
| Bad state. | |
| projunittest (stringc &filename_) | |
| stringc | xml () const |
| Ouput object as xml. | |
| int | eval () |
| Execute the commands in the shell. | |
| stringc | report () const |
| Loop through commands and calc exit status. | |
Public Attributes | |
| projprint | terminal |
| Print mode. | |
| string | filename |
| Generally testscript*.txt format. | |
| vector< unittestcmd > | vi |
| Command lines associated with the file. | |
Static Public Attributes | |
| static string | fileresults = "unittestreport.txt" |
| Locally saved xml. | |
Definition at line 53 of file projunittest.h.
| projunittest::projunittest | ( | ) |
| projunittest::projunittest | ( | stringc & | filename_ | ) |
| int projunittest::eval | ( | ) |
Execute the commands in the shell.
Definition at line 78 of file projunittest.cpp.
References exitint::exitstatus, filename, fileresults, projprint::issilent(), tokenizer::readaslines(), report(), tokenizer::reset(), filestring::serialize(), filestring::serializeInverse(), terminal, tokenizer::trim_and_prune(), vi, and xml().
Referenced by mkerrorstest::test02().
00079 { 00080 string s1; 00081 if (!filestring::serialize(s1,filename)) 00082 { 00083 cout << "error: Can not open " << filename << "." << endl; 00084 return 1; 00085 } 00086 00087 //cout << SHOW3(s1) << endl; 00088 tokenizer ss; 00089 ss.readaslines(s1); 00090 00091 ss.reset(); 00092 for ( ; !ss; ++ss) 00093 { 00094 vi.push_back( unittestcmd(ss()) ); 00095 } 00096 ss.trim_and_prune(); 00097 00098 //cout << SHOW(vi.size()) << endl; 00099 00100 for (uint i=0; i<vi.size(); ++i) 00101 { 00102 // cout << SHOW(vi[i].line) << endl; 00103 assert(vi[i].line.empty()==false); 00104 vi[i].terminal.changestate(terminal); 00105 } 00106 00107 //cout << SHOW(vi.size()) << endl; 00108 00109 /* 00110 string temp=vi[0].xml(); 00111 cout << SHOW(temp) << endl; 00112 vi[0].eval(); 00113 temp=vi[0].xml(); 00114 cout << SHOW3(temp) << endl; 00115 */ 00116 00117 // for ( uint i=0; i<vi.size(); ++i) 00118 // cout << vi[i].xml() << endl; 00119 00120 // Loop through and execute the commands. 00121 // If one test fails then the unit 00122 // test has failed. 00123 int exitstatus2=0; 00124 for (uint i=0; i<vi.size(); ++i) 00125 { 00126 int status = vi[i].eval(); 00127 if (status != 0) 00128 { 00129 // Only change exitstatus2 on the first error. 00130 if (exitstatus2==0) 00131 exitstatus2=status; 00132 continue; 00133 } 00134 } 00135 exitstatus=exitstatus2; 00136 00137 // write to fileresults 00138 string s2=xml(); 00139 //cout << SHOW3(s2) << endl; 00140 00141 bool res; 00142 res=filestring::serializeInverse(fileresults,s2); 00143 if (res==false) 00144 cout << "error: could not write file " + fileresults << endl; 00145 assert(res); 00146 if ((res==false)&&(exitstatus==0)) 00147 exitstatus=1; 00148 //cout << SHOW(res) << endl; 00149 00150 if (!terminal.issilent()) 00151 cout << report(); 00152 flush(cout); 00153 00154 return exitstatus; 00155 }
| stringc projunittest::report | ( | ) | const |
Loop through commands and calc exit status.
Definition at line 181 of file projunittest.cpp.
References endln, filename, exitint::isvalidtext(), and vi.
Referenced by eval().
00182 { 00183 string s1; 00184 s1 = "Report " + filename + " " + isvalidtext() + endln; 00185 00186 for (uint i=0; i<vi.size(); ++i) 00187 { 00188 s1 += (vi[i].line + endln); 00189 s1 += (" " + vi[i].isvalidtext() + endln); 00190 } 00191 00192 return s1; 00193 }
| stringc projunittest::xml | ( | ) | const |
Ouput object as xml.
Definition at line 157 of file projunittest.cpp.
References exitint::exitstatus, filename, stringtag(), and vi.
Referenced by eval().
00158 { 00159 if (filename.empty()) 00160 return ""; 00161 00162 string s1; 00163 00164 //s1 += stringtag( stringtag(exitstatus,"exitstatus"),"state"); 00165 s1 += stringtag(exitstatus,"exitstatus"); 00166 s1 += stringtag(filename,"file"); 00167 00168 string s2; 00169 00170 for (uint i=0; i<vi.size(); ++i) 00171 s2 += vi[i].xml(); 00172 00173 string s3 = stringtag(s2,"commandlines"); 00174 s1 += s3; 00175 00176 string s4( stringtag(s1,"unittest") ); 00177 00178 return s4; 00179 }
| string projunittest::filename |
string projunittest::fileresults = "unittestreport.txt" [static] |
Print mode.
Definition at line 58 of file projunittest.h.
Referenced by eval(), and mkerrorstest::test02().
| vector<unittestcmd> projunittest::vi |
1.5.8