| 
									
										
										
										
											2012-05-09 19:37:14 +01:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  *  Created by Phil Nash on 23/02/2012. | 
					
						
							|  |  |  |  *  Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  Distributed under the Boost Software License, Version 1.0. (See accompanying | 
					
						
							|  |  |  |  *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2012-02-23 08:49:52 +00:00
										 |  |  | #ifndef TWOBLUECUBES_CATCH_TOTALS_HPP_INCLUDED
 | 
					
						
							|  |  |  | #define TWOBLUECUBES_CATCH_TOTALS_HPP_INCLUDED
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-09-28 19:21:14 +01:00
										 |  |  | #include <cstddef>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-15 23:58:23 +01:00
										 |  |  | namespace Catch { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     struct Counts { | 
					
						
							| 
									
										
										
										
											2014-07-03 08:09:57 +01:00
										 |  |  |         Counts() : passed( 0 ), failed( 0 ), failedButOk( 0 ) {} | 
					
						
							| 
									
										
										
										
											2012-02-23 18:51:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-23 18:58:56 +01:00
										 |  |  |         Counts operator - ( Counts const& other ) const { | 
					
						
							| 
									
										
										
										
											2012-02-23 18:51:21 +00:00
										 |  |  |             Counts diff; | 
					
						
							|  |  |  |             diff.passed = passed - other.passed; | 
					
						
							|  |  |  |             diff.failed = failed - other.failed; | 
					
						
							| 
									
										
										
										
											2014-07-03 08:09:57 +01:00
										 |  |  |             diff.failedButOk = failedButOk - other.failedButOk; | 
					
						
							| 
									
										
										
										
											2012-02-23 18:51:21 +00:00
										 |  |  |             return diff; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-04-23 18:58:56 +01:00
										 |  |  |         Counts& operator += ( Counts const& other ) { | 
					
						
							| 
									
										
										
										
											2012-05-22 08:56:11 +01:00
										 |  |  |             passed += other.passed; | 
					
						
							|  |  |  |             failed += other.failed; | 
					
						
							| 
									
										
										
										
											2014-07-03 08:09:57 +01:00
										 |  |  |             failedButOk += other.failedButOk; | 
					
						
							| 
									
										
										
										
											2012-05-22 08:56:11 +01:00
										 |  |  |             return *this; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-07-03 19:14:59 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-10 21:46:46 +01:00
										 |  |  |         std::size_t total() const { | 
					
						
							| 
									
										
										
										
											2014-07-03 08:09:57 +01:00
										 |  |  |             return passed + failed + failedButOk; | 
					
						
							| 
									
										
										
										
											2012-02-24 08:59:35 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2014-07-09 18:24:24 +01:00
										 |  |  |         bool allPassed() const { | 
					
						
							|  |  |  |             return failed == 0 && failedButOk == 0; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2014-12-30 18:24:31 +00:00
										 |  |  |         bool allOk() const { | 
					
						
							|  |  |  |             return failed == 0; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-07-03 19:14:59 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-23 08:49:52 +00:00
										 |  |  |         std::size_t passed; | 
					
						
							|  |  |  |         std::size_t failed; | 
					
						
							| 
									
										
										
										
											2014-07-03 08:09:57 +01:00
										 |  |  |         std::size_t failedButOk; | 
					
						
							| 
									
										
										
										
											2012-02-23 08:49:52 +00:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2013-07-03 19:14:59 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-15 23:58:23 +01:00
										 |  |  |     struct Totals { | 
					
						
							| 
									
										
										
										
											2013-07-03 19:14:59 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-23 18:58:56 +01:00
										 |  |  |         Totals operator - ( Totals const& other ) const { | 
					
						
							| 
									
										
										
										
											2012-02-23 18:51:21 +00:00
										 |  |  |             Totals diff; | 
					
						
							|  |  |  |             diff.assertions = assertions - other.assertions; | 
					
						
							|  |  |  |             diff.testCases = testCases - other.testCases; | 
					
						
							|  |  |  |             return diff; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2012-05-22 08:56:11 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-23 18:58:56 +01:00
										 |  |  |         Totals delta( Totals const& prevTotals ) const { | 
					
						
							| 
									
										
										
										
											2012-05-22 08:56:11 +01:00
										 |  |  |             Totals diff = *this - prevTotals; | 
					
						
							|  |  |  |             if( diff.assertions.failed > 0 ) | 
					
						
							|  |  |  |                 ++diff.testCases.failed; | 
					
						
							| 
									
										
										
										
											2014-07-03 08:09:57 +01:00
										 |  |  |             else if( diff.assertions.failedButOk > 0 ) | 
					
						
							|  |  |  |                 ++diff.testCases.failedButOk; | 
					
						
							| 
									
										
										
										
											2012-05-22 08:56:11 +01:00
										 |  |  |             else | 
					
						
							|  |  |  |                 ++diff.testCases.passed; | 
					
						
							|  |  |  |             return diff; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2012-08-15 19:12:51 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-23 18:58:56 +01:00
										 |  |  |         Totals& operator += ( Totals const& other ) { | 
					
						
							| 
									
										
										
										
											2012-08-15 19:12:51 +01:00
										 |  |  |             assertions += other.assertions; | 
					
						
							|  |  |  |             testCases += other.testCases; | 
					
						
							|  |  |  |             return *this; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-23 08:49:52 +00:00
										 |  |  |         Counts assertions; | 
					
						
							|  |  |  |         Counts testCases; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif // TWOBLUECUBES_CATCH_TOTALS_HPP_INCLUDED
 |