mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 04:07:10 +01:00 
			
		
		
		
	Add support for templated tests
This adds support for templated tests and test methods via `TEMPLATE_TEST_CASE` and `TEMPLATE_TEST_CASE_METHOD` macros. These work mostly just like their regular counterparts*, but take an unlimited** number of types as their last arguments. * Unlike the plain `TEST_CASE*` macros, the `TEMPLATE*` variants require a tag string. ** In practice there is limit of about 300 types.
This commit is contained in:
		 Jozef Grajciar
					Jozef Grajciar
				
			
				
					committed by
					
						 Martin Hořeňovský
						Martin Hořeňovský
					
				
			
			
				
	
			
			
			 Martin Hořeňovský
						Martin Hořeňovský
					
				
			
						parent
						
							489a41012e
						
					
				
				
					commit
					2d906a92cb
				
			| @@ -145,6 +145,15 @@ | ||||
|  | ||||
| #define CATCH_ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE() | ||||
|  | ||||
| #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
| #define CATCH_TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ ) | ||||
| #define CATCH_TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ ) | ||||
| #else | ||||
| #define CATCH_TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ ) ) | ||||
| #define CATCH_TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ ) ) | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #if !defined(CATCH_CONFIG_RUNTIME_STATIC_REQUIRE) | ||||
| #define CATCH_STATIC_REQUIRE( ... )       static_assert(   __VA_ARGS__ ,      #__VA_ARGS__ );     CATCH_SUCCEED( #__VA_ARGS__ ) | ||||
| #define CATCH_STATIC_REQUIRE_FALSE( ... ) static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); CATCH_SUCCEED( #__VA_ARGS__ ) | ||||
| @@ -214,6 +223,15 @@ | ||||
| #define SUCCEED( ... ) INTERNAL_CATCH_MSG( "SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) | ||||
| #define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE() | ||||
|  | ||||
| #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
| #define TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ ) | ||||
| #define TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ ) | ||||
| #else | ||||
| #define TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ ) ) | ||||
| #define TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ ) ) | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #if !defined(CATCH_CONFIG_RUNTIME_STATIC_REQUIRE) | ||||
| #define STATIC_REQUIRE( ... )       static_assert(   __VA_ARGS__,  #__VA_ARGS__ ); SUCCEED( #__VA_ARGS__ ) | ||||
| #define STATIC_REQUIRE_FALSE( ... ) static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); SUCCEED( "!(" #__VA_ARGS__ ")" ) | ||||
| @@ -292,6 +310,14 @@ using Catch::Detail::Approx; | ||||
|  | ||||
| #define CATCH_ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) | ||||
|  | ||||
| #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
| #define CATCH_TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) ) | ||||
| #define CATCH_TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), className ) | ||||
| #else | ||||
| #define CATCH_TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) ) ) | ||||
| #define CATCH_TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), className ) ) | ||||
| #endif | ||||
|  | ||||
| // "BDD-style" convenience wrappers | ||||
| #define CATCH_SCENARIO( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) | ||||
| #define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), className ) | ||||
| @@ -355,6 +381,13 @@ using Catch::Detail::Approx; | ||||
| #define SUCCEED( ... ) (void)(0) | ||||
| #define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) | ||||
|  | ||||
| #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
| #define TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) ) | ||||
| #define TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), className ) | ||||
| #else | ||||
| #define TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) ) ) | ||||
| #define TEMPLATE_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), className ) ) | ||||
| #endif | ||||
|  | ||||
| #define STATIC_REQUIRE( ... )       (void)(0) | ||||
| #define STATIC_REQUIRE_FALSE( ... ) (void)(0) | ||||
|   | ||||
| @@ -136,6 +136,13 @@ | ||||
| #    define CATCH_INTERNAL_CONFIG_WINDOWS_SEH | ||||
| #  endif | ||||
|  | ||||
| // MSVC traditional preprocessor needs some workaround for __VA_ARGS__ | ||||
| // _MSVC_TRADITIONAL == 0 means new conformant preprocessor | ||||
| // _MSVC_TRADITIONAL == 1 means old traditional non-conformant preprocessor | ||||
| #  if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL) | ||||
| #    define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
| #  endif | ||||
|  | ||||
| #endif // _MSC_VER | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| @@ -254,6 +261,9 @@ | ||||
| #define CATCH_CATCH_ANON(type) catch (type) | ||||
| #endif | ||||
|  | ||||
| #if defined(CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_NO_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) | ||||
| #define CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
| #endif | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED | ||||
|  | ||||
|   | ||||
							
								
								
									
										74
									
								
								include/internal/catch_preprocessor.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								include/internal/catch_preprocessor.hpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,74 @@ | ||||
| /* | ||||
|  *  Created by Jozef on 12/11/2018. | ||||
|  *  Copyright 2017 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) | ||||
|  */ | ||||
|  | ||||
| #ifndef TWOBLUECUBES_CATCH_PREPROCESSOR_HPP_INCLUDED | ||||
| #define TWOBLUECUBES_CATCH_PREPROCESSOR_HPP_INCLUDED | ||||
|  | ||||
| #define CATCH_RECURSION_LEVEL0(...) __VA_ARGS__ | ||||
| #define CATCH_RECURSION_LEVEL1(...) CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(__VA_ARGS__))) | ||||
| #define CATCH_RECURSION_LEVEL2(...) CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(__VA_ARGS__))) | ||||
| #define CATCH_RECURSION_LEVEL3(...) CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(__VA_ARGS__))) | ||||
| #define CATCH_RECURSION_LEVEL4(...) CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(__VA_ARGS__))) | ||||
| #define CATCH_RECURSION_LEVEL5(...) CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(__VA_ARGS__))) | ||||
|  | ||||
| #ifdef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
| #define INTERNAL_CATCH_EXPAND_VARGS(...) __VA_ARGS__ | ||||
| // MSVC needs more evaluations | ||||
| #define CATCH_RECURSION_LEVEL6(...) CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(__VA_ARGS__))) | ||||
| #define CATCH_RECURSE(...)  CATCH_RECURSION_LEVEL6(CATCH_RECURSION_LEVEL6(__VA_ARGS__)) | ||||
| #else | ||||
| #define CATCH_RECURSE(...)  CATCH_RECURSION_LEVEL5(__VA_ARGS__) | ||||
| #endif | ||||
|  | ||||
| #define CATCH_REC_END(...) | ||||
| #define CATCH_REC_OUT | ||||
|  | ||||
| #define CATCH_EMPTY() | ||||
| #define CATCH_DEFER(id) id CATCH_EMPTY() | ||||
|  | ||||
| #define CATCH_REC_GET_END2() 0, CATCH_REC_END | ||||
| #define CATCH_REC_GET_END1(...) CATCH_REC_GET_END2 | ||||
| #define CATCH_REC_GET_END(...) CATCH_REC_GET_END1 | ||||
| #define CATCH_REC_NEXT0(test, next, ...) next CATCH_REC_OUT | ||||
| #define CATCH_REC_NEXT1(test, next) CATCH_DEFER ( CATCH_REC_NEXT0 ) ( test, next, 0) | ||||
| #define CATCH_REC_NEXT(test, next)  CATCH_REC_NEXT1(CATCH_REC_GET_END test, next) | ||||
|  | ||||
| #define CATCH_REC_LIST0(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) | ||||
| #define CATCH_REC_LIST1(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0) ) ( f, peek, __VA_ARGS__ ) | ||||
| #define CATCH_REC_LIST2(f, x, peek, ...)   f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) | ||||
|  | ||||
| #define CATCH_REC_LIST0_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) | ||||
| #define CATCH_REC_LIST1_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0_UD) ) ( f, userdata, peek, __VA_ARGS__ ) | ||||
| #define CATCH_REC_LIST2_UD(f, userdata, x, peek, ...)   f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) | ||||
|  | ||||
| // Applies the function macro `f` to each of the remaining parameters, inserts commas between the results, | ||||
| // and passes userdata as the first parameter to each invocation, | ||||
| // e.g. CATCH_REC_LIST_UD(f, x, a, b, c) evaluates to f(x, a), f(x, b), f(x, c) | ||||
| #define CATCH_REC_LIST_UD(f, userdata, ...) CATCH_RECURSE(CATCH_REC_LIST2_UD(f, userdata, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) | ||||
|  | ||||
| #define CATCH_REC_LIST(f, ...) CATCH_RECURSE(CATCH_REC_LIST2(f, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) | ||||
|  | ||||
| #define INTERNAL_CATCH_EXPAND1(param) INTERNAL_CATCH_EXPAND2(param) | ||||
| #define INTERNAL_CATCH_EXPAND2(...) INTERNAL_CATCH_NO## __VA_ARGS__ | ||||
| #define INTERNAL_CATCH_DEF(...) INTERNAL_CATCH_DEF __VA_ARGS__ | ||||
| #define INTERNAL_CATCH_NOINTERNAL_CATCH_DEF | ||||
|  | ||||
| #define INTERNAL_CATCH_REMOVE_PARENS(...) INTERNAL_CATCH_EXPAND1(INTERNAL_CATCH_DEF __VA_ARGS__) | ||||
|  | ||||
| #define INTERNAL_CATCH_TEMPLATE_UNIQUE_NAME2(Name, ...) INTERNAL_CATCH_TEMPLATE_UNIQUE_NAME3(Name, __VA_ARGS__) | ||||
| #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
| #define INTERNAL_CATCH_TEMPLATE_UNIQUE_NAME3(Name,...) Name " - " #__VA_ARGS__ | ||||
| #define INTERNAL_CATCH_TEMPLATE_UNIQUE_NAME(Name,...) INTERNAL_CATCH_TEMPLATE_UNIQUE_NAME2(Name, INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__)) | ||||
| #else | ||||
| // MSVC is adding extra space and needs more calls to properly remove () | ||||
| #define INTERNAL_CATCH_TEMPLATE_UNIQUE_NAME3(Name,...) Name " -" #__VA_ARGS__ | ||||
| #define INTERNAL_CATCH_TEMPLATE_UNIQUE_NAME1(Name, ...) INTERNAL_CATCH_TEMPLATE_UNIQUE_NAME2(Name, __VA_ARGS__) | ||||
| #define INTERNAL_CATCH_TEMPLATE_UNIQUE_NAME(Name, ...) INTERNAL_CATCH_TEMPLATE_UNIQUE_NAME1(Name, INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__))) | ||||
| #endif | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_PREPROCESSOR_HPP_INCLUDED | ||||
| @@ -12,6 +12,8 @@ | ||||
| #include "catch_interfaces_testcase.h" | ||||
| #include "catch_compiler_capabilities.h" | ||||
| #include "catch_stringref.h" | ||||
| #include "catch_type_traits.hpp" | ||||
| #include "catch_preprocessor.hpp" | ||||
|  | ||||
| namespace Catch { | ||||
|  | ||||
| @@ -47,22 +49,28 @@ struct AutoReg : NonCopyable { | ||||
|  | ||||
| } // end namespace Catch | ||||
|  | ||||
| #define INTERNAL_CATCH_EXPAND1(param) INTERNAL_CATCH_EXPAND2(param) | ||||
| #define INTERNAL_CATCH_EXPAND2(...) INTERNAL_CATCH_NO## __VA_ARGS__ | ||||
| #define INTERNAL_CATCH_DEF(...) INTERNAL_CATCH_DEF __VA_ARGS__ | ||||
| #define INTERNAL_CATCH_NOINTERNAL_CATCH_DEF | ||||
|  | ||||
| #if defined(CATCH_CONFIG_DISABLE) | ||||
|     #define INTERNAL_CATCH_TESTCASE_NO_REGISTRATION( TestName, ... ) \ | ||||
|         static void TestName() | ||||
|     #define INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION( TestName, ClassName, ... ) \ | ||||
|         namespace{                        \ | ||||
|             struct TestName : INTERNAL_CATCH_EXPAND1(INTERNAL_CATCH_DEF ClassName) { \ | ||||
|             struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName) { \ | ||||
|                 void test();              \ | ||||
|             };                            \ | ||||
|         }                                 \ | ||||
|         void TestName::test() | ||||
|  | ||||
|     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION( TestName, ... )  \ | ||||
|         template<typename TestType>                                             \ | ||||
|         static void TestName() | ||||
|     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_NO_REGISTRATION( TestName, ClassName, ... )    \ | ||||
|         namespace{                                                                                  \ | ||||
|             template<typename TestType>                                                             \ | ||||
|             struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName <TestType>) {     \ | ||||
|                 void test();                                                                        \ | ||||
|             };                                                                                      \ | ||||
|         }                                                                                           \ | ||||
|         template<typename TestType>                                                                 \ | ||||
|         void TestName::test() | ||||
| #endif | ||||
|  | ||||
|     /////////////////////////////////////////////////////////////////////////////// | ||||
| @@ -85,7 +93,7 @@ struct AutoReg : NonCopyable { | ||||
|     #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\ | ||||
|         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|         namespace{ \ | ||||
|             struct TestName : INTERNAL_CATCH_EXPAND1(INTERNAL_CATCH_DEF ClassName) { \ | ||||
|             struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName) { \ | ||||
|                 void test(); \ | ||||
|             }; \ | ||||
|             Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( Catch::makeTestInvoker( &TestName::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \ | ||||
| @@ -101,5 +109,75 @@ struct AutoReg : NonCopyable { | ||||
|         Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( Function ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS | ||||
|  | ||||
|     /////////////////////////////////////////////////////////////////////////////// | ||||
|     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_2(TestName, TestFunc, Name, Tags, ... )\ | ||||
|         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|         template<typename TestType> \ | ||||
|         static void TestFunc();\ | ||||
|         namespace {\ | ||||
|             template<typename...Types> \ | ||||
|             struct TestName{\ | ||||
|                 template<typename...Ts> \ | ||||
|                 TestName(Ts...names){\ | ||||
|                     CATCH_INTERNAL_CHECK_UNIQUE_TYPES(CATCH_REC_LIST(INTERNAL_CATCH_REMOVE_PARENS, __VA_ARGS__)) \ | ||||
|                     using expander = int[];\ | ||||
|                     (void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestFunc<Types> ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ names, Tags } ), 0)... };/* NOLINT */ \ | ||||
|                 }\ | ||||
|             };\ | ||||
|             INTERNAL_CATCH_TEMPLATE_REGISTRY_INITIATE(TestName, Name, __VA_ARGS__) \ | ||||
|         }\ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \ | ||||
|         template<typename TestType> \ | ||||
|         static void TestFunc() | ||||
|  | ||||
| #if defined(CATCH_CPP17_OR_GREATER) | ||||
| #define CATCH_INTERNAL_CHECK_UNIQUE_TYPES(...) static_assert(Catch::is_unique<__VA_ARGS__>,"Duplicate type detected in declaration of template test case"); | ||||
| #else | ||||
| #define CATCH_INTERNAL_CHECK_UNIQUE_TYPES(...) static_assert(Catch::is_unique<__VA_ARGS__>::value,"Duplicate type detected in declaration of template test case"); | ||||
| #endif | ||||
|  | ||||
| #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
|     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE(Name, Tags, ...) \ | ||||
|         INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, __VA_ARGS__ ) | ||||
| #else | ||||
|     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE(Name, Tags, ...) \ | ||||
|         INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, __VA_ARGS__ ) ) | ||||
| #endif | ||||
|  | ||||
|     #define INTERNAL_CATCH_TEMPLATE_REGISTRY_INITIATE(TestName, Name, ...)\ | ||||
|         static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){\ | ||||
|             TestName<CATCH_REC_LIST(INTERNAL_CATCH_REMOVE_PARENS, __VA_ARGS__)>(CATCH_REC_LIST_UD(INTERNAL_CATCH_TEMPLATE_UNIQUE_NAME,Name, __VA_ARGS__));\ | ||||
|             return 0;\ | ||||
|         }(); | ||||
|  | ||||
|     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( TestNameClass, TestName, ClassName, Name, Tags, ... ) \ | ||||
|         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|         namespace{ \ | ||||
|             template<typename TestType> \ | ||||
|             struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName <TestType>) { \ | ||||
|                 void test();\ | ||||
|             };\ | ||||
|             template<typename...Types> \ | ||||
|             struct TestNameClass{\ | ||||
|                 template<typename...Ts> \ | ||||
|                 TestNameClass(Ts...names){\ | ||||
|                     CATCH_INTERNAL_CHECK_UNIQUE_TYPES(CATCH_REC_LIST(INTERNAL_CATCH_REMOVE_PARENS, __VA_ARGS__)) \ | ||||
|                     using expander = int[];\ | ||||
|                     (void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestName<Types>::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ names, Tags } ), 0)... };/* NOLINT */ \ | ||||
|                 }\ | ||||
|             };\ | ||||
|             INTERNAL_CATCH_TEMPLATE_REGISTRY_INITIATE(TestNameClass, Name, __VA_ARGS__)\ | ||||
|         }\ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS\ | ||||
|         template<typename TestType> \ | ||||
|         void TestName<TestType>::test() | ||||
|  | ||||
| #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
|     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( ClassName, Name, Tags,... ) \ | ||||
|         INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____C_L_A_S_S____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) , ClassName, Name, Tags, __VA_ARGS__ ) | ||||
| #else | ||||
|     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( ClassName, Name, Tags,... ) \ | ||||
|         INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____C_L_A_S_S____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) , ClassName, Name, Tags, __VA_ARGS__ ) ) | ||||
| #endif | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_TEST_REGISTRY_HPP_INCLUDED | ||||
|   | ||||
							
								
								
									
										38
									
								
								include/internal/catch_type_traits.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								include/internal/catch_type_traits.hpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| /* | ||||
|  *  Created by Jozef on 12/11/2018. | ||||
|  *  Copyright 2017 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) | ||||
|  */ | ||||
|  | ||||
| #ifndef TWOBLUECUBES_CATCH_TYPE_TRAITS_HPP_INCLUDED | ||||
| #define TWOBLUECUBES_CATCH_TYPE_TRAITS_HPP_INCLUDED | ||||
|  | ||||
| namespace Catch{ | ||||
|  | ||||
| #ifdef CATCH_CPP17_OR_GREATER | ||||
| 	template <typename...> | ||||
| 	inline constexpr auto is_unique = std::true_type{}; | ||||
|  | ||||
| 	template <typename T, typename... Rest> | ||||
| 	inline constexpr auto is_unique<T, Rest...> = std::bool_constant< | ||||
| 		(!std::is_same_v<T, Rest> && ...) && is_unique<Rest...> | ||||
| 	>{}; | ||||
| #else | ||||
|  | ||||
| template <typename...> | ||||
| struct is_unique : std::true_type{}; | ||||
|  | ||||
| template <typename T0, typename T1, typename... Rest> | ||||
| struct is_unique<T0, T1, Rest...> : std::integral_constant | ||||
| <bool, | ||||
|      !std::is_same<T0, T1>::value  | ||||
|      && is_unique<T0, Rest...>::value  | ||||
|      && is_unique<T1, Rest...>::value | ||||
| >{}; | ||||
|  | ||||
| #endif | ||||
| } | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_TYPE_TRAITS_HPP_INCLUDED | ||||
| @@ -123,6 +123,7 @@ set(INTERNAL_HEADERS | ||||
|         ${HEADER_DIR}/internal/catch_option.hpp | ||||
|         ${HEADER_DIR}/internal/catch_output_redirect.h | ||||
|         ${HEADER_DIR}/internal/catch_platform.h | ||||
|         ${HEADER_DIR}/internal/catch_preprocessor.hpp | ||||
|         ${HEADER_DIR}/internal/catch_random_number_generator.h | ||||
|         ${HEADER_DIR}/internal/catch_reenable_warnings.h | ||||
|         ${HEADER_DIR}/internal/catch_reporter_registrars.hpp | ||||
| @@ -153,6 +154,7 @@ set(INTERNAL_HEADERS | ||||
|         ${HEADER_DIR}/internal/catch_to_string.hpp | ||||
|         ${HEADER_DIR}/internal/catch_tostring.h | ||||
|         ${HEADER_DIR}/internal/catch_totals.h | ||||
|         ${HEADER_DIR}/internal/catch_type_traits.hpp | ||||
|         ${HEADER_DIR}/internal/catch_uncaught_exceptions.h | ||||
|         ${HEADER_DIR}/internal/catch_user_interfaces.h | ||||
|         ${HEADER_DIR}/internal/catch_version.h | ||||
|   | ||||
| @@ -159,6 +159,12 @@ Generators.tests.cpp:<line number>: passed: x < y for: 10 < 109 | ||||
| Generators.tests.cpp:<line number>: passed: x < y for: 10 < 110 | ||||
| Class.tests.cpp:<line number>: failed: s == "world" for: "hello" == "world" | ||||
| Class.tests.cpp:<line number>: passed: s == "hello" for: "hello" == "hello" | ||||
| Class.tests.cpp:<line number>: failed: Template_Fixture<TestType>::m_a == 2 for: 1.0 == 2 | ||||
| Class.tests.cpp:<line number>: failed: Template_Fixture<TestType>::m_a == 2 for: 1.0f == 2 | ||||
| Class.tests.cpp:<line number>: failed: Template_Fixture<TestType>::m_a == 2 for: 1 == 2 | ||||
| Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1.0 == 1 | ||||
| Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1.0f == 1 | ||||
| Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1 == 1 | ||||
| Class.tests.cpp:<line number>: failed: m_a == 2 for: 1 == 2 | ||||
| Class.tests.cpp:<line number>: passed: m_a == 1 for: 1 == 1 | ||||
| Approx.tests.cpp:<line number>: passed: d == 1.23_a for: 1.23 == Approx( 1.23 ) | ||||
| @@ -871,6 +877,74 @@ TagAlias.tests.cpp:<line number>: passed: registry.add( "[no ampersat]", "", Cat | ||||
| TagAlias.tests.cpp:<line number>: passed: registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) ) | ||||
| TagAlias.tests.cpp:<line number>: passed: registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) ) | ||||
| TagAlias.tests.cpp:<line number>: passed: registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) ) | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| VariadicMacros.tests.cpp:<line number>: passed: with 1 message: 'no assertions' | ||||
| Tricky.tests.cpp:<line number>: passed: 0x<hex digits> == bit30and31 for: 3221225472 (0x<hex digits>) == 3221225472 | ||||
| Message.tests.cpp:<line number>: failed - but was ok: 1 == 2 | ||||
| @@ -1313,5 +1387,5 @@ Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5 | ||||
| Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5 | ||||
| Misc.tests.cpp:<line number>: passed: | ||||
| Misc.tests.cpp:<line number>: passed: | ||||
| Failed 62 test cases, failed 122 assertions. | ||||
| Failed 65 test cases, failed 125 assertions. | ||||
|  | ||||
|   | ||||
| @@ -92,6 +92,39 @@ Class.tests.cpp:<line number>: FAILED: | ||||
| with expansion: | ||||
|   "hello" == "world" | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| A TEMPLATE_TEST_CASE_METHOD based test run that fails - double | ||||
| ------------------------------------------------------------------------------- | ||||
| Class.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Class.tests.cpp:<line number>: FAILED: | ||||
|   REQUIRE( Template_Fixture<TestType>::m_a == 2 ) | ||||
| with expansion: | ||||
|   1.0 == 2 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| A TEMPLATE_TEST_CASE_METHOD based test run that fails - float | ||||
| ------------------------------------------------------------------------------- | ||||
| Class.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Class.tests.cpp:<line number>: FAILED: | ||||
|   REQUIRE( Template_Fixture<TestType>::m_a == 2 ) | ||||
| with expansion: | ||||
|   1.0f == 2 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| A TEMPLATE_TEST_CASE_METHOD based test run that fails - int | ||||
| ------------------------------------------------------------------------------- | ||||
| Class.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Class.tests.cpp:<line number>: FAILED: | ||||
|   REQUIRE( Template_Fixture<TestType>::m_a == 2 ) | ||||
| with expansion: | ||||
|   1 == 2 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| A TEST_CASE_METHOD based test run that fails | ||||
| ------------------------------------------------------------------------------- | ||||
| @@ -1093,6 +1126,6 @@ due to unexpected exception with message: | ||||
|   Why would you throw a std::string? | ||||
|  | ||||
| =============================================================================== | ||||
| test cases:  216 |  163 passed |  49 failed |  4 failed as expected | ||||
| assertions: 1234 | 1105 passed | 108 failed | 21 failed as expected | ||||
| test cases:  226 |  170 passed |  52 failed |  4 failed as expected | ||||
| assertions: 1308 | 1176 passed | 111 failed | 21 failed as expected | ||||
|  | ||||
|   | ||||
| @@ -1577,6 +1577,72 @@ Class.tests.cpp:<line number>: PASSED: | ||||
| with expansion: | ||||
|   "hello" == "hello" | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| A TEMPLATE_TEST_CASE_METHOD based test run that fails - double | ||||
| ------------------------------------------------------------------------------- | ||||
| Class.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Class.tests.cpp:<line number>: FAILED: | ||||
|   REQUIRE( Template_Fixture<TestType>::m_a == 2 ) | ||||
| with expansion: | ||||
|   1.0 == 2 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| A TEMPLATE_TEST_CASE_METHOD based test run that fails - float | ||||
| ------------------------------------------------------------------------------- | ||||
| Class.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Class.tests.cpp:<line number>: FAILED: | ||||
|   REQUIRE( Template_Fixture<TestType>::m_a == 2 ) | ||||
| with expansion: | ||||
|   1.0f == 2 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| A TEMPLATE_TEST_CASE_METHOD based test run that fails - int | ||||
| ------------------------------------------------------------------------------- | ||||
| Class.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Class.tests.cpp:<line number>: FAILED: | ||||
|   REQUIRE( Template_Fixture<TestType>::m_a == 2 ) | ||||
| with expansion: | ||||
|   1 == 2 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double | ||||
| ------------------------------------------------------------------------------- | ||||
| Class.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Class.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( Template_Fixture<TestType>::m_a == 1 ) | ||||
| with expansion: | ||||
|   1.0 == 1 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float | ||||
| ------------------------------------------------------------------------------- | ||||
| Class.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Class.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( Template_Fixture<TestType>::m_a == 1 ) | ||||
| with expansion: | ||||
|   1.0f == 1 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int | ||||
| ------------------------------------------------------------------------------- | ||||
| Class.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Class.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( Template_Fixture<TestType>::m_a == 1 ) | ||||
| with expansion: | ||||
|   1 == 1 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| A TEST_CASE_METHOD based test run that fails | ||||
| ------------------------------------------------------------------------------- | ||||
| @@ -6573,6 +6639,586 @@ TagAlias.tests.cpp:<line number>: PASSED: | ||||
| TagAlias.tests.cpp:<line number>: PASSED: | ||||
|   CHECK_THROWS( registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) ) ) | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - float | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - float | ||||
|   resizing bigger changes size and capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 10 ) | ||||
| with expansion: | ||||
|   10 == 10 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 10 ) | ||||
| with expansion: | ||||
|   10 >= 10 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - float | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - float | ||||
|   resizing smaller changes size but not capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 0 ) | ||||
| with expansion: | ||||
|   0 == 0 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - float | ||||
|   resizing smaller changes size but not capacity | ||||
|   We can use the 'swap trick' to reset the capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() == 0 ) | ||||
| with expansion: | ||||
|   0 == 0 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - float | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - float | ||||
|   reserving bigger changes capacity but not size | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 10 ) | ||||
| with expansion: | ||||
|   10 >= 10 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - float | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - float | ||||
|   reserving smaller does not change size or capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - int | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - int | ||||
|   resizing bigger changes size and capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 10 ) | ||||
| with expansion: | ||||
|   10 == 10 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 10 ) | ||||
| with expansion: | ||||
|   10 >= 10 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - int | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - int | ||||
|   resizing smaller changes size but not capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 0 ) | ||||
| with expansion: | ||||
|   0 == 0 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - int | ||||
|   resizing smaller changes size but not capacity | ||||
|   We can use the 'swap trick' to reset the capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() == 0 ) | ||||
| with expansion: | ||||
|   0 == 0 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - int | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - int | ||||
|   reserving bigger changes capacity but not size | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 10 ) | ||||
| with expansion: | ||||
|   10 >= 10 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - int | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - int | ||||
|   reserving smaller does not change size or capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::string | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::string | ||||
|   resizing bigger changes size and capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 10 ) | ||||
| with expansion: | ||||
|   10 == 10 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 10 ) | ||||
| with expansion: | ||||
|   10 >= 10 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::string | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::string | ||||
|   resizing smaller changes size but not capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 0 ) | ||||
| with expansion: | ||||
|   0 == 0 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::string | ||||
|   resizing smaller changes size but not capacity | ||||
|   We can use the 'swap trick' to reset the capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() == 0 ) | ||||
| with expansion: | ||||
|   0 == 0 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::string | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::string | ||||
|   reserving bigger changes capacity but not size | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 10 ) | ||||
| with expansion: | ||||
|   10 >= 10 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::string | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::string | ||||
|   reserving smaller does not change size or capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::tuple<int,float> | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::tuple<int,float> | ||||
|   resizing bigger changes size and capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 10 ) | ||||
| with expansion: | ||||
|   10 == 10 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 10 ) | ||||
| with expansion: | ||||
|   10 >= 10 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::tuple<int,float> | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::tuple<int,float> | ||||
|   resizing smaller changes size but not capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 0 ) | ||||
| with expansion: | ||||
|   0 == 0 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::tuple<int,float> | ||||
|   resizing smaller changes size but not capacity | ||||
|   We can use the 'swap trick' to reset the capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() == 0 ) | ||||
| with expansion: | ||||
|   0 == 0 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::tuple<int,float> | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::tuple<int,float> | ||||
|   reserving bigger changes capacity but not size | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 10 ) | ||||
| with expansion: | ||||
|   10 >= 10 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::tuple<int,float> | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| TemplateTest: vectors can be sized and resized - std::tuple<int,float> | ||||
|   reserving smaller does not change size or capacity | ||||
| ------------------------------------------------------------------------------- | ||||
| Misc.tests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.size() == 5 ) | ||||
| with expansion: | ||||
|   5 == 5 | ||||
|  | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|   REQUIRE( v.capacity() >= 5 ) | ||||
| with expansion: | ||||
|   5 >= 5 | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| Test case with one argument | ||||
| ------------------------------------------------------------------------------- | ||||
| @@ -9786,6 +10432,6 @@ Misc.tests.cpp:<line number> | ||||
| Misc.tests.cpp:<line number>: PASSED: | ||||
|  | ||||
| =============================================================================== | ||||
| test cases:  216 |  150 passed |  62 failed |  4 failed as expected | ||||
| assertions: 1248 | 1105 passed | 122 failed | 21 failed as expected | ||||
| test cases:  226 |  157 passed |  65 failed |  4 failed as expected | ||||
| assertions: 1322 | 1176 passed | 125 failed | 21 failed as expected | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <testsuitesloose text artifact | ||||
| > | ||||
|   <testsuite name="<exe-name>" errors="17" failures="106" tests="1249" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}"> | ||||
|   <testsuite name="<exe-name>" errors="17" failures="109" tests="1323" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}"> | ||||
|     <testcase classname="<exe-name>.global" name="# A test name that starts with a #" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="#1005: Comparing pointer to int and long (NULL can be either on various systems)" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="#1027" time="{duration}"/> | ||||
| @@ -77,6 +77,24 @@ Class.tests.cpp:<line number> | ||||
|       </failure> | ||||
|     </testcase> | ||||
|     <testcase classname="<exe-name>.TestClass" name="A METHOD_AS_TEST_CASE based test run that succeeds" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - double" time="{duration}"> | ||||
|       <failure message="1.0 == 2" type="REQUIRE"> | ||||
| Class.tests.cpp:<line number> | ||||
|       </failure> | ||||
|     </testcase> | ||||
|     <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - float" time="{duration}"> | ||||
|       <failure message="1.0f == 2" type="REQUIRE"> | ||||
| Class.tests.cpp:<line number> | ||||
|       </failure> | ||||
|     </testcase> | ||||
|     <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - int" time="{duration}"> | ||||
|       <failure message="1 == 2" type="REQUIRE"> | ||||
| Class.tests.cpp:<line number> | ||||
|       </failure> | ||||
|     </testcase> | ||||
|     <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.Fixture" name="A TEST_CASE_METHOD based test run that fails" time="{duration}"> | ||||
|       <failure message="1 == 2" type="REQUIRE"> | ||||
| Class.tests.cpp:<line number> | ||||
| @@ -596,6 +614,30 @@ Misc.tests.cpp:<line number> | ||||
|     </testcase> | ||||
|     <testcase classname="<exe-name>.global" name="Tag alias can be registered against tag patterns/The same tag alias can only be registered once" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="Tag alias can be registered against tag patterns/Tag aliases must be of the form [@name]" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float/resizing bigger changes size and capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float/resizing smaller changes size but not capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float/reserving bigger changes capacity but not size" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float/reserving smaller does not change size or capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int/resizing bigger changes size and capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int/resizing smaller changes size but not capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int/reserving bigger changes capacity but not size" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int/reserving smaller does not change size or capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string/resizing bigger changes size and capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string/resizing smaller changes size but not capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string/reserving bigger changes capacity but not size" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string/reserving smaller does not change size or capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple<int,float>" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple<int,float>/resizing bigger changes size and capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple<int,float>/resizing smaller changes size but not capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple<int,float>/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple<int,float>/reserving bigger changes capacity but not size" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple<int,float>/reserving smaller does not change size or capacity" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="Test case with one argument" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="Test enum bit values" time="{duration}"/> | ||||
|     <testcase classname="<exe-name>.global" name="The NO_FAIL macro reports a failure but does not fail the test" time="{duration}"/> | ||||
|   | ||||
| @@ -1347,6 +1347,72 @@ | ||||
|       </Expression> | ||||
|       <OverallResult success="true"/> | ||||
|     </TestCase> | ||||
|     <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - double" tags="[.][class][failing][template]" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|       <Expression success="false" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|         <Original> | ||||
|           Template_Fixture<TestType>::m_a == 2 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           1.0 == 2 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <OverallResult success="false"/> | ||||
|     </TestCase> | ||||
|     <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - float" tags="[.][class][failing][template]" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|       <Expression success="false" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|         <Original> | ||||
|           Template_Fixture<TestType>::m_a == 2 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           1.0f == 2 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <OverallResult success="false"/> | ||||
|     </TestCase> | ||||
|     <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - int" tags="[.][class][failing][template]" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|       <Expression success="false" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|         <Original> | ||||
|           Template_Fixture<TestType>::m_a == 2 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           1 == 2 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <OverallResult success="false"/> | ||||
|     </TestCase> | ||||
|     <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double" tags="[class][template]" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|         <Original> | ||||
|           Template_Fixture<TestType>::m_a == 1 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           1.0 == 1 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <OverallResult success="true"/> | ||||
|     </TestCase> | ||||
|     <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float" tags="[class][template]" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|         <Original> | ||||
|           Template_Fixture<TestType>::m_a == 1 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           1.0f == 1 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <OverallResult success="true"/> | ||||
|     </TestCase> | ||||
|     <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int" tags="[class][template]" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|         <Original> | ||||
|           Template_Fixture<TestType>::m_a == 1 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           1 == 1 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <OverallResult success="true"/> | ||||
|     </TestCase> | ||||
|     <TestCase name="A TEST_CASE_METHOD based test run that fails" tags="[.][class][failing]" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|       <Expression success="false" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Class.tests.cpp" > | ||||
|         <Original> | ||||
| @@ -7691,6 +7757,622 @@ Message from section two | ||||
|       </Section> | ||||
|       <OverallResult success="true"/> | ||||
|     </TestCase> | ||||
|     <TestCase name="TemplateTest: vectors can be sized and resized - float" tags="[template][vector]" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="resizing bigger changes size and capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 10 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             10 == 10 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 10 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             10 >= 10 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <OverallResults successes="2" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="resizing smaller changes size but not capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 0 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             0 == 0 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 >= 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Section name="We can use the 'swap trick' to reset the capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|             <Original> | ||||
|               v.capacity() == 0 | ||||
|             </Original> | ||||
|             <Expanded> | ||||
|               0 == 0 | ||||
|             </Expanded> | ||||
|           </Expression> | ||||
|           <OverallResults successes="1" failures="0" expectedFailures="0"/> | ||||
|         </Section> | ||||
|         <OverallResults successes="3" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="reserving bigger changes capacity but not size" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 == 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 10 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             10 >= 10 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <OverallResults successes="2" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="reserving smaller does not change size or capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 == 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 >= 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <OverallResults successes="2" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <OverallResult success="true"/> | ||||
|     </TestCase> | ||||
|     <TestCase name="TemplateTest: vectors can be sized and resized - int" tags="[template][vector]" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="resizing bigger changes size and capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 10 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             10 == 10 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 10 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             10 >= 10 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <OverallResults successes="2" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="resizing smaller changes size but not capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 0 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             0 == 0 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 >= 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Section name="We can use the 'swap trick' to reset the capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|             <Original> | ||||
|               v.capacity() == 0 | ||||
|             </Original> | ||||
|             <Expanded> | ||||
|               0 == 0 | ||||
|             </Expanded> | ||||
|           </Expression> | ||||
|           <OverallResults successes="1" failures="0" expectedFailures="0"/> | ||||
|         </Section> | ||||
|         <OverallResults successes="3" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="reserving bigger changes capacity but not size" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 == 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 10 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             10 >= 10 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <OverallResults successes="2" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="reserving smaller does not change size or capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 == 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 >= 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <OverallResults successes="2" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <OverallResult success="true"/> | ||||
|     </TestCase> | ||||
|     <TestCase name="TemplateTest: vectors can be sized and resized - std::string" tags="[template][vector]" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="resizing bigger changes size and capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 10 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             10 == 10 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 10 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             10 >= 10 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <OverallResults successes="2" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="resizing smaller changes size but not capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 0 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             0 == 0 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 >= 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Section name="We can use the 'swap trick' to reset the capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|             <Original> | ||||
|               v.capacity() == 0 | ||||
|             </Original> | ||||
|             <Expanded> | ||||
|               0 == 0 | ||||
|             </Expanded> | ||||
|           </Expression> | ||||
|           <OverallResults successes="1" failures="0" expectedFailures="0"/> | ||||
|         </Section> | ||||
|         <OverallResults successes="3" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="reserving bigger changes capacity but not size" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 == 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 10 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             10 >= 10 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <OverallResults successes="2" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="reserving smaller does not change size or capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 == 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 >= 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <OverallResults successes="2" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <OverallResult success="true"/> | ||||
|     </TestCase> | ||||
|     <TestCase name="TemplateTest: vectors can be sized and resized - std::tuple<int,float>" tags="[template][vector]" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="resizing bigger changes size and capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 10 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             10 == 10 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 10 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             10 >= 10 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <OverallResults successes="2" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="resizing smaller changes size but not capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 0 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             0 == 0 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 >= 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Section name="We can use the 'swap trick' to reset the capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|             <Original> | ||||
|               v.capacity() == 0 | ||||
|             </Original> | ||||
|             <Expanded> | ||||
|               0 == 0 | ||||
|             </Expanded> | ||||
|           </Expression> | ||||
|           <OverallResults successes="1" failures="0" expectedFailures="0"/> | ||||
|         </Section> | ||||
|         <OverallResults successes="3" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="reserving bigger changes capacity but not size" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 == 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 10 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             10 >= 10 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <OverallResults successes="2" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.size() == 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 == 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Original> | ||||
|           v.capacity() >= 5 | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           5 >= 5 | ||||
|         </Expanded> | ||||
|       </Expression> | ||||
|       <Section name="reserving smaller does not change size or capacity" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.size() == 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 == 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" > | ||||
|           <Original> | ||||
|             v.capacity() >= 5 | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             5 >= 5 | ||||
|           </Expanded> | ||||
|         </Expression> | ||||
|         <OverallResults successes="2" failures="0" expectedFailures="0"/> | ||||
|       </Section> | ||||
|       <OverallResult success="true"/> | ||||
|     </TestCase> | ||||
|     <TestCase name="Test case with one argument" filename="projects/<exe-name>/UsageTests/VariadicMacros.tests.cpp" > | ||||
|       <OverallResult success="true"/> | ||||
|     </TestCase> | ||||
| @@ -11369,7 +12051,7 @@ loose text artifact | ||||
|       </Section> | ||||
|       <OverallResult success="true"/> | ||||
|     </TestCase> | ||||
|     <OverallResults successes="1105" failures="123" expectedFailures="21"/> | ||||
|     <OverallResults successes="1176" failures="126" expectedFailures="21"/> | ||||
|   </Group> | ||||
|   <OverallResults successes="1105" failures="122" expectedFailures="21"/> | ||||
|   <OverallResults successes="1176" failures="125" expectedFailures="21"/> | ||||
| </Catch> | ||||
|   | ||||
| @@ -39,6 +39,13 @@ struct Fixture | ||||
|     int m_a; | ||||
| }; | ||||
|  | ||||
| template< typename T > | ||||
| struct Template_Fixture { | ||||
|     Template_Fixture(): m_a(1) {} | ||||
|  | ||||
|     T m_a; | ||||
| }; | ||||
|  | ||||
| #endif | ||||
|  | ||||
|  | ||||
| @@ -51,6 +58,10 @@ TEST_CASE_METHOD( Fixture, "A TEST_CASE_METHOD based test run that succeeds", "[ | ||||
|     REQUIRE( m_a == 1 ); | ||||
| } | ||||
|  | ||||
| TEMPLATE_TEST_CASE_METHOD(Template_Fixture, "A TEMPLATE_TEST_CASE_METHOD based test run that succeeds", "[class][template]", int, float, double) { | ||||
|     REQUIRE( Template_Fixture<TestType>::m_a == 1 ); | ||||
| } | ||||
|  | ||||
| // We should be able to write our tests within a different namespace | ||||
| namespace Inner | ||||
| { | ||||
| @@ -58,6 +69,13 @@ namespace Inner | ||||
|     { | ||||
|         REQUIRE( m_a == 2 ); | ||||
|     } | ||||
|  | ||||
|     TEMPLATE_TEST_CASE_METHOD(Template_Fixture,"A TEMPLATE_TEST_CASE_METHOD based test run that fails", "[.][class][template][failing]", int, float, double) | ||||
|     { | ||||
|         REQUIRE( Template_Fixture<TestType>::m_a == 2 ); | ||||
|     } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| }} // namespace ClassTests | ||||
|   | ||||
| @@ -261,6 +261,46 @@ TEST_CASE( "vectors can be sized and resized", "[vector]" ) { | ||||
|     } | ||||
| } | ||||
|  | ||||
| TEMPLATE_TEST_CASE( "TemplateTest: vectors can be sized and resized", "[vector][template]", int, float, std::string, (std::tuple<int,float>) ) { | ||||
|  | ||||
|     std::vector<TestType> v( 5 ); | ||||
|  | ||||
|     REQUIRE( v.size() == 5 ); | ||||
|     REQUIRE( v.capacity() >= 5 ); | ||||
|  | ||||
|     SECTION( "resizing bigger changes size and capacity" ) { | ||||
|         v.resize( 10 ); | ||||
|  | ||||
|         REQUIRE( v.size() == 10 ); | ||||
|         REQUIRE( v.capacity() >= 10 ); | ||||
|     } | ||||
|     SECTION( "resizing smaller changes size but not capacity" ) { | ||||
|         v.resize( 0 ); | ||||
|  | ||||
|         REQUIRE( v.size() == 0 ); | ||||
|         REQUIRE( v.capacity() >= 5 ); | ||||
|  | ||||
|         SECTION( "We can use the 'swap trick' to reset the capacity" ) { | ||||
|             std::vector<TestType> empty; | ||||
|             empty.swap( v ); | ||||
|  | ||||
|             REQUIRE( v.capacity() == 0 ); | ||||
|         } | ||||
|     } | ||||
|     SECTION( "reserving bigger changes capacity but not size" ) { | ||||
|         v.reserve( 10 ); | ||||
|  | ||||
|         REQUIRE( v.size() == 5 ); | ||||
|         REQUIRE( v.capacity() >= 10 ); | ||||
|     } | ||||
|     SECTION( "reserving smaller does not change size or capacity" ) { | ||||
|         v.reserve( 0 ); | ||||
|  | ||||
|         REQUIRE( v.size() == 5 ); | ||||
|         REQUIRE( v.capacity() >= 5 ); | ||||
|     } | ||||
| } | ||||
|  | ||||
| // https://github.com/philsquared/Catch/issues/166 | ||||
| TEST_CASE("A couple of nested sections followed by a failure", "[failing][.]") { | ||||
|     SECTION("Outer") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user