mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-11-04 14:09:33 +01:00 
			
		
		
		
	Integrate Nonius benchmark into Catch2
Changes done to Nonius: * Moved things into "Catch::Benchmark" namespace * Benchmarks were integrated with `TEST_CASE`/`SECTION`/`GENERATE` macros * Removed Nonius's parameters for benchmarks, Generators should be used instead * Added relevant methods to the reporter interface (default-implemented, to avoid breaking existing 3rd party reporters) * Async processing is guarded with `_REENTRANT` macro for GCC/Clang, used by default on MSVC * Added a macro `CATCH_CONFIG_DISABLE_BENCHMARKING` that removes all traces of benchmarking from Catch
This commit is contained in:
		
				
					committed by
					
						
						Martin Hořeňovský
					
				
			
			
				
	
			
			
			
						parent
						
							00347f1e79
						
					
				
				
					commit
					ce2560ca95
				
			@@ -33,6 +33,9 @@
 | 
			
		||||
#  if defined(CATCH_CONFIG_DISABLE_MATCHERS)
 | 
			
		||||
#    undef CATCH_CONFIG_DISABLE_MATCHERS
 | 
			
		||||
#  endif
 | 
			
		||||
#  if defined(CATCH_CONFIG_DISABLE_BENCHMARKING)
 | 
			
		||||
#    undef CATCH_CONFIG_DISABLE_BENCHMARKING
 | 
			
		||||
#  endif
 | 
			
		||||
#  if !defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER)
 | 
			
		||||
#    define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER
 | 
			
		||||
#  endif
 | 
			
		||||
@@ -53,7 +56,6 @@
 | 
			
		||||
#include "internal/catch_test_registry.h"
 | 
			
		||||
#include "internal/catch_capture.hpp"
 | 
			
		||||
#include "internal/catch_section.h"
 | 
			
		||||
#include "internal/catch_benchmark.h"
 | 
			
		||||
#include "internal/catch_interfaces_exception.h"
 | 
			
		||||
#include "internal/catch_approx.h"
 | 
			
		||||
#include "internal/catch_compiler_capabilities.h"
 | 
			
		||||
@@ -75,6 +77,10 @@
 | 
			
		||||
#include "internal/catch_objc.hpp"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef CATCH_CONFIG_DISABLE_BENCHMARKING
 | 
			
		||||
#include "internal/benchmark/catch_benchmark.hpp"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef CATCH_CONFIG_EXTERNAL_INTERFACES
 | 
			
		||||
#include "internal/catch_external_interfaces.h"
 | 
			
		||||
#endif
 | 
			
		||||
@@ -89,6 +95,7 @@
 | 
			
		||||
#include "internal/catch_default_main.hpp"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if !defined(CATCH_CONFIG_IMPL_ONLY)
 | 
			
		||||
 | 
			
		||||
#ifdef CLARA_CONFIG_MAIN_NOT_DEFINED
 | 
			
		||||
@@ -188,6 +195,13 @@
 | 
			
		||||
#define CATCH_THEN( desc )      INTERNAL_CATCH_DYNAMIC_SECTION( "     Then: " << desc )
 | 
			
		||||
#define CATCH_AND_THEN( desc )  INTERNAL_CATCH_DYNAMIC_SECTION( "      And: " << desc )
 | 
			
		||||
 | 
			
		||||
#ifndef CATCH_CONFIG_DISABLE_BENCHMARKING
 | 
			
		||||
#define CATCH_BENCHMARK(...) \
 | 
			
		||||
    INTERNAL_CATCH_BENCHMARK(INTERNAL_CATCH_UNIQUE_NAME(____C_A_T_C_H____B_E_N_C_H____), INTERNAL_CATCH_GET_1_ARG(__VA_ARGS__,,), INTERNAL_CATCH_GET_2_ARG(__VA_ARGS__,,))
 | 
			
		||||
#define CATCH_BENCHMARK_ADVANCED(name) \
 | 
			
		||||
    INTERNAL_CATCH_BENCHMARK_ADVANCED(INTERNAL_CATCH_UNIQUE_NAME(____C_A_T_C_H____B_E_N_C_H____), name)
 | 
			
		||||
#endif // CATCH_CONFIG_DISABLE_BENCHMARKING
 | 
			
		||||
 | 
			
		||||
// If CATCH_CONFIG_PREFIX_ALL is not defined then the CATCH_ prefix is not required
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
@@ -283,6 +297,13 @@
 | 
			
		||||
#define THEN( desc )      INTERNAL_CATCH_DYNAMIC_SECTION( "     Then: " << desc )
 | 
			
		||||
#define AND_THEN( desc )  INTERNAL_CATCH_DYNAMIC_SECTION( "      And: " << desc )
 | 
			
		||||
 | 
			
		||||
#ifndef CATCH_CONFIG_DISABLE_BENCHMARKING
 | 
			
		||||
#define BENCHMARK(...) \
 | 
			
		||||
    INTERNAL_CATCH_BENCHMARK(INTERNAL_CATCH_UNIQUE_NAME(____C_A_T_C_H____B_E_N_C_H____), INTERNAL_CATCH_GET_1_ARG(__VA_ARGS__,,), INTERNAL_CATCH_GET_2_ARG(__VA_ARGS__,,))
 | 
			
		||||
#define BENCHMARK_ADVANCED(name) \
 | 
			
		||||
    INTERNAL_CATCH_BENCHMARK_ADVANCED(INTERNAL_CATCH_UNIQUE_NAME(____C_A_T_C_H____B_E_N_C_H____), name)
 | 
			
		||||
#endif // CATCH_CONFIG_DISABLE_BENCHMARKING
 | 
			
		||||
 | 
			
		||||
using Catch::Detail::Approx;
 | 
			
		||||
 | 
			
		||||
#else // CATCH_CONFIG_DISABLE
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user