diff --git a/alib2/test-src/main.cpp b/alib2/test-src/main.cpp
index fdbbccd10a4fe8cc92d5204d2cd186b310040a4d..3fc603d66dd8d59871e3bc95a78b4cf6f5d263fd 100644
--- a/alib2/test-src/main.cpp
+++ b/alib2/test-src/main.cpp
@@ -2,10 +2,92 @@
 #include <cppunit/CompilerOutputter.h>
 #include <cppunit/extensions/TestFactoryRegistry.h>
 #include <cppunit/ui/text/TestRunner.h>
+#include <cppunit/TestResultCollector.h>
+#include <cppunit/TestResult.h>
 
+#include <cppunit/Test.h>
+#include <cppunit/TestFailure.h>
+#include <cppunit/portability/Stream.h>
+#include <cppunit/TestListener.h>
+
+CPPUNIT_NS_BEGIN
+
+class CPPUNIT_API TestProgressListener : public TestListener
+{
+public:
+  TestProgressListener();
+
+  virtual ~TestProgressListener();
+
+  void startTest( Test *test );
+
+  void addFailure( const TestFailure &failure );
+
+  void endTest( Test *test );
+
+  int getResult() const;
+private:
+  TestProgressListener( const TestProgressListener &copy );
+
+  void operator =( const TestProgressListener &copy );
+
+private:
+  int m_Result;
+  bool m_lastTestFailed;
+};
+
+TestProgressListener::TestProgressListener() : m_Result( 0 ), m_lastTestFailed( false )
+{
+}
+
+TestProgressListener::~TestProgressListener()
+{
+}
+
+void TestProgressListener::startTest( Test * test )
+{
+	stdCOut() << test->getName() << ":\n";
+	stdCOut().flush();
+
+	m_lastTestFailed = false;
+}
+
+void TestProgressListener::addFailure( const TestFailure &failure )
+{
+	stdCOut() << " : " << (failure.isError() ? "error" : "assertion");
+
+	m_lastTestFailed = true;
+	m_Result++;
+}
+
+void TestProgressListener::endTest( Test * test)
+{
+	stdCOut() << "Result (" << test->getName() << "):";
+	stdCOut().flush();
+
+	if ( !m_lastTestFailed )
+		stdCOut() <<  " : OK";
+	else
+		stdCOut() << " : Fail";
+	stdCOut() << "\n\n";
+}
+
+int TestProgressListener::getResult() const {
+	return m_Result;
+}
+
+CPPUNIT_NS_END
 
 int main(int , char*[])
 {
+  CppUnit::TestResult controller;
+
+  CppUnit::TestResultCollector result;
+  controller.addListener( &result );
+
+  CppUnit::TestProgressListener progressListener;
+  controller.addListener( &progressListener );
+
   // Get the top level suite from the registry
   CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
 
@@ -17,8 +99,7 @@ int main(int , char*[])
   runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(),
                                                        std::cerr ) );
   // Run the tests.
-  bool wasSucessful = runner.run();
+  runner.run( controller );
 
-  // Return error code 1 if the one of test failed.
-  return wasSucessful ? 0 : 1;
+  return progressListener.getResult();
 }