|
|
|
@ -299,94 +299,6 @@ class ArgsMatcher { |
|
|
|
|
GTEST_DISALLOW_ASSIGN_(ArgsMatcher); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// A set of metafunctions for computing the result type of AnyOf.
|
|
|
|
|
// AnyOf(m1, ..., mN) returns
|
|
|
|
|
// AnyOfResultN<decltype(m1), ..., decltype(mN)>::type.
|
|
|
|
|
|
|
|
|
|
// Although AnyOf isn't defined for one argument, AnyOfResult1 is defined
|
|
|
|
|
// to simplify the implementation.
|
|
|
|
|
template <typename M1> |
|
|
|
|
struct AnyOfResult1 { |
|
|
|
|
typedef M1 type; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2> |
|
|
|
|
struct AnyOfResult2 { |
|
|
|
|
typedef EitherOfMatcher< |
|
|
|
|
typename AnyOfResult1<M1>::type, |
|
|
|
|
typename AnyOfResult1<M2>::type |
|
|
|
|
> type; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3> |
|
|
|
|
struct AnyOfResult3 { |
|
|
|
|
typedef EitherOfMatcher< |
|
|
|
|
typename AnyOfResult1<M1>::type, |
|
|
|
|
typename AnyOfResult2<M2, M3>::type |
|
|
|
|
> type; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4> |
|
|
|
|
struct AnyOfResult4 { |
|
|
|
|
typedef EitherOfMatcher< |
|
|
|
|
typename AnyOfResult2<M1, M2>::type, |
|
|
|
|
typename AnyOfResult2<M3, M4>::type |
|
|
|
|
> type; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4, typename M5> |
|
|
|
|
struct AnyOfResult5 { |
|
|
|
|
typedef EitherOfMatcher< |
|
|
|
|
typename AnyOfResult2<M1, M2>::type, |
|
|
|
|
typename AnyOfResult3<M3, M4, M5>::type |
|
|
|
|
> type; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4, typename M5, |
|
|
|
|
typename M6> |
|
|
|
|
struct AnyOfResult6 { |
|
|
|
|
typedef EitherOfMatcher< |
|
|
|
|
typename AnyOfResult3<M1, M2, M3>::type, |
|
|
|
|
typename AnyOfResult3<M4, M5, M6>::type |
|
|
|
|
> type; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4, typename M5, |
|
|
|
|
typename M6, typename M7> |
|
|
|
|
struct AnyOfResult7 { |
|
|
|
|
typedef EitherOfMatcher< |
|
|
|
|
typename AnyOfResult3<M1, M2, M3>::type, |
|
|
|
|
typename AnyOfResult4<M4, M5, M6, M7>::type |
|
|
|
|
> type; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4, typename M5, |
|
|
|
|
typename M6, typename M7, typename M8> |
|
|
|
|
struct AnyOfResult8 { |
|
|
|
|
typedef EitherOfMatcher< |
|
|
|
|
typename AnyOfResult4<M1, M2, M3, M4>::type, |
|
|
|
|
typename AnyOfResult4<M5, M6, M7, M8>::type |
|
|
|
|
> type; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4, typename M5, |
|
|
|
|
typename M6, typename M7, typename M8, typename M9> |
|
|
|
|
struct AnyOfResult9 { |
|
|
|
|
typedef EitherOfMatcher< |
|
|
|
|
typename AnyOfResult4<M1, M2, M3, M4>::type, |
|
|
|
|
typename AnyOfResult5<M5, M6, M7, M8, M9>::type |
|
|
|
|
> type; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4, typename M5, |
|
|
|
|
typename M6, typename M7, typename M8, typename M9, typename M10> |
|
|
|
|
struct AnyOfResult10 { |
|
|
|
|
typedef EitherOfMatcher< |
|
|
|
|
typename AnyOfResult5<M1, M2, M3, M4, M5>::type, |
|
|
|
|
typename AnyOfResult5<M6, M7, M8, M9, M10>::type |
|
|
|
|
> type; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
} // namespace internal
|
|
|
|
|
|
|
|
|
|
// Args<N1, N2, ..., Nk>(a_matcher) matches a tuple if the selected
|
|
|
|
@ -469,89 +381,6 @@ Args(const InnerMatcher& matcher) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// AnyOf(m1, m2, ..., mk) matches any value that matches any of the given
|
|
|
|
|
// sub-matchers. AnyOf is called fully qualified to prevent ADL from firing.
|
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2> |
|
|
|
|
inline typename internal::AnyOfResult2<M1, M2>::type |
|
|
|
|
AnyOf(M1 m1, M2 m2) { |
|
|
|
|
return typename internal::AnyOfResult2<M1, M2>::type( |
|
|
|
|
m1, |
|
|
|
|
m2); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3> |
|
|
|
|
inline typename internal::AnyOfResult3<M1, M2, M3>::type |
|
|
|
|
AnyOf(M1 m1, M2 m2, M3 m3) { |
|
|
|
|
return typename internal::AnyOfResult3<M1, M2, M3>::type( |
|
|
|
|
m1, |
|
|
|
|
::testing::AnyOf(m2, m3)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4> |
|
|
|
|
inline typename internal::AnyOfResult4<M1, M2, M3, M4>::type |
|
|
|
|
AnyOf(M1 m1, M2 m2, M3 m3, M4 m4) { |
|
|
|
|
return typename internal::AnyOfResult4<M1, M2, M3, M4>::type( |
|
|
|
|
::testing::AnyOf(m1, m2), |
|
|
|
|
::testing::AnyOf(m3, m4)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4, typename M5> |
|
|
|
|
inline typename internal::AnyOfResult5<M1, M2, M3, M4, M5>::type |
|
|
|
|
AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5) { |
|
|
|
|
return typename internal::AnyOfResult5<M1, M2, M3, M4, M5>::type( |
|
|
|
|
::testing::AnyOf(m1, m2), |
|
|
|
|
::testing::AnyOf(m3, m4, m5)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4, typename M5, |
|
|
|
|
typename M6> |
|
|
|
|
inline typename internal::AnyOfResult6<M1, M2, M3, M4, M5, M6>::type |
|
|
|
|
AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6) { |
|
|
|
|
return typename internal::AnyOfResult6<M1, M2, M3, M4, M5, M6>::type( |
|
|
|
|
::testing::AnyOf(m1, m2, m3), |
|
|
|
|
::testing::AnyOf(m4, m5, m6)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4, typename M5, |
|
|
|
|
typename M6, typename M7> |
|
|
|
|
inline typename internal::AnyOfResult7<M1, M2, M3, M4, M5, M6, M7>::type |
|
|
|
|
AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7) { |
|
|
|
|
return typename internal::AnyOfResult7<M1, M2, M3, M4, M5, M6, M7>::type( |
|
|
|
|
::testing::AnyOf(m1, m2, m3), |
|
|
|
|
::testing::AnyOf(m4, m5, m6, m7)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4, typename M5, |
|
|
|
|
typename M6, typename M7, typename M8> |
|
|
|
|
inline typename internal::AnyOfResult8<M1, M2, M3, M4, M5, M6, M7, M8>::type |
|
|
|
|
AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8) { |
|
|
|
|
return typename internal::AnyOfResult8<M1, M2, M3, M4, M5, M6, M7, M8>::type( |
|
|
|
|
::testing::AnyOf(m1, m2, m3, m4), |
|
|
|
|
::testing::AnyOf(m5, m6, m7, m8)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4, typename M5, |
|
|
|
|
typename M6, typename M7, typename M8, typename M9> |
|
|
|
|
inline typename internal::AnyOfResult9<M1, M2, M3, M4, M5, M6, M7, M8, M9>::type |
|
|
|
|
AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9) { |
|
|
|
|
return typename internal::AnyOfResult9<M1, M2, M3, M4, M5, M6, M7, M8, |
|
|
|
|
M9>::type( |
|
|
|
|
::testing::AnyOf(m1, m2, m3, m4), |
|
|
|
|
::testing::AnyOf(m5, m6, m7, m8, m9)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename M1, typename M2, typename M3, typename M4, typename M5, |
|
|
|
|
typename M6, typename M7, typename M8, typename M9, typename M10> |
|
|
|
|
inline typename internal::AnyOfResult10<M1, M2, M3, M4, M5, M6, M7, M8, M9, |
|
|
|
|
M10>::type |
|
|
|
|
AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) { |
|
|
|
|
return typename internal::AnyOfResult10<M1, M2, M3, M4, M5, M6, M7, M8, M9, |
|
|
|
|
M10>::type( |
|
|
|
|
::testing::AnyOf(m1, m2, m3, m4, m5), |
|
|
|
|
::testing::AnyOf(m6, m7, m8, m9, m10)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} // namespace testing
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|