mirror of
https://github.com/mat007/turtle.git
synced 2026-06-22 12:13:43 +00:00
Reduce exposed interface (macros)
Move implementation details to mock_impl.hpp and remove MOCK_*_TPL macros. Make sure all exposed macros (in mock.hpp) are properly documented. Closes #105
This commit is contained in:
parent
3dda0bf328
commit
bd0a4cfc73
9 changed files with 191 additions and 217 deletions
|
|
@ -12,7 +12,7 @@ Released -
|
|||
|
||||
* Allow auto-deducing signature in `MOCK_METHOD_(NON_)CONST`
|
||||
* Replaced Boost facilities with std:: equivalents where existing in C++14
|
||||
* Deprecated MOCK_FUNCTOR_TPL as no longer required, use the non _TPL variant even for templates
|
||||
* Deprecated MOCK_*_TPL as no longer required, use the non _TPL variant even for templates
|
||||
* Added MOCK_PROTECT_FUNCTION_SIG to pass function signatures with commas in the return type
|
||||
|
||||
[endsect]
|
||||
|
|
|
|||
|
|
@ -215,10 +215,8 @@ namespace member_function_example_7 {
|
|||
template<typename T>
|
||||
MOCK_CLASS(mock_class)
|
||||
{
|
||||
MOCK_METHOD_TPL(
|
||||
method,
|
||||
1,
|
||||
void(const T&)) // the _TPL variants must be used if the signature includes a template parameter of the class
|
||||
MOCK_METHOD(method, 1,
|
||||
void(const T&)) // includes a template parameter of the class
|
||||
};
|
||||
//]
|
||||
} // namespace member_function_example_7
|
||||
|
|
@ -262,7 +260,7 @@ namespace static_member_function_example_2 {
|
|||
template<typename T>
|
||||
MOCK_CLASS(mock_class)
|
||||
{
|
||||
MOCK_STATIC_METHOD_TPL(method, 1, void(T))
|
||||
MOCK_STATIC_METHOD(method, 1, void(T)) // includes a template parameter of the class
|
||||
};
|
||||
//]
|
||||
} // namespace static_member_function_example_2
|
||||
|
|
@ -296,7 +294,7 @@ template<typename T>
|
|||
MOCK_CLASS(mock_class)
|
||||
{
|
||||
MOCK_CONSTRUCTOR(mock_class, 2, (int, const std::string&), identifier)
|
||||
MOCK_CONSTRUCTOR_TPL(mock_class, 2, (T, const std::string&), identifier_2)
|
||||
MOCK_CONSTRUCTOR(mock_class, 2, (T, const std::string&), identifier_2) // includes a template parameter of the class
|
||||
};
|
||||
//]
|
||||
} // namespace constructor_example_2
|
||||
|
|
@ -347,8 +345,7 @@ namespace conversion_operator_example_2 {
|
|||
template<typename T>
|
||||
MOCK_CLASS(mock_class)
|
||||
{
|
||||
MOCK_CONVERSION_OPERATOR_TPL(operator, T, conversion_to_T) // the _TPL variants must be used if the signature
|
||||
// includes a template parameter of the class
|
||||
MOCK_CONVERSION_OPERATOR(operator, T, conversion_to_T) // includes a template parameter of the class
|
||||
MOCK_CONST_CONVERSION_OPERATOR(operator, const std::string&, const_conversion_to_string)
|
||||
MOCK_NON_CONST_CONVERSION_OPERATOR(operator, const std::string&, non_const_conversion_to_string)
|
||||
};
|
||||
|
|
|
|||
|
|
@ -90,16 +90,12 @@ Synopsis :
|
|||
MOCK_METHOD( [calling convention] name, arity[, signature[, identifier]] ) // generates both const and non-const methods
|
||||
MOCK_CONST_METHOD( [calling convention] name, arity[, signature[, identifier]] ) // generates only the const version of the method
|
||||
MOCK_NON_CONST_METHOD( [calling convention] name, arity[, signature[, identifier]] ) // generates only the non-const version of the method
|
||||
|
||||
MOCK_METHOD_TPL( [calling convention] name, arity, signature[, identifier] ) // must be used if the signature uses a template parameter of the class, generates both const and non-const methods
|
||||
MOCK_CONST_METHOD_TPL( [calling convention] name, arity, signature[, identifier] ) // must be used if the signature uses a template parameter of the class, generates only the const version of the method
|
||||
MOCK_NON_CONST_METHOD_TPL( [calling convention] name, arity, signature[, identifier] ) // must be used if the signature uses a template parameter of the class, generates only the non-const version of the method
|
||||
|
||||
[note If the identifier is omitted it will default to the method name.]
|
||||
|
||||
[note If the method name is not ambiguous both the signature and the identifier can be omitted in the context of a derived MOCK_BASE_CLASS or base_type typedef.]
|
||||
|
||||
[note The signature cannot be omitted for the _TPL familly of macros, see the related [link turtle.limitations.template_base_class_methods_cannot_be_mocked_without_specifying_the_signature limitation section].]
|
||||
[note The signature cannot be omitted if it uses a template parameter of the class, see the related [link turtle.limitations.template_base_class_methods_cannot_be_mocked_without_specifying_the_signature limitation section].]
|
||||
|
||||
[note [link turtle.reference.creation.constructor Constructors], [link turtle.reference.creation.destructor destructors] and [link turtle.reference.creation.conversion_operator conversion operators] require special care.]
|
||||
|
||||
|
|
@ -107,13 +103,9 @@ Synopsis :
|
|||
|
||||
Synopsis :
|
||||
|
||||
MOCK_METHOD_EXT( [calling convention] name, arity, signature, identifier ) // generates both const and non-const methods
|
||||
MOCK_CONST_METHOD_EXT( [calling convention] name, arity, signature, identifier ) // generates only the const version of the method
|
||||
MOCK_NON_CONST_METHOD_EXT( [calling convention] name, arity, signature, identifier ) // generates only the non-const version of the method
|
||||
|
||||
MOCK_METHOD_EXT_TPL( [calling convention] name, arity, signature, identifier ) // must be used if the signature uses a template parameter of the class, generates both const and non-const methods
|
||||
MOCK_CONST_METHOD_EXT_TPL( [calling convention] name, arity, signature, identifier ) // must be used if the signature uses a template parameter of the class, generates only the const version of the method
|
||||
MOCK_NON_CONST_METHOD_EXT_TPL( [calling convention] name, arity, signature, identifier ) // must be used if the signature uses a template parameter of the class, generates only the non-const version of the method
|
||||
MOCK_METHOD( [calling convention] name, arity, signature, identifier ) // generates both const and non-const methods
|
||||
MOCK_CONST_METHOD( [calling convention] name, arity, signature, identifier ) // generates only the const version of the method
|
||||
MOCK_NON_CONST_METHOD( [calling convention] name, arity, signature, identifier ) // generates only the non-const version of the method
|
||||
|
||||
Example :
|
||||
|
||||
|
|
@ -158,8 +150,6 @@ Example for gcc :
|
|||
Synopsis :
|
||||
|
||||
MOCK_STATIC_METHOD( [calling convention] name, arity, signature[, identifier] ) // if 'identifier' is omitted it will default to 'name'
|
||||
|
||||
MOCK_STATIC_METHOD_TPL( [calling convention] name, arity, signature[, identifier] ) // must be used if the signature uses a template parameter of the class, if 'identifier' is omitted it will default to 'name'
|
||||
|
||||
[note A static object is used behind the scene in order to keep track of the expectations of a mock static method, therefore to ensure all tests run in isolation it is strongly suggested to manually [link turtle.reference.verification verify] and [link turtle.reference.reset reset] the static method at the end of each test, see the related [link turtle.patterns.managing_static_mock_objects pattern section].]
|
||||
|
||||
|
|
@ -189,8 +179,6 @@ Synopsis :
|
|||
|
||||
MOCK_CONSTRUCTOR( [calling convention] name, arity, parameters, identifier )
|
||||
|
||||
MOCK_CONSTRUCTOR_TPL( [calling convention] name, arity, parameters, identifier ) // must be used if the signature uses a template parameter of the class
|
||||
|
||||
[note As constructors do not have a return type, the usual signature gets restricted here to just the parameters.]
|
||||
|
||||
Example :
|
||||
|
|
@ -241,10 +229,6 @@ Synopsis :
|
|||
MOCK_CONST_CONVERSION_OPERATOR( [calling convention] name, type, identifier ) // generates only a const operator
|
||||
MOCK_NON_CONST_CONVERSION_OPERATOR( [calling convention] name, type, identifier ) // generates only a non-const operator
|
||||
|
||||
MOCK_CONVERSION_OPERATOR_TPL( [calling convention] name, type, identifier ) // must be used if the signature uses a template parameter of the class
|
||||
MOCK_CONST_CONVERSION_OPERATOR_TPL( [calling convention] name, type, identifier ) // must be used if the signature uses a template parameter of the class
|
||||
MOCK_NON_CONST_CONVERSION_OPERATOR_TPL( [calling convention] name, type, identifier ) // must be used if the signature uses a template parameter of the class
|
||||
|
||||
Example :
|
||||
|
||||
[conversion_operator_example_1]
|
||||
|
|
@ -293,8 +277,6 @@ Synopsis :
|
|||
|
||||
MOCK_FUNCTOR( [calling convention] name, signature );
|
||||
|
||||
MOCK_FUNCTOR_TPL( [calling convention] name, signature ); // must be used if the signature uses a template parameter
|
||||
|
||||
Example :
|
||||
|
||||
[functor_example_1]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue