Support parameterized test on types without instantiating the types#667
Open
mrizaln wants to merge 2 commits intoboost-ext:masterfrom
Open
Support parameterized test on types without instantiating the types#667mrizaln wants to merge 2 commits intoboost-ext:masterfrom
mrizaln wants to merge 2 commits intoboost-ext:masterfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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::testasarg(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_listthen participate with other types on theoperator|overloads so that it can be used.The usage should be like this:
Issue: #539
Reviewers:
@