85 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
| /* ----------------------------------------------------------------------------
 | |
| 
 | |
|  * GTSAM Copyright 2010, Georgia Tech Research Corporation, 
 | |
|  * Atlanta, Georgia 30332-0415
 | |
|  * All Rights Reserved
 | |
|  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
 | |
| 
 | |
|  * See LICENSE for the license information
 | |
| 
 | |
|  * -------------------------------------------------------------------------- */
 | |
| 
 | |
| 
 | |
| 
 | |
| #include <exception>
 | |
| 
 | |
| #include "Test.h"
 | |
| #include "Failure.h"
 | |
| #include "TestResult.h"
 | |
| #include "TestRegistry.h"
 | |
| 
 | |
| void TestRegistry::addTest (Test *test) 
 | |
| {
 | |
|   instance ().add (test);
 | |
| }
 | |
| 
 | |
| 
 | |
| int TestRegistry::runAllTests (TestResult& result) 
 | |
| {
 | |
|   return instance ().run (result);
 | |
| }
 | |
| 
 | |
| 
 | |
| TestRegistry& TestRegistry::instance () 
 | |
| {
 | |
|   static TestRegistry registry;
 | |
|   return registry;
 | |
| }
 | |
| 
 | |
| 
 | |
| void TestRegistry::add (Test *test) 
 | |
| {
 | |
|   if (tests == 0) {
 | |
|     test->setNext(0);
 | |
|     tests = test;
 | |
|     lastTest = test;
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   test->setNext (0);
 | |
|   lastTest->setNext(test);
 | |
|   lastTest = test;
 | |
| }
 | |
| 
 | |
| 
 | |
| int TestRegistry::run (TestResult& result) 
 | |
| {
 | |
|   result.testsStarted ();
 | |
| 
 | |
|   for (Test *test = tests; test != 0; test = test->getNext ()) {
 | |
|     if (test->safe()) {
 | |
|       try {
 | |
|         test->run (result);
 | |
|       } catch (std::exception& e) {
 | |
|         // catch standard exceptions and derivatives
 | |
|         result.addFailure(
 | |
|             Failure(test->getName(), test->getFilename(), test->getLineNumber(),
 | |
|                 std::string("Exception: ") + std::string(e.what())));
 | |
|       } catch (...) {
 | |
|         // catch all other exceptions
 | |
|         result.addFailure(
 | |
|             Failure(test->getName(), test->getFilename(), test->getLineNumber(),
 | |
|                 "ExceptionThrown!"));
 | |
|       }
 | |
|     }
 | |
|     else {
 | |
|       test->run (result);
 | |
|     }
 | |
|   }
 | |
|   result.testsEnded ();
 | |
|   return result.getFailureCount();
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 |