proj home

Files   Classes   Functions   Hierarchy  

projunittests Class Reference

Unit test each test script in the directory. More...

#include <projunittests.h>

Inheritance diagram for projunittests:
Collaboration diagram for projunittests:

List of all members.

Public Member Functions

stringc xml () const
 Output object as xml.
int eval ()
 Look for testscript*.txt files and interpret as unit tests.
stringc report () const

Public Attributes

projprint terminal
 Print mode.
vector< projunittestvi
 Collected unit tests.

Static Public Attributes

static string fileresults = "unittestsreport.txt"
 Locally saved xml.
static string tempfile = "/tmp/proj829849.txt"


Detailed Description

Unit test each test script in the directory.

Convention testscript*.txt

Definition at line 17 of file projunittests.h.


Member Function Documentation

int projunittests::eval (  ) 

Look for testscript*.txt files and interpret as unit tests.

Definition at line 40 of file projunittests.cpp.

References projprint::changestate(), systemcalls::eval(), exitint::exitstatus, fileresults, projprint::issilent(), projprint::issummary(), systemcalls::output(), tokenizer::readaslinesgeneral(), report(), tokenizer::reset(), filestring::serializeInverse(), tempfile, terminal, vi, and xml().

Referenced by mkerrorstest::test03().

00041 {
00042   string line("ls testscript*.txt");
00043   systemcalls sys(line,tempfile);
00044   exitstatus=sys.eval();
00045   tokenizer tk;
00046   tk.readaslinesgeneral(sys.output());
00047   for ( tk.reset(); !tk; ++tk)
00048     vi.push_back( projunittest(tk()) );
00049 
00050   int status;
00051   for (uint i=0; i<vi.size(); ++i)
00052   {
00053     if (terminal.issummary()==false)
00054       vi[i].terminal.changestate(terminal);
00055     else
00056       vi[i].terminal.setsilent();
00057     status=vi[i].eval();
00058     if ((exitstatus==0)&&(status!=0))
00059       exitstatus=status;   
00060   }
00061 
00062   // Write the xml file.
00063   string s2=xml();
00064   bool res;
00065   res=filestring::serializeInverse(fileresults,s2);
00066   if (res==false)
00067     cout << "error: could not write file " + fileresults << endl;
00068   assert(res);
00069   if ((res==false)&&(exitstatus==0))
00070     exitstatus=1;
00071 
00072   if (!terminal.issilent())
00073     cout << report();
00074   flush(cout);
00075 
00076   return exitstatus;
00077 }

stringc projunittests::report (  )  const

Definition at line 105 of file projunittests.cpp.

References endln, exitint::isvalidtext(), and vi.

Referenced by eval().

00106 {
00107   string s1;
00108   s1 = "Report unit tests  " + isvalidtext() + endln;
00109 
00110   for (uint i=0; i<vi.size(); ++i)
00111   {
00112     s1 += vi[i].report();
00113   }
00114 
00115   return s1;
00116 }

stringc projunittests::xml (  )  const

Output object as xml.

Definition at line 23 of file projunittests.cpp.

References exitint::exitstatus, stringtag(), stringtrim(), and vi.

Referenced by eval().

00024 {
00025   string s1;
00026   string s2 = stringtag(exitstatus,"exitstatus"); 
00027   s1 += stringtag(s2,"status");
00028 
00029   string   time = stringtrim( systemcallseval("echo `date +%Y`-`date +%m`-`date +%d`\\ `date +%k`:`date +%M`:`date +%S`").output() );
00030   s1 += stringtag(time,"time");
00031 
00032   string s3;
00033   for (uint i=0; i<vi.size(); ++i)
00034     s3 += vi[i].xml();
00035   s1 += stringtag(s3,"vi");
00036 
00037   return stringtag(s1,"unittestsreport");
00038 }


Member Data Documentation

string projunittests::fileresults = "unittestsreport.txt" [static]

Locally saved xml.

Definition at line 35 of file projunittests.h.

Referenced by eval(), and modulereport::reset().

string projunittests::tempfile = "/tmp/proj829849.txt" [static]

Definition at line 37 of file projunittests.h.

Referenced by eval().

Print mode.

Definition at line 22 of file projunittests.h.

Referenced by eval(), and mkerrorstest::test03().

Collected unit tests.

Definition at line 25 of file projunittests.h.

Referenced by eval(), report(), and xml().


The documentation for this class was generated from the following files:

Generated on Fri Mar 4 00:50:11 2011 for Chelton Evans Source by  doxygen 1.5.8