From 014c49bef2b43829552e5cd953ee60f04936972b Mon Sep 17 00:00:00 2001 From: Mike Long Date: Tue, 14 Dec 2010 15:10:21 +0100 Subject: [PATCH] Improved Makefile and generate a C and C++ compatible header --- src/cmock.h | 604 +++++++++++++++++++++++++++++++++++++++ src/cppmock.hpp | 604 --------------------------------------- src/fakegen.rb | 31 +- src/test/Makefile | 2 +- src/test/cppmocktest.cpp | 2 +- 5 files changed, 630 insertions(+), 613 deletions(-) delete mode 100644 src/cppmock.hpp diff --git a/src/cmock.h b/src/cmock.h index d567ecc..8db58d7 100644 --- a/src/cmock.h +++ b/src/cmock.h @@ -1,6 +1,608 @@ #ifndef FAKE_FUNCTIONS #define FAKE_FUNCTIONS +#ifdef __cplusplus +#include +typedef void (*void_fptr)(); +std::vector reset_functions; +void RESET_FAKES() +{ + std::vector::iterator it = reset_functions.begin(); + for( ; it != reset_functions.end(); ++it) + { + void_fptr ptr = *it; + ptr(); + } + +} +#define STATIC_INIT(FUNCNAME) \ +class StaticInitializer_##FUNCNAME \ +{ \ +public: \ + StaticInitializer_##FUNCNAME() \ + { \ + reset_functions.push_back(FUNCNAME##_reset); \ + } \ +}; \ +static StaticInitializer_##FUNCNAME staticInitializer_##FUNCNAME; \ + + +/* Defining a void function with 0 parameters*/ +#define FAKE_VOID_FUNC0(FUNCNAME) \ +extern "C"{ \ + static int FUNCNAME##_call_count = 0; \ + void FUNCNAME(){ \ + FUNCNAME##_call_count++; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a void function with 1 parameters*/ +#define FAKE_VOID_FUNC1(FUNCNAME, ARG0_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static int FUNCNAME##_call_count = 0; \ + void FUNCNAME(ARG0_TYPE arg0){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_call_count++; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a void function with 2 parameters*/ +#define FAKE_VOID_FUNC2(FUNCNAME, ARG0_TYPE, ARG1_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static int FUNCNAME##_call_count = 0; \ + void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_call_count++; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a void function with 3 parameters*/ +#define FAKE_VOID_FUNC3(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static int FUNCNAME##_call_count = 0; \ + void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_call_count++; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a void function with 4 parameters*/ +#define FAKE_VOID_FUNC4(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static ARG3_TYPE FUNCNAME##_arg3_val; \ + static int FUNCNAME##_call_count = 0; \ + void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_arg3_val = arg3; \ + FUNCNAME##_call_count++; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a void function with 5 parameters*/ +#define FAKE_VOID_FUNC5(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static ARG3_TYPE FUNCNAME##_arg3_val; \ + static ARG4_TYPE FUNCNAME##_arg4_val; \ + static int FUNCNAME##_call_count = 0; \ + void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_arg3_val = arg3; \ + FUNCNAME##_arg4_val = arg4; \ + FUNCNAME##_call_count++; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ + FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a void function with 6 parameters*/ +#define FAKE_VOID_FUNC6(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static ARG3_TYPE FUNCNAME##_arg3_val; \ + static ARG4_TYPE FUNCNAME##_arg4_val; \ + static ARG5_TYPE FUNCNAME##_arg5_val; \ + static int FUNCNAME##_call_count = 0; \ + void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_arg3_val = arg3; \ + FUNCNAME##_arg4_val = arg4; \ + FUNCNAME##_arg5_val = arg5; \ + FUNCNAME##_call_count++; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ + FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ + FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a void function with 7 parameters*/ +#define FAKE_VOID_FUNC7(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static ARG3_TYPE FUNCNAME##_arg3_val; \ + static ARG4_TYPE FUNCNAME##_arg4_val; \ + static ARG5_TYPE FUNCNAME##_arg5_val; \ + static ARG6_TYPE FUNCNAME##_arg6_val; \ + static int FUNCNAME##_call_count = 0; \ + void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_arg3_val = arg3; \ + FUNCNAME##_arg4_val = arg4; \ + FUNCNAME##_arg5_val = arg5; \ + FUNCNAME##_arg6_val = arg6; \ + FUNCNAME##_call_count++; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ + FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ + FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ + FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a void function with 8 parameters*/ +#define FAKE_VOID_FUNC8(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static ARG3_TYPE FUNCNAME##_arg3_val; \ + static ARG4_TYPE FUNCNAME##_arg4_val; \ + static ARG5_TYPE FUNCNAME##_arg5_val; \ + static ARG6_TYPE FUNCNAME##_arg6_val; \ + static ARG7_TYPE FUNCNAME##_arg7_val; \ + static int FUNCNAME##_call_count = 0; \ + void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_arg3_val = arg3; \ + FUNCNAME##_arg4_val = arg4; \ + FUNCNAME##_arg5_val = arg5; \ + FUNCNAME##_arg6_val = arg6; \ + FUNCNAME##_arg7_val = arg7; \ + FUNCNAME##_call_count++; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ + FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ + FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ + FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \ + FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a void function with 9 parameters*/ +#define FAKE_VOID_FUNC9(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE, ARG8_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static ARG3_TYPE FUNCNAME##_arg3_val; \ + static ARG4_TYPE FUNCNAME##_arg4_val; \ + static ARG5_TYPE FUNCNAME##_arg5_val; \ + static ARG6_TYPE FUNCNAME##_arg6_val; \ + static ARG7_TYPE FUNCNAME##_arg7_val; \ + static ARG8_TYPE FUNCNAME##_arg8_val; \ + static int FUNCNAME##_call_count = 0; \ + void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7ARG8_TYPE arg8){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_arg3_val = arg3; \ + FUNCNAME##_arg4_val = arg4; \ + FUNCNAME##_arg5_val = arg5; \ + FUNCNAME##_arg6_val = arg6; \ + FUNCNAME##_arg7_val = arg7; \ + FUNCNAME##_arg8_val = arg8; \ + FUNCNAME##_call_count++; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ + FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ + FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ + FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \ + FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \ + FUNCNAME##_arg8_val = (ARG8_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a function returning a value with 0 parameters*/ +#define FAKE_VALUE_FUNC0(RETURN_TYPE, FUNCNAME) \ +extern "C"{ \ + static RETURN_TYPE FUNCNAME##_return_val; \ + static int FUNCNAME##_call_count = 0; \ + RETURN_TYPE FUNCNAME(){ \ + FUNCNAME##_call_count++; \ + return FUNCNAME##_return_val; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a function returning a value with 1 parameters*/ +#define FAKE_VALUE_FUNC1(RETURN_TYPE, FUNCNAME, ARG0_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static RETURN_TYPE FUNCNAME##_return_val; \ + static int FUNCNAME##_call_count = 0; \ + RETURN_TYPE FUNCNAME(ARG0_TYPE arg0){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_call_count++; \ + return FUNCNAME##_return_val; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a function returning a value with 2 parameters*/ +#define FAKE_VALUE_FUNC2(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static RETURN_TYPE FUNCNAME##_return_val; \ + static int FUNCNAME##_call_count = 0; \ + RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_call_count++; \ + return FUNCNAME##_return_val; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a function returning a value with 3 parameters*/ +#define FAKE_VALUE_FUNC3(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static RETURN_TYPE FUNCNAME##_return_val; \ + static int FUNCNAME##_call_count = 0; \ + RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_call_count++; \ + return FUNCNAME##_return_val; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a function returning a value with 4 parameters*/ +#define FAKE_VALUE_FUNC4(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static ARG3_TYPE FUNCNAME##_arg3_val; \ + static RETURN_TYPE FUNCNAME##_return_val; \ + static int FUNCNAME##_call_count = 0; \ + RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_arg3_val = arg3; \ + FUNCNAME##_call_count++; \ + return FUNCNAME##_return_val; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a function returning a value with 5 parameters*/ +#define FAKE_VALUE_FUNC5(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static ARG3_TYPE FUNCNAME##_arg3_val; \ + static ARG4_TYPE FUNCNAME##_arg4_val; \ + static RETURN_TYPE FUNCNAME##_return_val; \ + static int FUNCNAME##_call_count = 0; \ + RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_arg3_val = arg3; \ + FUNCNAME##_arg4_val = arg4; \ + FUNCNAME##_call_count++; \ + return FUNCNAME##_return_val; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ + FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a function returning a value with 6 parameters*/ +#define FAKE_VALUE_FUNC6(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static ARG3_TYPE FUNCNAME##_arg3_val; \ + static ARG4_TYPE FUNCNAME##_arg4_val; \ + static ARG5_TYPE FUNCNAME##_arg5_val; \ + static RETURN_TYPE FUNCNAME##_return_val; \ + static int FUNCNAME##_call_count = 0; \ + RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_arg3_val = arg3; \ + FUNCNAME##_arg4_val = arg4; \ + FUNCNAME##_arg5_val = arg5; \ + FUNCNAME##_call_count++; \ + return FUNCNAME##_return_val; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ + FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ + FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a function returning a value with 7 parameters*/ +#define FAKE_VALUE_FUNC7(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static ARG3_TYPE FUNCNAME##_arg3_val; \ + static ARG4_TYPE FUNCNAME##_arg4_val; \ + static ARG5_TYPE FUNCNAME##_arg5_val; \ + static ARG6_TYPE FUNCNAME##_arg6_val; \ + static RETURN_TYPE FUNCNAME##_return_val; \ + static int FUNCNAME##_call_count = 0; \ + RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_arg3_val = arg3; \ + FUNCNAME##_arg4_val = arg4; \ + FUNCNAME##_arg5_val = arg5; \ + FUNCNAME##_arg6_val = arg6; \ + FUNCNAME##_call_count++; \ + return FUNCNAME##_return_val; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ + FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ + FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ + FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a function returning a value with 8 parameters*/ +#define FAKE_VALUE_FUNC8(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static ARG3_TYPE FUNCNAME##_arg3_val; \ + static ARG4_TYPE FUNCNAME##_arg4_val; \ + static ARG5_TYPE FUNCNAME##_arg5_val; \ + static ARG6_TYPE FUNCNAME##_arg6_val; \ + static ARG7_TYPE FUNCNAME##_arg7_val; \ + static RETURN_TYPE FUNCNAME##_return_val; \ + static int FUNCNAME##_call_count = 0; \ + RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_arg3_val = arg3; \ + FUNCNAME##_arg4_val = arg4; \ + FUNCNAME##_arg5_val = arg5; \ + FUNCNAME##_arg6_val = arg6; \ + FUNCNAME##_arg7_val = arg7; \ + FUNCNAME##_call_count++; \ + return FUNCNAME##_return_val; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ + FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ + FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ + FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \ + FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a function returning a value with 9 parameters*/ +#define FAKE_VALUE_FUNC9(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE, ARG8_TYPE) \ +extern "C"{ \ + static ARG0_TYPE FUNCNAME##_arg0_val; \ + static ARG1_TYPE FUNCNAME##_arg1_val; \ + static ARG2_TYPE FUNCNAME##_arg2_val; \ + static ARG3_TYPE FUNCNAME##_arg3_val; \ + static ARG4_TYPE FUNCNAME##_arg4_val; \ + static ARG5_TYPE FUNCNAME##_arg5_val; \ + static ARG6_TYPE FUNCNAME##_arg6_val; \ + static ARG7_TYPE FUNCNAME##_arg7_val; \ + static ARG8_TYPE FUNCNAME##_arg8_val; \ + static RETURN_TYPE FUNCNAME##_return_val; \ + static int FUNCNAME##_call_count = 0; \ + RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7ARG8_TYPE arg8){ \ + FUNCNAME##_arg0_val = arg0; \ + FUNCNAME##_arg1_val = arg1; \ + FUNCNAME##_arg2_val = arg2; \ + FUNCNAME##_arg3_val = arg3; \ + FUNCNAME##_arg4_val = arg4; \ + FUNCNAME##_arg5_val = arg5; \ + FUNCNAME##_arg6_val = arg6; \ + FUNCNAME##_arg7_val = arg7; \ + FUNCNAME##_arg8_val = arg8; \ + FUNCNAME##_call_count++; \ + return FUNCNAME##_return_val; \ + } \ + void FUNCNAME##_reset(){ \ + FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ + FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ + FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ + FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ + FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ + FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ + FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \ + FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \ + FUNCNAME##_arg8_val = (ARG8_TYPE) 0; \ + FUNCNAME##_call_count = 0; \ + } \ +} \ +STATIC_INIT(FUNCNAME) \ + + +/* Defining a function to reset a fake function */ +#define RESET_FAKE(FUNCNAME) { \ + FUNCNAME##_reset(); \ +} \ + +#else /* ansi c */ /* Defining a void function with 0 parameters*/ #define FAKE_VOID_FUNC0(FUNCNAME) \ @@ -517,4 +1119,6 @@ FUNCNAME##_reset(); \ } \ +#endif /* cpp/ansi c */ + #endif // FAKE_FUNCTIONS diff --git a/src/cppmock.hpp b/src/cppmock.hpp deleted file mode 100644 index 3d04750..0000000 --- a/src/cppmock.hpp +++ /dev/null @@ -1,604 +0,0 @@ -#ifndef FAKE_FUNCTIONS -#define FAKE_FUNCTIONS - -#include -typedef void (*void_fptr)(); -std::vector reset_functions; -void RESET_FAKES() -{ - std::vector::iterator it = reset_functions.begin(); - for( ; it != reset_functions.end(); ++it) - { - void_fptr ptr = *it; - ptr(); - } - -} -#define STATIC_INIT(FUNCNAME) \ -class StaticInitializer_##FUNCNAME \ -{ \ -public: \ - StaticInitializer_##FUNCNAME() \ - { \ - reset_functions.push_back(FUNCNAME##_reset); \ - } \ -}; \ -static StaticInitializer_##FUNCNAME staticInitializer_##FUNCNAME; \ - - -/* Defining a void function with 0 parameters*/ -#define FAKE_VOID_FUNC0(FUNCNAME) \ -extern "C"{ \ - static int FUNCNAME##_call_count = 0; \ - void FUNCNAME(){ \ - FUNCNAME##_call_count++; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a void function with 1 parameters*/ -#define FAKE_VOID_FUNC1(FUNCNAME, ARG0_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static int FUNCNAME##_call_count = 0; \ - void FUNCNAME(ARG0_TYPE arg0){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_call_count++; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a void function with 2 parameters*/ -#define FAKE_VOID_FUNC2(FUNCNAME, ARG0_TYPE, ARG1_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static int FUNCNAME##_call_count = 0; \ - void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_call_count++; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a void function with 3 parameters*/ -#define FAKE_VOID_FUNC3(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static int FUNCNAME##_call_count = 0; \ - void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_call_count++; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a void function with 4 parameters*/ -#define FAKE_VOID_FUNC4(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static ARG3_TYPE FUNCNAME##_arg3_val; \ - static int FUNCNAME##_call_count = 0; \ - void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_arg3_val = arg3; \ - FUNCNAME##_call_count++; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a void function with 5 parameters*/ -#define FAKE_VOID_FUNC5(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static ARG3_TYPE FUNCNAME##_arg3_val; \ - static ARG4_TYPE FUNCNAME##_arg4_val; \ - static int FUNCNAME##_call_count = 0; \ - void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_arg3_val = arg3; \ - FUNCNAME##_arg4_val = arg4; \ - FUNCNAME##_call_count++; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ - FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a void function with 6 parameters*/ -#define FAKE_VOID_FUNC6(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static ARG3_TYPE FUNCNAME##_arg3_val; \ - static ARG4_TYPE FUNCNAME##_arg4_val; \ - static ARG5_TYPE FUNCNAME##_arg5_val; \ - static int FUNCNAME##_call_count = 0; \ - void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_arg3_val = arg3; \ - FUNCNAME##_arg4_val = arg4; \ - FUNCNAME##_arg5_val = arg5; \ - FUNCNAME##_call_count++; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ - FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ - FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a void function with 7 parameters*/ -#define FAKE_VOID_FUNC7(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static ARG3_TYPE FUNCNAME##_arg3_val; \ - static ARG4_TYPE FUNCNAME##_arg4_val; \ - static ARG5_TYPE FUNCNAME##_arg5_val; \ - static ARG6_TYPE FUNCNAME##_arg6_val; \ - static int FUNCNAME##_call_count = 0; \ - void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_arg3_val = arg3; \ - FUNCNAME##_arg4_val = arg4; \ - FUNCNAME##_arg5_val = arg5; \ - FUNCNAME##_arg6_val = arg6; \ - FUNCNAME##_call_count++; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ - FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ - FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ - FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a void function with 8 parameters*/ -#define FAKE_VOID_FUNC8(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static ARG3_TYPE FUNCNAME##_arg3_val; \ - static ARG4_TYPE FUNCNAME##_arg4_val; \ - static ARG5_TYPE FUNCNAME##_arg5_val; \ - static ARG6_TYPE FUNCNAME##_arg6_val; \ - static ARG7_TYPE FUNCNAME##_arg7_val; \ - static int FUNCNAME##_call_count = 0; \ - void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_arg3_val = arg3; \ - FUNCNAME##_arg4_val = arg4; \ - FUNCNAME##_arg5_val = arg5; \ - FUNCNAME##_arg6_val = arg6; \ - FUNCNAME##_arg7_val = arg7; \ - FUNCNAME##_call_count++; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ - FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ - FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ - FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \ - FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a void function with 9 parameters*/ -#define FAKE_VOID_FUNC9(FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE, ARG8_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static ARG3_TYPE FUNCNAME##_arg3_val; \ - static ARG4_TYPE FUNCNAME##_arg4_val; \ - static ARG5_TYPE FUNCNAME##_arg5_val; \ - static ARG6_TYPE FUNCNAME##_arg6_val; \ - static ARG7_TYPE FUNCNAME##_arg7_val; \ - static ARG8_TYPE FUNCNAME##_arg8_val; \ - static int FUNCNAME##_call_count = 0; \ - void FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7ARG8_TYPE arg8){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_arg3_val = arg3; \ - FUNCNAME##_arg4_val = arg4; \ - FUNCNAME##_arg5_val = arg5; \ - FUNCNAME##_arg6_val = arg6; \ - FUNCNAME##_arg7_val = arg7; \ - FUNCNAME##_arg8_val = arg8; \ - FUNCNAME##_call_count++; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ - FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ - FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ - FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \ - FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \ - FUNCNAME##_arg8_val = (ARG8_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a function returning a value with 0 parameters*/ -#define FAKE_VALUE_FUNC0(RETURN_TYPE, FUNCNAME) \ -extern "C"{ \ - static RETURN_TYPE FUNCNAME##_return_val; \ - static int FUNCNAME##_call_count = 0; \ - RETURN_TYPE FUNCNAME(){ \ - FUNCNAME##_call_count++; \ - return FUNCNAME##_return_val; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a function returning a value with 1 parameters*/ -#define FAKE_VALUE_FUNC1(RETURN_TYPE, FUNCNAME, ARG0_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static RETURN_TYPE FUNCNAME##_return_val; \ - static int FUNCNAME##_call_count = 0; \ - RETURN_TYPE FUNCNAME(ARG0_TYPE arg0){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_call_count++; \ - return FUNCNAME##_return_val; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a function returning a value with 2 parameters*/ -#define FAKE_VALUE_FUNC2(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static RETURN_TYPE FUNCNAME##_return_val; \ - static int FUNCNAME##_call_count = 0; \ - RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_call_count++; \ - return FUNCNAME##_return_val; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a function returning a value with 3 parameters*/ -#define FAKE_VALUE_FUNC3(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static RETURN_TYPE FUNCNAME##_return_val; \ - static int FUNCNAME##_call_count = 0; \ - RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_call_count++; \ - return FUNCNAME##_return_val; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a function returning a value with 4 parameters*/ -#define FAKE_VALUE_FUNC4(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static ARG3_TYPE FUNCNAME##_arg3_val; \ - static RETURN_TYPE FUNCNAME##_return_val; \ - static int FUNCNAME##_call_count = 0; \ - RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_arg3_val = arg3; \ - FUNCNAME##_call_count++; \ - return FUNCNAME##_return_val; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a function returning a value with 5 parameters*/ -#define FAKE_VALUE_FUNC5(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static ARG3_TYPE FUNCNAME##_arg3_val; \ - static ARG4_TYPE FUNCNAME##_arg4_val; \ - static RETURN_TYPE FUNCNAME##_return_val; \ - static int FUNCNAME##_call_count = 0; \ - RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_arg3_val = arg3; \ - FUNCNAME##_arg4_val = arg4; \ - FUNCNAME##_call_count++; \ - return FUNCNAME##_return_val; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ - FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a function returning a value with 6 parameters*/ -#define FAKE_VALUE_FUNC6(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static ARG3_TYPE FUNCNAME##_arg3_val; \ - static ARG4_TYPE FUNCNAME##_arg4_val; \ - static ARG5_TYPE FUNCNAME##_arg5_val; \ - static RETURN_TYPE FUNCNAME##_return_val; \ - static int FUNCNAME##_call_count = 0; \ - RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_arg3_val = arg3; \ - FUNCNAME##_arg4_val = arg4; \ - FUNCNAME##_arg5_val = arg5; \ - FUNCNAME##_call_count++; \ - return FUNCNAME##_return_val; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ - FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ - FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a function returning a value with 7 parameters*/ -#define FAKE_VALUE_FUNC7(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static ARG3_TYPE FUNCNAME##_arg3_val; \ - static ARG4_TYPE FUNCNAME##_arg4_val; \ - static ARG5_TYPE FUNCNAME##_arg5_val; \ - static ARG6_TYPE FUNCNAME##_arg6_val; \ - static RETURN_TYPE FUNCNAME##_return_val; \ - static int FUNCNAME##_call_count = 0; \ - RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_arg3_val = arg3; \ - FUNCNAME##_arg4_val = arg4; \ - FUNCNAME##_arg5_val = arg5; \ - FUNCNAME##_arg6_val = arg6; \ - FUNCNAME##_call_count++; \ - return FUNCNAME##_return_val; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ - FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ - FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ - FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a function returning a value with 8 parameters*/ -#define FAKE_VALUE_FUNC8(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static ARG3_TYPE FUNCNAME##_arg3_val; \ - static ARG4_TYPE FUNCNAME##_arg4_val; \ - static ARG5_TYPE FUNCNAME##_arg5_val; \ - static ARG6_TYPE FUNCNAME##_arg6_val; \ - static ARG7_TYPE FUNCNAME##_arg7_val; \ - static RETURN_TYPE FUNCNAME##_return_val; \ - static int FUNCNAME##_call_count = 0; \ - RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_arg3_val = arg3; \ - FUNCNAME##_arg4_val = arg4; \ - FUNCNAME##_arg5_val = arg5; \ - FUNCNAME##_arg6_val = arg6; \ - FUNCNAME##_arg7_val = arg7; \ - FUNCNAME##_call_count++; \ - return FUNCNAME##_return_val; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ - FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ - FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ - FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \ - FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a function returning a value with 9 parameters*/ -#define FAKE_VALUE_FUNC9(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE, ARG8_TYPE) \ -extern "C"{ \ - static ARG0_TYPE FUNCNAME##_arg0_val; \ - static ARG1_TYPE FUNCNAME##_arg1_val; \ - static ARG2_TYPE FUNCNAME##_arg2_val; \ - static ARG3_TYPE FUNCNAME##_arg3_val; \ - static ARG4_TYPE FUNCNAME##_arg4_val; \ - static ARG5_TYPE FUNCNAME##_arg5_val; \ - static ARG6_TYPE FUNCNAME##_arg6_val; \ - static ARG7_TYPE FUNCNAME##_arg7_val; \ - static ARG8_TYPE FUNCNAME##_arg8_val; \ - static RETURN_TYPE FUNCNAME##_return_val; \ - static int FUNCNAME##_call_count = 0; \ - RETURN_TYPE FUNCNAME(ARG0_TYPE arg0ARG1_TYPE arg1ARG2_TYPE arg2ARG3_TYPE arg3ARG4_TYPE arg4ARG5_TYPE arg5ARG6_TYPE arg6ARG7_TYPE arg7ARG8_TYPE arg8){ \ - FUNCNAME##_arg0_val = arg0; \ - FUNCNAME##_arg1_val = arg1; \ - FUNCNAME##_arg2_val = arg2; \ - FUNCNAME##_arg3_val = arg3; \ - FUNCNAME##_arg4_val = arg4; \ - FUNCNAME##_arg5_val = arg5; \ - FUNCNAME##_arg6_val = arg6; \ - FUNCNAME##_arg7_val = arg7; \ - FUNCNAME##_arg8_val = arg8; \ - FUNCNAME##_call_count++; \ - return FUNCNAME##_return_val; \ - } \ - void FUNCNAME##_reset(){ \ - FUNCNAME##_arg0_val = (ARG0_TYPE) 0; \ - FUNCNAME##_arg1_val = (ARG1_TYPE) 0; \ - FUNCNAME##_arg2_val = (ARG2_TYPE) 0; \ - FUNCNAME##_arg3_val = (ARG3_TYPE) 0; \ - FUNCNAME##_arg4_val = (ARG4_TYPE) 0; \ - FUNCNAME##_arg5_val = (ARG5_TYPE) 0; \ - FUNCNAME##_arg6_val = (ARG6_TYPE) 0; \ - FUNCNAME##_arg7_val = (ARG7_TYPE) 0; \ - FUNCNAME##_arg8_val = (ARG8_TYPE) 0; \ - FUNCNAME##_call_count = 0; \ - } \ -} \ -STATIC_INIT(FUNCNAME) \ - - -/* Defining a function to reset a fake function */ -#define RESET_FAKE(FUNCNAME) { \ - FUNCNAME##_reset(); \ -} \ - -#endif // FAKE_FUNCTIONS diff --git a/src/fakegen.rb b/src/fakegen.rb index 272827c..fd312c2 100644 --- a/src/fakegen.rb +++ b/src/fakegen.rb @@ -22,7 +22,7 @@ def output_macro(args, is_value_function) puts " } \\" output_reset_function(args) } - puts "STATIC_INIT(FUNCNAME) \\" + puts "STATIC_INIT(FUNCNAME) \\" if $cpp_output puts "" end @@ -125,6 +125,13 @@ def define_reset_fake puts "#define RESET_FAKE(FUNCNAME) { \\" puts " FUNCNAME##_reset(); \\" puts "} \\" + puts "" +end + +def extern_c + puts "extern \"C\"{ \\" unless !$cpp_output + yield + puts "} \\" unless !$cpp_output end def include_guard @@ -138,18 +145,28 @@ def include_guard puts "#endif // FAKE_FUNCTIONS" end -def extern_c - puts "extern \"C\"{ \\" unless !$cpp_output - yield - puts "} \\" unless !$cpp_output +def output_c_and_cpp + + include_guard { + puts "#ifdef __cplusplus" + $cpp_output = true + yield + + puts "#else /* ansi c */" + + $cpp_output = false + yield + puts "#endif /* cpp/ansi c */" + } end + # lets generate!! -include_guard { +output_c_and_cpp{ output_reset_code if $cpp_output output_static_initializer if $cpp_output 10.times {|arg_count| output_macro(arg_count, false)} 10.times {|arg_count| output_macro(arg_count, true)} define_reset_fake -} +} \ No newline at end of file diff --git a/src/test/Makefile b/src/test/Makefile index 2e5e2a1..0f9a499 100644 --- a/src/test/Makefile +++ b/src/test/Makefile @@ -28,7 +28,7 @@ clean: @echo "Cleaning backups" @echo " rm -f *~" rm -f *~ - @echo "Removing programm" + @echo "Removing programs" @echo " rm -f "$(C_PROGNAME) rm -f $(C_PROGNAME) @echo " rm -f "$(CPP_PROGNAME) diff --git a/src/test/cppmocktest.cpp b/src/test/cppmocktest.cpp index 5e1d6ed..3d3771d 100644 --- a/src/test/cppmocktest.cpp +++ b/src/test/cppmocktest.cpp @@ -6,7 +6,7 @@ // Description : Hello World in C++, Ansi-style //============================================================================ -#include "../cppmock.hpp" +#include "../cmock.h" extern "C"{ #include "embedded.h"