Skip to content

Commit

Permalink
Rewrote the matchers code.
Browse files Browse the repository at this point in the history
  • Loading branch information
FranckRJ committed May 6, 2022
1 parent 2441116 commit 094c0ef
Show file tree
Hide file tree
Showing 5 changed files with 381 additions and 326 deletions.
13 changes: 5 additions & 8 deletions include/fakeit/MatchersCollector.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,6 @@ namespace fakeit {
template<std::size_t N>
using NakedArgType = typename naked_type<ArgType<index>>::type;

template<std::size_t N>
using ArgMatcherCreatorType = decltype(std::declval<TypedMatcherCreator<NakedArgType<N>>>());

MatchersCollector(std::vector<Destructible *> &matchers)
: _matchers(matchers) {
}
Expand All @@ -49,7 +46,7 @@ namespace fakeit {
std::is_constructible<NakedArgType<index>, Head>::value, void> //
::type CollectMatchers(const Head &value) {

TypedMatcher<NakedArgType<index>> *d = Eq<NakedArgType<index>>(value).createMatcher();
TypedMatcher<NakedArgType<index>> *d = Eq(value).template createMatcher<NakedArgType<index>>();
_matchers.push_back(d);
}

Expand All @@ -65,16 +62,16 @@ namespace fakeit {

template<typename Head>
typename std::enable_if< //
std::is_base_of<TypedMatcherCreator<NakedArgType<index>>, Head>::value, void> //
Head::template IsTypeCompatible<NakedArgType<index>>::value, void> //
::type CollectMatchers(const Head &creator) {
TypedMatcher<NakedArgType<index>> *d = creator.createMatcher();
TypedMatcher<NakedArgType<index>> *d = creator.template createMatcher<NakedArgType<index>>();
_matchers.push_back(d);
}

template<typename Head, typename ...Tail>
//
typename std::enable_if< //
std::is_base_of<TypedMatcherCreator<NakedArgType<index>>, Head>::value, void> //
Head::template IsTypeCompatible<NakedArgType<index>>::value, void> //
::type CollectMatchers(const Head &head, const Tail &... tail) {
CollectMatchers(head);
MatchersCollector<index + 1, arglist...> c(_matchers);
Expand All @@ -85,7 +82,7 @@ namespace fakeit {
typename std::enable_if<//
std::is_same<AnyMatcher, Head>::value, void> //
::type CollectMatchers(const Head &) {
TypedMatcher<NakedArgType<index>> *d = Any<NakedArgType<index>>().createMatcher();
TypedMatcher<NakedArgType<index>> *d = Any().template createMatcher<NakedArgType<index>>();
_matchers.push_back(d);
}

Expand Down
Loading

0 comments on commit 094c0ef

Please sign in to comment.