Support parameterized test on types without instantiating the types #667
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem:
Parameterized test on types requires instantiating the types itself inside a
std::tuple
. This has been a major pain point for me, and looking at the issues, someone also think the same: #539.Solution:
Instead of using
std::tuple
, we can use a custom type that wraps a list of types that has no state (type_list
). We also create a single wrapper type that wraps the type to be passed tout::events::test
asarg
(wrapped_type
). The purpose of the type itself is just to carry the type information it wraps. By doing this, any kind of types can be copied around without instantiating it.type_list
then participate with other types on theoperator|
overloads so that it can be used.The usage should be like this:
Issue: #539
Reviewers:
@