mirror of
https://github.com/meekrosoft/fff
synced 2026-01-23 08:25:59 +01:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
de617dedc7 | ||
|
|
88d194cc1d | ||
|
|
9d36a91ace | ||
|
|
c066468236 |
63
README.md
63
README.md
@@ -6,29 +6,34 @@
|
||||
[](https://gitter.im/wulfgarpro/fff?utm_source=share-link&utm_medium=link&utm_campaign=share-link)
|
||||
|
||||
- [A Fake Function Framework for C](#a-fake-function-framework-for-c)
|
||||
- [Hello Fake World!](#hello-fake-world)
|
||||
- [Capturing Arguments](#capturing-arguments)
|
||||
- [Return Values](#return-values)
|
||||
- [Resetting a Fake](#resetting-a-fake)
|
||||
- [Call History](#call-history)
|
||||
- [Hello fake world!](#hello-fake-world)
|
||||
- [Capturing arguments](#capturing-arguments)
|
||||
- [Return values](#return-values)
|
||||
- [Resetting a fake](#resetting-a-fake)
|
||||
- [Call history](#call-history)
|
||||
- [Default Argument History](#default-argument-history)
|
||||
- [User Defined Argument History](#user-defined-argument-history)
|
||||
- [Function Return Value Sequences](#function-return-value-sequences)
|
||||
- [Custom Return Value Delegate](#custom-return-value-delegate)
|
||||
- [Return Value History](#return-value-history)
|
||||
- [Custom Return Value Delegate Sequences](#custom-return-value-delegate-sequences)
|
||||
- [Return value history](#return-value-history)
|
||||
- [Variadic Functions](#variadic-functions)
|
||||
- [Common Questions](#common-questions)
|
||||
- [How do I specify calling conventions for my fake functions?](#how-do-i-specify-calling-conventions-for-my-fake-functions)
|
||||
- [How do I fake a function that returns a value by reference?](#how-do-i-fake-a-function-that-returns-a-value-by-reference)
|
||||
- [How do I fake a function with a function pointer parameter?](#how-do-i-fake-a-function-with-a-function-pointer-parameter)
|
||||
- [How do I reuse a fake across multiple test-suites?](#how-do-i-reuse-a-fake-across-multiple-test-suites)
|
||||
- [Specifying GCC Function Attributes](#specifying-gcc-function-attributes)
|
||||
- [Find Out More](#find-out-more)
|
||||
- [Find out more...](#find-out-more)
|
||||
- [Benefits](#benefits)
|
||||
- [Under the Hood](#under-the-hood)
|
||||
- [Under the hood](#under-the-hood)
|
||||
- [Cheat Sheet](#cheat-sheet)
|
||||
|
||||
## A Fake Function Framework for C
|
||||
fff is a micro-framework for creating fake C functions for tests. Because life
|
||||
is too short to spend time hand-writing fake functions for testing.
|
||||
|
||||
## Hello Fake World!
|
||||
|
||||
## Hello fake world!
|
||||
|
||||
Say you are testing an embedded user interface and you have a function that
|
||||
you want to create a fake for:
|
||||
@@ -82,7 +87,11 @@ typedef struct DISPLAY_init_Fake {
|
||||
DISPLAY_init_Fake DISPLAY_init_fake;
|
||||
```
|
||||
|
||||
## Capturing Arguments
|
||||
|
||||
|
||||
|
||||
|
||||
## Capturing arguments
|
||||
|
||||
Ok, enough with the toy examples. What about faking functions with arguments?
|
||||
|
||||
@@ -120,7 +129,9 @@ type (a char pointer in this example).
|
||||
A variable is created for every argument in the form
|
||||
`"function_name"fake.argN_val`
|
||||
|
||||
## Return Values
|
||||
|
||||
|
||||
## Return values
|
||||
|
||||
When you want to define a fake function that returns a value, you should use the
|
||||
`FAKE_VALUE_FUNC` macro. For instance:
|
||||
@@ -167,7 +178,10 @@ you would use a syntax like this:
|
||||
```c
|
||||
FAKE_VALUE_FUNC(double, pow, double, double);
|
||||
```
|
||||
## Resetting a Fake
|
||||
|
||||
|
||||
|
||||
## Resetting a fake
|
||||
|
||||
Good tests are isolated tests, so it is important to reset the fakes for each
|
||||
unit test. All the fakes have a reset function to reset their arguments and
|
||||
@@ -207,7 +221,7 @@ void setup()
|
||||
}
|
||||
```
|
||||
|
||||
## Call History
|
||||
## Call history
|
||||
Say you want to test that a function calls functionA, then functionB, then
|
||||
functionA again, how would you do that? Well fff maintains a call
|
||||
history so that it is easy to assert these expectations.
|
||||
@@ -288,6 +302,7 @@ override the default by defining it before include the `fff.h` like this:
|
||||
#include "../fff.h"
|
||||
```
|
||||
|
||||
|
||||
## Function Return Value Sequences
|
||||
|
||||
Often in testing we would like to test the behaviour of sequence of function call
|
||||
@@ -334,7 +349,7 @@ TEST_F(FFFTestSuite, when_value_custom_fake_called_THEN_it_returns_custom_return
|
||||
}
|
||||
```
|
||||
|
||||
### Custom Return Value Delegate Sequences
|
||||
## Custom Return Value Delegate Sequences
|
||||
|
||||
Say you have a function with an out parameter, and you want it to have a different behaviour
|
||||
on the first three calls, for example: set the value 'x' to the out parameter on the first call,
|
||||
@@ -380,7 +395,7 @@ The fake will call your custom functions in the order specified by the `SET_CUST
|
||||
macro. When the last custom fake is reached the fake will keep calling the last custom
|
||||
fake in the sequence. This macro works much like the `SET_RETURN_SEQ` macro.
|
||||
|
||||
## Return Value History
|
||||
## Return value history
|
||||
|
||||
Say you have two functions f1 and f2. f2 must be called to release some resource
|
||||
allocated by f1, but only in the cases where f1 returns zero. f1 could be
|
||||
@@ -422,9 +437,7 @@ could call the real `fprintf()` like this:
|
||||
Just like [return value delegates](#custom-return-value-delegate-sequences), you can also specify sequences for variadic functions using `SET_CUSTOM_FAKE_SEQ`.
|
||||
See the test files for examples.
|
||||
|
||||
## Common Questions
|
||||
|
||||
### How do I specify calling conventions for my fake functions?
|
||||
## How do I specify calling conventions for my fake functions?
|
||||
|
||||
fff has a limited capability for enabling specification of Microsoft's Visual C/C++ calling conventions, but this support must be enabled when generating fff's header file `fff.h`.
|
||||
|
||||
@@ -441,7 +454,7 @@ FAKE_VOID_FUNC(__cdecl, voidfunc1, int);
|
||||
FAKE_VALUE_FUNC(long, __cdecl, longfunc0);
|
||||
```
|
||||
|
||||
### How do I fake a function that returns a value by reference?
|
||||
## How do I fake a function that returns a value by reference?
|
||||
|
||||
The basic mechanism that fff provides you in this case is the custom_fake field described in the *Custom Return Value Delegate* example above.
|
||||
|
||||
@@ -481,7 +494,7 @@ TEST_F(FFFTestSuite, when_value_custom_fake_called_THEN_it_returns_custom_output
|
||||
}
|
||||
```
|
||||
|
||||
### How do I fake a function with a function pointer parameter?
|
||||
## How do I fake a function with a function pointer parameter?
|
||||
|
||||
Using fff to stub functions that have function pointer parameter can cause problems when trying to stub them. Presented here is an example how to deal with this situation.
|
||||
|
||||
@@ -565,8 +578,7 @@ TEST_F(FFFTestSuite, test_fake_with_function_pointer)
|
||||
ASSERT_EQ(cb_timeout_called, 1);
|
||||
}
|
||||
```
|
||||
|
||||
### How do I reuse a fake across multiple test-suites?
|
||||
## How do I reuse a fake across multiple test-suites?
|
||||
|
||||
fff functions like `FAKE_VALUE_FUNC` will perform both the declaration AND the definition of the fake function and the corresponding data structs. This cannot be placed in a header, since it will lead to multiple definitions of the fake functions.
|
||||
|
||||
@@ -593,14 +605,13 @@ DEFINE_FAKE_VALUE_FUNC_VARARG(int, value_function_vargs, const char *, int, ...)
|
||||
DEFINE_FAKE_VOID_FUNC_VARARG(void_function_vargs, const char *, int, ...);
|
||||
|
||||
```
|
||||
|
||||
## Specifying GCC Function Attributes
|
||||
|
||||
You can specify GCC function attributes for your fakes using the `FFF_GCC_FUNCTION_ATTRIBUTES` directive.
|
||||
|
||||
### Weak Functions
|
||||
|
||||
One usful attribute is the _weak_ attribute that marks a function such that it can be overridden by a non-weak variant at link time. Using weak functions in combination with fff can help simplify your testing approach.
|
||||
One usful attribute is the _weak_ attribute that marks a function such that it can be overridden by a non-weak variant at link time. Using weak functions in combination with FFF can help simplify your testing approach.
|
||||
|
||||
For example:
|
||||
* Define a library of fake functions, e.g. libfake.a.
|
||||
@@ -615,7 +626,7 @@ You can mark all fakes with the weak attribute like so:
|
||||
|
||||
See the example project that demonstrates the above approach: _./examples/weak_linking_.
|
||||
|
||||
## Find Out More
|
||||
## Find out more...
|
||||
|
||||
Look under the examples directory for full length examples in both C and C++.
|
||||
There is also a test suite for the framework under the test directory.
|
||||
|
||||
25
coverage.sh
Executable file
25
coverage.sh
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
fff_len=`cat fff.h | wc -l`
|
||||
|
||||
# test/fff_test_c.c
|
||||
gcc -E test/fff_test_c.c > out
|
||||
comm -13 <(sort < fff.h | uniq) <(sort < out | uniq) > unique_to_out # strip out fff.h include
|
||||
awk 'FNR==NR{a[$1];next}($1 in a){print}' fff.h unique_to_out > matched # find unique matches
|
||||
awk 'FNR==NR{a[$1];next}($1 in a){print}' matched fff.h > coverage # find coverage of matches in fff.h
|
||||
cov_len=`cat coverage | wc -l`
|
||||
echo "test/fff_test_c.c coverage:"
|
||||
echo "$cov_len / $fff_len" | bc -l
|
||||
|
||||
# test/fff_test_cpp.cpp
|
||||
gcc -E test/fff_test_cpp.cpp -I . > out
|
||||
comm -13 <(sort < fff.h | uniq) <(sort < out | uniq) > unique_to_out
|
||||
awk 'FNR==NR{a[$1];next}($1 in a){print}' fff.h unique_to_out > matched
|
||||
awk 'FNR==NR{a[$1];next}($1 in a){print}' matched fff.h > coverage
|
||||
cov_len_2=`cat coverage | wc -l`
|
||||
echo "test/fff_test_cpp.cpp coverage:"
|
||||
echo "$cov_len_2 / $fff_len" | bc -l
|
||||
|
||||
# total coverage
|
||||
echo "TOTAL COVERAGE:"
|
||||
echo "($cov_len + $cov_len_2) / ($fff_len * 2)" | bc -l
|
||||
@@ -479,14 +479,7 @@ def output_function_body(arg_count, has_varargs, is_value_function)
|
||||
putd_backslash "}"
|
||||
}
|
||||
putd_backslash "}"
|
||||
putd_backslash "if (FUNCNAME##_fake.custom_fake){ "
|
||||
indent {
|
||||
putd_backslash "RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(#{arg_list(arg_count)});" unless not is_value_function
|
||||
putd_backslash "SAVE_RET_HISTORY(FUNCNAME, ret);" unless not is_value_function
|
||||
putd_backslash "return ret;" unless not is_value_function
|
||||
putd_backslash "#{return_type}FUNCNAME##_fake.custom_fake(#{arg_list(arg_count)});"
|
||||
}
|
||||
putd_backslash "}"
|
||||
putd_backslash "if (FUNCNAME##_fake.custom_fake) #{return_type}FUNCNAME##_fake.custom_fake(#{arg_list(arg_count)});"
|
||||
end
|
||||
|
||||
putd_backslash "RETURN_FAKE_RESULT(FUNCNAME)" if is_value_function
|
||||
|
||||
231
fff.h
231
fff.h
@@ -173,9 +173,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -216,9 +214,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -262,9 +258,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -311,9 +305,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -363,9 +355,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -418,9 +408,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -476,9 +464,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -537,9 +523,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -601,9 +585,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -668,9 +650,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -738,9 +718,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -811,9 +789,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -887,9 +863,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -966,9 +940,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -1048,9 +1020,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -1133,9 +1103,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -1221,9 +1189,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -1312,9 +1278,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -1406,9 +1370,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -1503,9 +1465,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -1603,9 +1563,7 @@ FFF_END_EXTERN_C
|
||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19); \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -1650,12 +1608,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -1704,12 +1657,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -1761,12 +1709,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -1821,12 +1764,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -1884,12 +1822,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -1950,12 +1883,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -2019,12 +1947,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -2091,12 +2014,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -2166,12 +2084,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -2244,12 +2157,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -2325,12 +2233,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -2409,12 +2312,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -2496,12 +2394,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -2586,12 +2479,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -2679,12 +2567,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -2775,12 +2658,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -2874,12 +2752,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -2976,12 +2849,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -3081,12 +2949,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -3189,12 +3052,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
@@ -3300,12 +3158,7 @@ FFF_END_EXTERN_C
|
||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19); \
|
||||
} \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake){ \
|
||||
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19); \
|
||||
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||
return ret; \
|
||||
return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19); \
|
||||
} \
|
||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19); \
|
||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||
} \
|
||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||
|
||||
@@ -347,13 +347,6 @@ long my_custom_value_fake(void)
|
||||
{
|
||||
return MEANING_OF_LIFE;
|
||||
}
|
||||
|
||||
long my_custom_value_fake2(void)
|
||||
{
|
||||
static long val = 0;
|
||||
return val++;
|
||||
}
|
||||
|
||||
TEST_F(FFFTestSuite, when_value_custom_fake_called_THEN_it_returns_custom_return_value)
|
||||
{
|
||||
longfunc0_fake.custom_fake = my_custom_value_fake;
|
||||
@@ -361,18 +354,6 @@ TEST_F(FFFTestSuite, when_value_custom_fake_called_THEN_it_returns_custom_return
|
||||
ASSERT_EQ(MEANING_OF_LIFE, retval);
|
||||
}
|
||||
|
||||
TEST_F(FFFTestSuite, return_values_from_custom_fake_saved_in_history)
|
||||
{
|
||||
longfunc0_fake.custom_fake = my_custom_value_fake2;
|
||||
longfunc0();
|
||||
longfunc0();
|
||||
longfunc0();
|
||||
|
||||
ASSERT_EQ(0, longfunc0_fake.return_val_history[0]);
|
||||
ASSERT_EQ(1, longfunc0_fake.return_val_history[1]);
|
||||
ASSERT_EQ(2, longfunc0_fake.return_val_history[2]);
|
||||
}
|
||||
|
||||
int valuefunc3var_custom_fake1(const char *str, int a, va_list vl)
|
||||
{
|
||||
int arg;
|
||||
|
||||
Reference in New Issue
Block a user