Salome HOME
debug of tests
[modules/hydro.git] / src / HYDRO_tests / TestLib_Listener.cxx
index 593c8d6e29b3404c4531c09bbf312c39fb9692e8..7c79e858d763a15bd30a16b5719844002e3920ab 100644 (file)
 
 #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>
@@ -69,7 +72,7 @@ INT64 GetTimeForCurrentThreadInMs()
   \brief Constructor
 */
 TestLib_Listener::TestLib_Listener()
-: myStart( 0 ), myComplete( 0 )
+: myStart( 0 ), myComplete( 0 ), myNbTests( 0 ), myNbSuites( 0 )
 {
 }
 
@@ -122,6 +125,18 @@ void TestLib_Listener::endTest( CppUnit::Test* theTest )
   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;
 }
 
 /**
@@ -138,6 +153,7 @@ void TestLib_Listener::startSuite( CppUnit::Test* theTest )
 */
 void TestLib_Listener::endSuite( CppUnit::Test* theTest )
 {
+  myNbSuites++;
 }
 
 /**
@@ -146,5 +162,27 @@ void TestLib_Listener::endSuite( CppUnit::Test* theTest )
 */
 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() );
+}