86 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			86 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"
 | |
| #include "SimpleString.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(),
 | |
| 								SimpleString("Exception: ") + SimpleString(e.what())));
 | |
| 			} catch (...) {
 | |
| 				// catch all other exceptions
 | |
| 				result.addFailure(
 | |
| 						Failure(test->getName(), test->getFilename(), test->getLineNumber(),
 | |
| 								SimpleString("ExceptionThrown!")));
 | |
| 			}
 | |
| 		}
 | |
| 		else {
 | |
| 			test->run (result);
 | |
| 		}
 | |
| 	}
 | |
| 	result.testsEnded ();
 | |
| 	return result.getFailureCount();
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 |