Index: testing/gmock/include/gmock/gmock-matchers.h |
diff --git a/testing/gmock/include/gmock/gmock-matchers.h b/testing/gmock/include/gmock/gmock-matchers.h |
index 3d82279b8f6f7603ac395ca5afb306fed283dbf3..5f5a29fd93b7c6eb309daaabd5b66c092ac0191c 100644 |
--- a/testing/gmock/include/gmock/gmock-matchers.h |
+++ b/testing/gmock/include/gmock/gmock-matchers.h |
@@ -121,6 +121,7 @@ class MatcherBase { |
void ExplainMatchResultTo(T x, ::std::ostream* os) const { |
impl_->ExplainMatchResultTo(x, os); |
} |
+ |
protected: |
MatcherBase() {} |
@@ -129,6 +130,7 @@ class MatcherBase { |
: impl_(impl) {} |
virtual ~MatcherBase() {} |
+ |
private: |
// shared_ptr (util/gtl/shared_ptr.h) and linked_ptr have similar |
// interfaces. The former dynamically allocates a chunk of memory |
@@ -234,7 +236,7 @@ class Matcher<internal::string> |
template <class Impl> |
class PolymorphicMatcher { |
public: |
- explicit PolymorphicMatcher(const Impl& impl) : impl_(impl) {} |
+ explicit PolymorphicMatcher(const Impl& an_impl) : impl_(an_impl) {} |
// Returns a mutable reference to the underlying matcher |
// implementation object. |
@@ -248,6 +250,7 @@ class PolymorphicMatcher { |
operator Matcher<T>() const { |
return Matcher<T>(new MonomorphicImpl<T>(impl_)); |
} |
+ |
private: |
template <typename T> |
class MonomorphicImpl : public MatcherInterface<T> { |
@@ -284,9 +287,13 @@ class PolymorphicMatcher { |
private: |
const Impl impl_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(MonomorphicImpl); |
}; |
Impl impl_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(PolymorphicMatcher); |
}; |
// Creates a matcher from its implementation. This is easier to use |
@@ -522,6 +529,7 @@ class MatcherCastImpl<T, Matcher<U> > { |
static Matcher<T> Cast(const Matcher<U>& source_matcher) { |
return Matcher<T>(new Impl(source_matcher)); |
} |
+ |
private: |
class Impl : public MatcherInterface<T> { |
public: |
@@ -544,8 +552,11 @@ class MatcherCastImpl<T, Matcher<U> > { |
virtual void ExplainMatchResultTo(T x, ::std::ostream* os) const { |
source_matcher_.ExplainMatchResultTo(static_cast<U>(x), os); |
} |
+ |
private: |
const Matcher<U> source_matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(Impl); |
}; |
}; |
@@ -618,8 +629,10 @@ class AnythingMatcher { |
} \ |
private: \ |
Rhs rhs_; \ |
+ GTEST_DISALLOW_ASSIGN_(Impl); \ |
}; \ |
Rhs rhs_; \ |
+ GTEST_DISALLOW_ASSIGN_(name##Matcher); \ |
} |
// Implements Eq(v), Ge(v), Gt(v), Le(v), Lt(v), and Ne(v) |
@@ -633,12 +646,12 @@ GMOCK_IMPLEMENT_COMPARISON_MATCHER_(Ne, !=, "not equal to"); |
#undef GMOCK_IMPLEMENT_COMPARISON_MATCHER_ |
-// Implements the polymorphic IsNull() matcher, which matches any |
+// Implements the polymorphic IsNull() matcher, which matches any raw or smart |
// pointer that is NULL. |
class IsNullMatcher { |
public: |
- template <typename T> |
- bool Matches(T* p) const { return p == NULL; } |
+ template <typename Pointer> |
+ bool Matches(const Pointer& p) const { return GetRawPointer(p) == NULL; } |
void DescribeTo(::std::ostream* os) const { *os << "is NULL"; } |
void DescribeNegationTo(::std::ostream* os) const { |
@@ -646,12 +659,12 @@ class IsNullMatcher { |
} |
}; |
-// Implements the polymorphic NotNull() matcher, which matches any |
+// Implements the polymorphic NotNull() matcher, which matches any raw or smart |
// pointer that is not NULL. |
class NotNullMatcher { |
public: |
- template <typename T> |
- bool Matches(T* p) const { return p != NULL; } |
+ template <typename Pointer> |
+ bool Matches(const Pointer& p) const { return GetRawPointer(p) != NULL; } |
void DescribeTo(::std::ostream* os) const { *os << "is not NULL"; } |
void DescribeNegationTo(::std::ostream* os) const { |
@@ -697,6 +710,7 @@ class RefMatcher<T&> { |
// reference to a non-const reference. |
return MakeMatcher(new Impl<Super>(object_)); |
} |
+ |
private: |
template <typename Super> |
class Impl : public MatcherInterface<Super&> { |
@@ -721,11 +735,16 @@ class RefMatcher<T&> { |
::std::ostream* os) const { |
*os << "is located @" << static_cast<const void*>(&x); |
} |
+ |
private: |
const Super& object_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(Impl); |
}; |
T& object_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(RefMatcher); |
}; |
// Polymorphic helper functions for narrow and wide string matchers. |
@@ -795,6 +814,7 @@ class StrEqualityMatcher { |
void DescribeNegationTo(::std::ostream* os) const { |
DescribeToHelper(!expect_eq_, os); |
} |
+ |
private: |
void DescribeToHelper(bool expect_eq, ::std::ostream* os) const { |
*os << "is "; |
@@ -811,6 +831,8 @@ class StrEqualityMatcher { |
const StringType string_; |
const bool expect_eq_; |
const bool case_sensitive_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(StrEqualityMatcher); |
}; |
// Implements the polymorphic HasSubstr(substring) matcher, which |
@@ -845,8 +867,11 @@ class HasSubstrMatcher { |
*os << "has no substring "; |
UniversalPrinter<StringType>::Print(substring_, os); |
} |
+ |
private: |
const StringType substring_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(HasSubstrMatcher); |
}; |
// Implements the polymorphic StartsWith(substring) matcher, which |
@@ -881,8 +906,11 @@ class StartsWithMatcher { |
*os << "doesn't start with "; |
UniversalPrinter<StringType>::Print(prefix_, os); |
} |
+ |
private: |
const StringType prefix_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(StartsWithMatcher); |
}; |
// Implements the polymorphic EndsWith(substring) matcher, which |
@@ -916,8 +944,11 @@ class EndsWithMatcher { |
*os << "doesn't end with "; |
UniversalPrinter<StringType>::Print(suffix_, os); |
} |
+ |
private: |
const StringType suffix_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(EndsWithMatcher); |
}; |
#if GMOCK_HAS_REGEX |
@@ -954,9 +985,12 @@ class MatchesRegexMatcher { |
<< " regular expression "; |
UniversalPrinter<internal::string>::Print(regex_->pattern(), os); |
} |
+ |
private: |
const internal::linked_ptr<const RE> regex_; |
const bool full_match_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(MatchesRegexMatcher); |
}; |
#endif // GMOCK_HAS_REGEX |
@@ -1030,8 +1064,11 @@ class NotMatcherImpl : public MatcherInterface<T> { |
virtual void ExplainMatchResultTo(T x, ::std::ostream* os) const { |
matcher_.ExplainMatchResultTo(x, os); |
} |
+ |
private: |
const Matcher<T> matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(NotMatcherImpl); |
}; |
// Implements the Not(m) matcher, which matches a value that doesn't |
@@ -1047,8 +1084,11 @@ class NotMatcher { |
operator Matcher<T>() const { |
return Matcher<T>(new NotMatcherImpl<T>(SafeMatcherCast<T>(matcher_))); |
} |
+ |
private: |
InnerMatcher matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(NotMatcher); |
}; |
// Implements the AllOf(m1, m2) matcher for a particular argument type |
@@ -1108,9 +1148,12 @@ class BothOfMatcherImpl : public MatcherInterface<T> { |
} |
} |
} |
+ |
private: |
const Matcher<T> matcher1_; |
const Matcher<T> matcher2_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(BothOfMatcherImpl); |
}; |
// Used for implementing the AllOf(m_1, ..., m_n) matcher, which |
@@ -1129,9 +1172,12 @@ class BothOfMatcher { |
return Matcher<T>(new BothOfMatcherImpl<T>(SafeMatcherCast<T>(matcher1_), |
SafeMatcherCast<T>(matcher2_))); |
} |
+ |
private: |
Matcher1 matcher1_; |
Matcher2 matcher2_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(BothOfMatcher); |
}; |
// Implements the AnyOf(m1, m2) matcher for a particular argument type |
@@ -1190,9 +1236,12 @@ class EitherOfMatcherImpl : public MatcherInterface<T> { |
} |
} |
} |
+ |
private: |
const Matcher<T> matcher1_; |
const Matcher<T> matcher2_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(EitherOfMatcherImpl); |
}; |
// Used for implementing the AnyOf(m_1, ..., m_n) matcher, which |
@@ -1212,9 +1261,12 @@ class EitherOfMatcher { |
return Matcher<T>(new EitherOfMatcherImpl<T>( |
SafeMatcherCast<T>(matcher1_), SafeMatcherCast<T>(matcher2_))); |
} |
+ |
private: |
Matcher1 matcher1_; |
Matcher2 matcher2_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(EitherOfMatcher); |
}; |
// Used for implementing Truly(pred), which turns a predicate into a |
@@ -1248,8 +1300,11 @@ class TrulyMatcher { |
void DescribeNegationTo(::std::ostream* os) const { |
*os << "doesn't satisfy the given predicate"; |
} |
+ |
private: |
Predicate predicate_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(TrulyMatcher); |
}; |
// Used for implementing Matches(matcher), which turns a matcher into |
@@ -1283,8 +1338,11 @@ class MatcherAsPredicate { |
// in all of the above situations. |
return MatcherCast<const T&>(matcher_).Matches(x); |
} |
+ |
private: |
M matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(MatcherAsPredicate); |
}; |
// For implementing ASSERT_THAT() and EXPECT_THAT(). The template |
@@ -1322,8 +1380,11 @@ class PredicateFormatterFromMatcher { |
return AssertionFailure(Message() << ss.str()); |
} |
} |
+ |
private: |
const M matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(PredicateFormatterFromMatcher); |
}; |
// A helper function for converting a matcher to a predicate-formatter |
@@ -1405,6 +1466,8 @@ class FloatingEqMatcher { |
private: |
const FloatType rhs_; |
const bool nan_eq_nan_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(Impl); |
}; |
// The following 3 type conversion operators allow FloatEq(rhs) and |
@@ -1427,6 +1490,8 @@ class FloatingEqMatcher { |
private: |
const FloatType rhs_; |
const bool nan_eq_nan_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(FloatingEqMatcher); |
}; |
// Implements the Pointee(m) matcher for matching a pointer whose |
@@ -1448,6 +1513,7 @@ class PointeeMatcher { |
operator Matcher<Pointer>() const { |
return MakeMatcher(new Impl<Pointer>(matcher_)); |
} |
+ |
private: |
// The monomorphic implementation that works for a particular pointer type. |
template <typename Pointer> |
@@ -1485,11 +1551,16 @@ class PointeeMatcher { |
*os << "points to a value that " << s; |
} |
} |
+ |
private: |
const Matcher<const Pointee&> matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(Impl); |
}; |
const InnerMatcher matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(PointeeMatcher); |
}; |
// Implements the Field() matcher for matching a field (i.e. member |
@@ -1543,9 +1614,12 @@ class FieldMatcher { |
ExplainMatchResultTo(false_type(), *p, os); |
} |
} |
+ |
private: |
const FieldType Class::*field_; |
const Matcher<const FieldType&> matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(FieldMatcher); |
}; |
// Explains the result of matching an object or pointer against a field matcher. |
@@ -1613,9 +1687,12 @@ class PropertyMatcher { |
ExplainMatchResultTo(false_type(), *p, os); |
} |
} |
+ |
private: |
PropertyType (Class::*property_)() const; |
const Matcher<RefToConstProperty> matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(PropertyMatcher); |
}; |
// Explains the result of matching an object or pointer against a |
@@ -1636,7 +1713,7 @@ struct CallableTraits { |
typedef typename Functor::result_type ResultType; |
typedef Functor StorageType; |
- static void CheckIsValid(Functor functor) {} |
+ static void CheckIsValid(Functor /* functor */) {} |
template <typename T> |
static ResultType Invoke(Functor f, T arg) { return f(arg); } |
}; |
@@ -1709,6 +1786,7 @@ class ResultOfMatcher { |
if (s != "") |
*os << "result of the given callable " << s; |
} |
+ |
private: |
// Functors often define operator() as non-const method even though |
// they are actualy stateless. But we need to use them even when |
@@ -1717,10 +1795,14 @@ class ResultOfMatcher { |
// how many times the callable will be invoked. |
mutable CallableStorageType callable_; |
const Matcher<ResultType> matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(Impl); |
}; // class Impl |
const CallableStorageType callable_; |
const Matcher<ResultType> matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(ResultOfMatcher); |
}; |
// Explains the result of matching a value against a functor matcher. |
@@ -1818,8 +1900,11 @@ class ContainerEqMatcher { |
} |
} |
} |
+ |
private: |
const StlContainer rhs_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(ContainerEqMatcher); |
}; |
template <typename LhsContainer, typename Container> |
@@ -1884,6 +1969,8 @@ class ContainsMatcherImpl : public MatcherInterface<Container> { |
private: |
const Matcher<const Element&> inner_matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(ContainsMatcherImpl); |
}; |
// Implements polymorphic Contains(element_matcher). |
@@ -1899,6 +1986,8 @@ class ContainsMatcher { |
private: |
const M inner_matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(ContainsMatcher); |
}; |
// Implements Key(inner_matcher) for the given argument pair type. |
@@ -1942,6 +2031,8 @@ class KeyMatcherImpl : public MatcherInterface<PairType> { |
private: |
const Matcher<const KeyType&> inner_matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(KeyMatcherImpl); |
}; |
// Implements polymorphic Key(matcher_for_key). |
@@ -1957,6 +2048,8 @@ class KeyMatcher { |
private: |
const M matcher_for_key_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(KeyMatcher); |
}; |
// Implements Pair(first_matcher, second_matcher) for the given argument pair |
@@ -2026,6 +2119,8 @@ class PairMatcherImpl : public MatcherInterface<PairType> { |
private: |
const Matcher<const FirstType&> first_matcher_; |
const Matcher<const SecondType&> second_matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(PairMatcherImpl); |
}; |
// Implements polymorphic Pair(first_matcher, second_matcher). |
@@ -2045,6 +2140,8 @@ class PairMatcher { |
private: |
const FirstMatcher first_matcher_; |
const SecondMatcher second_matcher_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(PairMatcher); |
}; |
// Implements ElementsAre() and ElementsAreArray(). |
@@ -2060,10 +2157,10 @@ class ElementsAreMatcherImpl : public MatcherInterface<Container> { |
// Constructs the matcher from a sequence of element values or |
// element matchers. |
template <typename InputIter> |
- ElementsAreMatcherImpl(InputIter first, size_t count) { |
- matchers_.reserve(count); |
+ ElementsAreMatcherImpl(InputIter first, size_t a_count) { |
+ matchers_.reserve(a_count); |
InputIter it = first; |
- for (size_t i = 0; i != count; ++i, ++it) { |
+ for (size_t i = 0; i != a_count; ++i, ++it) { |
matchers_.push_back(MatcherCast<const Element&>(*it)); |
} |
} |
@@ -2185,6 +2282,8 @@ class ElementsAreMatcherImpl : public MatcherInterface<Container> { |
size_t count() const { return matchers_.size(); } |
std::vector<Matcher<const Element&> > matchers_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(ElementsAreMatcherImpl); |
}; |
// Implements ElementsAre() of 0 arguments. |
@@ -2224,6 +2323,8 @@ class ElementsAreArrayMatcher { |
private: |
const T* const first_; |
const size_t count_; |
+ |
+ GTEST_DISALLOW_ASSIGN_(ElementsAreArrayMatcher); |
}; |
// Constants denoting interpolations in a matcher description string. |