#include <TestLib_Listener.h>
#include <cppunit/Test.h>
+#include <cppunit/TestFailure.h>
+#include <cppunit/SourceLine.h>
#include <iostream>
+#include <QStringList>
#ifdef WIN32
#include <windows.h>
\brief Constructor
*/
TestLib_Listener::TestLib_Listener()
-: myStart( 0 ), myComplete( 0 )
+: myStart( 0 ), myComplete( 0 ), myNbTests( 0 ), myNbSuites( 0 )
{
}
INT64 anExecTimeMS = aCurTime - myStart;
myComplete += anExecTimeMS;
std::cout << " " << anExecTimeMS << " ms" << std::endl;
+
+ myNbTests++;
+}
+
+int TestLib_Listener::GetNbTests() const
+{
+ return myNbTests;
+}
+
+int TestLib_Listener::GetNbSuites() const
+{
+ return myNbSuites;
}
/**
*/
void TestLib_Listener::endSuite( CppUnit::Test* theTest )
{
+ myNbSuites++;
}
/**
*/
void TestLib_Listener::addFailure( const CppUnit::TestFailure& theFailure )
{
+ std::string failedTest = theFailure.failedTest()->getName();
+ CppUnit::SourceLine failedLocation = theFailure.sourceLine();
+
+ QString aFile = QString::fromStdString( failedLocation.fileName() );
+ aFile.replace( '\\', '/' );
+ QStringList parts = aFile.split( '/' );
+ aFile = parts.last();
+ std::string cFile = aFile.toStdString();
+
+ int aLine = failedLocation.lineNumber();
+
+ static char aBuf[1024];
+ sprintf( aBuf, "Failed %s: %s : %i", failedTest.c_str(), cFile.c_str(), aLine );
+
+ myFailures.push_back( aBuf );
}
+void TestLib_Listener::DumpFailures()
+{
+ int n = (int)myFailures.size();
+ printf( "FAILED TESTS: %i\n", n );
+ for( int i=0; i<n; i++ )
+ printf( " %s\n", myFailures[i].c_str() );
+}
#pragma once
#include <cppunit/TestListener.h>
+#include <vector>
+#include <string>
typedef long long INT64; ///< the cross-platform type definition for 64-bits integer
void Clear();
INT64 GetCompleteTimeInMS() const;
+ int GetNbTests() const;
+ int GetNbSuites() const;
+ void DumpFailures();
virtual void startTest( CppUnit::Test* );
virtual void endTest( CppUnit::Test* );
private:
INT64 myStart; ///< start time in milliseconds
INT64 myComplete; ///< complete time of all tests execution in milliseconds
+ int myNbTests;
+ int myNbSuites;
+ std::vector<std::string> myFailures;
};
return 0;
}
bool isOK = result.wasSuccessful();
+
+#ifndef WIN32
DEBTRACE("End of tests");
+#endif
+
aWindow->close();
aSession.closeSession();
anApp.exit(!isOK);
+
+#ifndef WIN32
DEBTRACE("--- TODO: exception on exit..."); // TODO: exception on exit...
+#endif
int ms = progress.GetCompleteTimeInMS();
+ printf( "\n\n" );
+ printf( "%i TESTS in %i SUITES\n", progress.GetNbTests(), progress.GetNbSuites() );
printf( "COMPLETE TESTS TIME: %i ms\n", ms );
+ progress.DumpFailures();
return result.wasSuccessful() ? 0 : 1;
}