mirror of
https://github.com/meekrosoft/fff
synced 2026-01-23 08:25:59 +01:00
Compare commits
6 Commits
coverage
...
github-wor
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5bcc26d15e | ||
|
|
7e09f07e5b | ||
|
|
b9f11dcd8a | ||
|
|
ab47e7fc5b | ||
|
|
f9c08aec81 | ||
|
|
cf2c4780ef |
28
.github/workflows/build.yaml
vendored
Normal file
28
.github/workflows/build.yaml
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
name: Checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
windows:
|
||||||
|
name: run on windows
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: ilammy/msvc-dev-cmd@v1.4.1
|
||||||
|
- name: compile
|
||||||
|
run: |
|
||||||
|
dir /s /b /o:gn
|
||||||
|
mac-and-ubuntu:
|
||||||
|
runs-on: ${{matrix.os}}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macos-latest, ubuntu-latest]
|
||||||
|
name: ${{matrix.os}}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: compile
|
||||||
|
run: |
|
||||||
|
./buildandtest
|
||||||
63
README.md
63
README.md
@@ -6,34 +6,29 @@
|
|||||||
[](https://gitter.im/wulfgarpro/fff?utm_source=share-link&utm_medium=link&utm_campaign=share-link)
|
[](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)
|
- [A Fake Function Framework for C](#a-fake-function-framework-for-c)
|
||||||
- [Hello fake world!](#hello-fake-world)
|
- [Hello Fake World!](#hello-fake-world)
|
||||||
- [Capturing arguments](#capturing-arguments)
|
- [Capturing Arguments](#capturing-arguments)
|
||||||
- [Return values](#return-values)
|
- [Return Values](#return-values)
|
||||||
- [Resetting a fake](#resetting-a-fake)
|
- [Resetting a Fake](#resetting-a-fake)
|
||||||
- [Call history](#call-history)
|
- [Call History](#call-history)
|
||||||
- [Default Argument History](#default-argument-history)
|
- [Default Argument History](#default-argument-history)
|
||||||
- [User Defined Argument History](#user-defined-argument-history)
|
- [User Defined Argument History](#user-defined-argument-history)
|
||||||
- [Function Return Value Sequences](#function-return-value-sequences)
|
- [Function Return Value Sequences](#function-return-value-sequences)
|
||||||
- [Custom Return Value Delegate](#custom-return-value-delegate)
|
- [Custom Return Value Delegate](#custom-return-value-delegate)
|
||||||
- [Custom Return Value Delegate Sequences](#custom-return-value-delegate-sequences)
|
- [Return Value History](#return-value-history)
|
||||||
- [Return value history](#return-value-history)
|
|
||||||
- [Variadic Functions](#variadic-functions)
|
- [Variadic Functions](#variadic-functions)
|
||||||
- [How do I specify calling conventions for my fake functions?](#how-do-i-specify-calling-conventions-for-my-fake-functions)
|
- [Common Questions](#common-questions)
|
||||||
- [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)
|
- [Specifying GCC Function Attributes](#specifying-gcc-function-attributes)
|
||||||
- [Find out more...](#find-out-more)
|
- [Find Out More](#find-out-more)
|
||||||
- [Benefits](#benefits)
|
- [Benefits](#benefits)
|
||||||
- [Under the hood](#under-the-hood)
|
- [Under the Hood](#under-the-hood)
|
||||||
- [Cheat Sheet](#cheat-sheet)
|
- [Cheat Sheet](#cheat-sheet)
|
||||||
|
|
||||||
## A Fake Function Framework for C
|
## A Fake Function Framework for C
|
||||||
fff is a micro-framework for creating fake C functions for tests. Because life
|
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.
|
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
|
Say you are testing an embedded user interface and you have a function that
|
||||||
you want to create a fake for:
|
you want to create a fake for:
|
||||||
@@ -87,11 +82,7 @@ typedef struct DISPLAY_init_Fake {
|
|||||||
DISPLAY_init_Fake 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?
|
Ok, enough with the toy examples. What about faking functions with arguments?
|
||||||
|
|
||||||
@@ -129,9 +120,7 @@ type (a char pointer in this example).
|
|||||||
A variable is created for every argument in the form
|
A variable is created for every argument in the form
|
||||||
`"function_name"fake.argN_val`
|
`"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
|
When you want to define a fake function that returns a value, you should use the
|
||||||
`FAKE_VALUE_FUNC` macro. For instance:
|
`FAKE_VALUE_FUNC` macro. For instance:
|
||||||
@@ -178,10 +167,7 @@ you would use a syntax like this:
|
|||||||
```c
|
```c
|
||||||
FAKE_VALUE_FUNC(double, pow, double, double);
|
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
|
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
|
unit test. All the fakes have a reset function to reset their arguments and
|
||||||
@@ -221,7 +207,7 @@ void setup()
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Call history
|
## Call History
|
||||||
Say you want to test that a function calls functionA, then functionB, then
|
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
|
functionA again, how would you do that? Well fff maintains a call
|
||||||
history so that it is easy to assert these expectations.
|
history so that it is easy to assert these expectations.
|
||||||
@@ -302,7 +288,6 @@ override the default by defining it before include the `fff.h` like this:
|
|||||||
#include "../fff.h"
|
#include "../fff.h"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Function Return Value Sequences
|
## Function Return Value Sequences
|
||||||
|
|
||||||
Often in testing we would like to test the behaviour of sequence of function call
|
Often in testing we would like to test the behaviour of sequence of function call
|
||||||
@@ -349,7 +334,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
|
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,
|
on the first three calls, for example: set the value 'x' to the out parameter on the first call,
|
||||||
@@ -395,7 +380,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
|
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.
|
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
|
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
|
allocated by f1, but only in the cases where f1 returns zero. f1 could be
|
||||||
@@ -437,7 +422,9 @@ 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`.
|
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.
|
See the test files for examples.
|
||||||
|
|
||||||
## How do I specify calling conventions for my fake functions?
|
## Common Questions
|
||||||
|
|
||||||
|
### 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`.
|
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`.
|
||||||
|
|
||||||
@@ -454,7 +441,7 @@ FAKE_VOID_FUNC(__cdecl, voidfunc1, int);
|
|||||||
FAKE_VALUE_FUNC(long, __cdecl, longfunc0);
|
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.
|
The basic mechanism that fff provides you in this case is the custom_fake field described in the *Custom Return Value Delegate* example above.
|
||||||
|
|
||||||
@@ -494,7 +481,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.
|
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.
|
||||||
|
|
||||||
@@ -578,7 +565,8 @@ TEST_F(FFFTestSuite, test_fake_with_function_pointer)
|
|||||||
ASSERT_EQ(cb_timeout_called, 1);
|
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.
|
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.
|
||||||
|
|
||||||
@@ -605,13 +593,14 @@ DEFINE_FAKE_VALUE_FUNC_VARARG(int, value_function_vargs, const char *, int, ...)
|
|||||||
DEFINE_FAKE_VOID_FUNC_VARARG(void_function_vargs, const char *, int, ...);
|
DEFINE_FAKE_VOID_FUNC_VARARG(void_function_vargs, const char *, int, ...);
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Specifying GCC Function Attributes
|
## Specifying GCC Function Attributes
|
||||||
|
|
||||||
You can specify GCC function attributes for your fakes using the `FFF_GCC_FUNCTION_ATTRIBUTES` directive.
|
You can specify GCC function attributes for your fakes using the `FFF_GCC_FUNCTION_ATTRIBUTES` directive.
|
||||||
|
|
||||||
### Weak Functions
|
### 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:
|
For example:
|
||||||
* Define a library of fake functions, e.g. libfake.a.
|
* Define a library of fake functions, e.g. libfake.a.
|
||||||
@@ -626,7 +615,7 @@ You can mark all fakes with the weak attribute like so:
|
|||||||
|
|
||||||
See the example project that demonstrates the above approach: _./examples/weak_linking_.
|
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++.
|
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.
|
There is also a test suite for the framework under the test directory.
|
||||||
|
|||||||
@@ -479,7 +479,14 @@ def output_function_body(arg_count, has_varargs, is_value_function)
|
|||||||
putd_backslash "}"
|
putd_backslash "}"
|
||||||
}
|
}
|
||||||
putd_backslash "}"
|
putd_backslash "}"
|
||||||
putd_backslash "if (FUNCNAME##_fake.custom_fake) #{return_type}FUNCNAME##_fake.custom_fake(#{arg_list(arg_count)});"
|
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 "}"
|
||||||
end
|
end
|
||||||
|
|
||||||
putd_backslash "RETURN_FAKE_RESULT(FUNCNAME)" if is_value_function
|
putd_backslash "RETURN_FAKE_RESULT(FUNCNAME)" if is_value_function
|
||||||
|
|||||||
231
fff.h
231
fff.h
@@ -173,7 +173,9 @@ FFF_END_EXTERN_C
|
|||||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -214,7 +216,9 @@ FFF_END_EXTERN_C
|
|||||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -258,7 +262,9 @@ FFF_END_EXTERN_C
|
|||||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -305,7 +311,9 @@ FFF_END_EXTERN_C
|
|||||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -355,7 +363,9 @@ FFF_END_EXTERN_C
|
|||||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -408,7 +418,9 @@ FFF_END_EXTERN_C
|
|||||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -464,7 +476,9 @@ FFF_END_EXTERN_C
|
|||||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -523,7 +537,9 @@ FFF_END_EXTERN_C
|
|||||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -585,7 +601,9 @@ FFF_END_EXTERN_C
|
|||||||
FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -650,7 +668,9 @@ 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); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -718,7 +738,9 @@ 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); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -789,7 +811,9 @@ 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); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -863,7 +887,9 @@ 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); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -940,7 +966,9 @@ 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); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -1020,7 +1048,9 @@ 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); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -1103,7 +1133,9 @@ 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); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -1189,7 +1221,9 @@ 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); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -1278,7 +1312,9 @@ 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); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -1370,7 +1406,9 @@ 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); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -1465,7 +1503,9 @@ 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); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -1563,7 +1603,9 @@ 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); \
|
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) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|
||||||
@@ -1608,7 +1650,12 @@ FFF_END_EXTERN_C
|
|||||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](); \
|
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(); \
|
if (FUNCNAME##_fake.custom_fake){ \
|
||||||
|
RETURN_TYPE ret = FUNCNAME##_fake.custom_fake(); \
|
||||||
|
SAVE_RET_HISTORY(FUNCNAME, ret); \
|
||||||
|
return ret; \
|
||||||
|
return FUNCNAME##_fake.custom_fake(); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -1657,7 +1704,12 @@ FFF_END_EXTERN_C
|
|||||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0); \
|
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -1709,7 +1761,12 @@ FFF_END_EXTERN_C
|
|||||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1); \
|
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -1764,7 +1821,12 @@ FFF_END_EXTERN_C
|
|||||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2); \
|
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -1822,7 +1884,12 @@ FFF_END_EXTERN_C
|
|||||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3); \
|
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -1883,7 +1950,12 @@ FFF_END_EXTERN_C
|
|||||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4); \
|
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
if (FUNCNAME##_fake.custom_fake) return FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -1947,7 +2019,12 @@ FFF_END_EXTERN_C
|
|||||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5); \
|
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 FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -2014,7 +2091,12 @@ FFF_END_EXTERN_C
|
|||||||
return FUNCNAME##_fake.custom_fake_seq[FUNCNAME##_fake.custom_fake_seq_len-1](arg0, arg1, arg2, arg3, arg4, arg5, arg6); \
|
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 FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -2084,7 +2166,12 @@ 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); \
|
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 FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -2157,7 +2244,12 @@ 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); \
|
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 FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -2233,7 +2325,12 @@ 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); \
|
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 FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -2312,7 +2409,12 @@ 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); \
|
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 FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -2394,7 +2496,12 @@ 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); \
|
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 FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -2479,7 +2586,12 @@ 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); \
|
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 FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -2567,7 +2679,12 @@ 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); \
|
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 FUNCNAME##_fake.custom_fake(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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -2658,7 +2775,12 @@ 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); \
|
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 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_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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -2752,7 +2874,12 @@ 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); \
|
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 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_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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -2849,7 +2976,12 @@ 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); \
|
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 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_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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -2949,7 +3081,12 @@ 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); \
|
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 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_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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -3052,7 +3189,12 @@ 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); \
|
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 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_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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
@@ -3158,7 +3300,12 @@ 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); \
|
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 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_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); \
|
||||||
|
} \
|
||||||
RETURN_FAKE_RESULT(FUNCNAME) \
|
RETURN_FAKE_RESULT(FUNCNAME) \
|
||||||
} \
|
} \
|
||||||
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
DEFINE_RESET_FUNCTION(FUNCNAME) \
|
||||||
|
|||||||
@@ -347,6 +347,13 @@ long my_custom_value_fake(void)
|
|||||||
{
|
{
|
||||||
return MEANING_OF_LIFE;
|
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)
|
TEST_F(FFFTestSuite, when_value_custom_fake_called_THEN_it_returns_custom_return_value)
|
||||||
{
|
{
|
||||||
longfunc0_fake.custom_fake = my_custom_value_fake;
|
longfunc0_fake.custom_fake = my_custom_value_fake;
|
||||||
@@ -354,6 +361,18 @@ TEST_F(FFFTestSuite, when_value_custom_fake_called_THEN_it_returns_custom_return
|
|||||||
ASSERT_EQ(MEANING_OF_LIFE, retval);
|
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 valuefunc3var_custom_fake1(const char *str, int a, va_list vl)
|
||||||
{
|
{
|
||||||
int arg;
|
int arg;
|
||||||
|
|||||||
Reference in New Issue
Block a user