]> SALOME platform Git repositories - modules/kernel.git/blob - src/Basics/Test/BasicMainTest.hxx
Salome HOME
PR: merge from branch BR_UnitTests tag mergeto_trunk_17oct05
[modules/kernel.git] / src / Basics / Test / BasicMainTest.hxx
1 #ifndef _BASICMAINTEST_HXX_
2 #define _BASICMAINTEST_HXX_
3
4 #include <cppunit/CompilerOutputter.h>
5 #include <cppunit/TestResult.h>
6 #include <cppunit/TestResultCollector.h>
7 #include <cppunit/TextTestProgressListener.h>
8 #include <cppunit/BriefTestProgressListener.h>
9 #include <cppunit/extensions/TestFactoryRegistry.h>
10 #include <cppunit/TestRunner.h>
11 #include <stdexcept>
12
13 #include <iostream>
14 #include <fstream>
15
16 // ============================================================================
17 /*!
18  *  Main program source for Unit Tests with cppunit package does not depend
19  *  on actual tests, so we use the same for all partial unit tests.
20  */
21 // ============================================================================
22
23 int main(int argc, char* argv[])
24 {
25   // --- Create the event manager and test controller
26   CPPUNIT_NS::TestResult controller;
27
28   // ---  Add a listener that colllects test result
29   CPPUNIT_NS::TestResultCollector result;
30   controller.addListener( &result );        
31
32   // ---  Add a listener that print dots as test run.
33 #ifdef WIN32
34   CPPUNIT_NS::TextTestProgressListener progress;
35 #else
36   CPPUNIT_NS::BriefTestProgressListener progress;
37 #endif
38   controller.addListener( &progress );      
39
40   // ---  Get the top level suite from the registry
41
42   CPPUNIT_NS::Test *suite =
43     CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest();
44
45   // ---  Adds the test to the list of test to run
46
47   CPPUNIT_NS::TestRunner runner;
48   runner.addTest( suite );
49   runner.run( controller);
50
51   // ---  Print test in a compiler compatible format.
52
53   std::ofstream testFile;
54   testFile.open("UnitTestsResult", std::ios::out |  std::ios::trunc);
55   //CPPUNIT_NS::CompilerOutputter outputter( &result, std::cerr );
56   CPPUNIT_NS::CompilerOutputter outputter( &result, testFile );
57   outputter.write(); 
58
59   // ---  Run the tests.
60
61   bool wasSucessful = result.wasSuccessful();
62   testFile.close();
63
64   // ---  Return error code 1 if the one of test failed.
65
66   return wasSucessful ? 0 : 1;
67 }
68
69 #endif