diff options
Diffstat (limited to 'include/gmock/gmock-generated-matchers.h')
-rw-r--r-- | include/gmock/gmock-generated-matchers.h | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/include/gmock/gmock-generated-matchers.h b/include/gmock/gmock-generated-matchers.h index 2cc5746e..cb610543 100644 --- a/include/gmock/gmock-generated-matchers.h +++ b/include/gmock/gmock-generated-matchers.h @@ -849,6 +849,190 @@ ElementsAreArray(const T (&array)[N]) { return internal::ElementsAreArrayMatcher<T>(array, N); } +// AllOf(m1, m2, ..., mk) matches any value that matches all of the given +// sub-matchers. + +template <typename Matcher1, typename Matcher2> +inline internal::BothOfMatcher<Matcher1, Matcher2> +AllOf(Matcher1 m1, Matcher2 m2) { + return internal::BothOfMatcher<Matcher1, Matcher2>(m1, m2); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3> +inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2, + Matcher3> > +AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3) { + return AllOf(m1, AllOf(m2, m3)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4> +inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2, + internal::BothOfMatcher<Matcher3, Matcher4> > > +AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4) { + return AllOf(m1, AllOf(m2, m3, m4)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4, typename Matcher5> +inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2, + internal::BothOfMatcher<Matcher3, internal::BothOfMatcher<Matcher4, + Matcher5> > > > +AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5) { + return AllOf(m1, AllOf(m2, m3, m4, m5)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4, typename Matcher5, typename Matcher6> +inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2, + internal::BothOfMatcher<Matcher3, internal::BothOfMatcher<Matcher4, + internal::BothOfMatcher<Matcher5, Matcher6> > > > > +AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5, + Matcher6 m6) { + return AllOf(m1, AllOf(m2, m3, m4, m5, m6)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4, typename Matcher5, typename Matcher6, typename Matcher7> +inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2, + internal::BothOfMatcher<Matcher3, internal::BothOfMatcher<Matcher4, + internal::BothOfMatcher<Matcher5, internal::BothOfMatcher<Matcher6, + Matcher7> > > > > > +AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5, + Matcher6 m6, Matcher7 m7) { + return AllOf(m1, AllOf(m2, m3, m4, m5, m6, m7)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4, typename Matcher5, typename Matcher6, typename Matcher7, + typename Matcher8> +inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2, + internal::BothOfMatcher<Matcher3, internal::BothOfMatcher<Matcher4, + internal::BothOfMatcher<Matcher5, internal::BothOfMatcher<Matcher6, + internal::BothOfMatcher<Matcher7, Matcher8> > > > > > > +AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5, + Matcher6 m6, Matcher7 m7, Matcher8 m8) { + return AllOf(m1, AllOf(m2, m3, m4, m5, m6, m7, m8)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4, typename Matcher5, typename Matcher6, typename Matcher7, + typename Matcher8, typename Matcher9> +inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2, + internal::BothOfMatcher<Matcher3, internal::BothOfMatcher<Matcher4, + internal::BothOfMatcher<Matcher5, internal::BothOfMatcher<Matcher6, + internal::BothOfMatcher<Matcher7, internal::BothOfMatcher<Matcher8, + Matcher9> > > > > > > > +AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5, + Matcher6 m6, Matcher7 m7, Matcher8 m8, Matcher9 m9) { + return AllOf(m1, AllOf(m2, m3, m4, m5, m6, m7, m8, m9)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4, typename Matcher5, typename Matcher6, typename Matcher7, + typename Matcher8, typename Matcher9, typename Matcher10> +inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2, + internal::BothOfMatcher<Matcher3, internal::BothOfMatcher<Matcher4, + internal::BothOfMatcher<Matcher5, internal::BothOfMatcher<Matcher6, + internal::BothOfMatcher<Matcher7, internal::BothOfMatcher<Matcher8, + internal::BothOfMatcher<Matcher9, Matcher10> > > > > > > > > +AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5, + Matcher6 m6, Matcher7 m7, Matcher8 m8, Matcher9 m9, Matcher10 m10) { + return AllOf(m1, AllOf(m2, m3, m4, m5, m6, m7, m8, m9, m10)); +} + +// AnyOf(m1, m2, ..., mk) matches any value that matches any of the given +// sub-matchers. + +template <typename Matcher1, typename Matcher2> +inline internal::EitherOfMatcher<Matcher1, Matcher2> +AnyOf(Matcher1 m1, Matcher2 m2) { + return internal::EitherOfMatcher<Matcher1, Matcher2>(m1, m2); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3> +inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2, + Matcher3> > +AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3) { + return AnyOf(m1, AnyOf(m2, m3)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4> +inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2, + internal::EitherOfMatcher<Matcher3, Matcher4> > > +AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4) { + return AnyOf(m1, AnyOf(m2, m3, m4)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4, typename Matcher5> +inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2, + internal::EitherOfMatcher<Matcher3, internal::EitherOfMatcher<Matcher4, + Matcher5> > > > +AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5) { + return AnyOf(m1, AnyOf(m2, m3, m4, m5)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4, typename Matcher5, typename Matcher6> +inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2, + internal::EitherOfMatcher<Matcher3, internal::EitherOfMatcher<Matcher4, + internal::EitherOfMatcher<Matcher5, Matcher6> > > > > +AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5, + Matcher6 m6) { + return AnyOf(m1, AnyOf(m2, m3, m4, m5, m6)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4, typename Matcher5, typename Matcher6, typename Matcher7> +inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2, + internal::EitherOfMatcher<Matcher3, internal::EitherOfMatcher<Matcher4, + internal::EitherOfMatcher<Matcher5, internal::EitherOfMatcher<Matcher6, + Matcher7> > > > > > +AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5, + Matcher6 m6, Matcher7 m7) { + return AnyOf(m1, AnyOf(m2, m3, m4, m5, m6, m7)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4, typename Matcher5, typename Matcher6, typename Matcher7, + typename Matcher8> +inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2, + internal::EitherOfMatcher<Matcher3, internal::EitherOfMatcher<Matcher4, + internal::EitherOfMatcher<Matcher5, internal::EitherOfMatcher<Matcher6, + internal::EitherOfMatcher<Matcher7, Matcher8> > > > > > > +AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5, + Matcher6 m6, Matcher7 m7, Matcher8 m8) { + return AnyOf(m1, AnyOf(m2, m3, m4, m5, m6, m7, m8)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4, typename Matcher5, typename Matcher6, typename Matcher7, + typename Matcher8, typename Matcher9> +inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2, + internal::EitherOfMatcher<Matcher3, internal::EitherOfMatcher<Matcher4, + internal::EitherOfMatcher<Matcher5, internal::EitherOfMatcher<Matcher6, + internal::EitherOfMatcher<Matcher7, internal::EitherOfMatcher<Matcher8, + Matcher9> > > > > > > > +AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5, + Matcher6 m6, Matcher7 m7, Matcher8 m8, Matcher9 m9) { + return AnyOf(m1, AnyOf(m2, m3, m4, m5, m6, m7, m8, m9)); +} + +template <typename Matcher1, typename Matcher2, typename Matcher3, + typename Matcher4, typename Matcher5, typename Matcher6, typename Matcher7, + typename Matcher8, typename Matcher9, typename Matcher10> +inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2, + internal::EitherOfMatcher<Matcher3, internal::EitherOfMatcher<Matcher4, + internal::EitherOfMatcher<Matcher5, internal::EitherOfMatcher<Matcher6, + internal::EitherOfMatcher<Matcher7, internal::EitherOfMatcher<Matcher8, + internal::EitherOfMatcher<Matcher9, Matcher10> > > > > > > > > +AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5, + Matcher6 m6, Matcher7 m7, Matcher8 m8, Matcher9 m9, Matcher10 m10) { + return AnyOf(m1, AnyOf(m2, m3, m4, m5, m6, m7, m8, m9, m10)); +} + } // namespace testing // The MATCHER* family of macros can be used in a namespace scope to |