Index: chrome/browser/sync/syncable/model_type_test_util.cc |
diff --git a/chrome/browser/sync/syncable/model_type_test_util.cc b/chrome/browser/sync/syncable/model_type_test_util.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f3cdfe85b2ad40963831ff5ae86da70bebb1c372 |
--- /dev/null |
+++ b/chrome/browser/sync/syncable/model_type_test_util.cc |
@@ -0,0 +1,52 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/sync/syncable/model_type_test_util.h" |
+ |
+namespace syncable { |
+ |
+void PrintTo(ModelEnumSet model_types, ::std::ostream* os) { |
+ *os << ModelEnumSetToString(model_types); |
+} |
+ |
+namespace { |
+ |
+// Matcher implementation for HasModelTypes(). |
+class HasModelTypesMatcher |
+ : public ::testing::MatcherInterface<ModelEnumSet> { |
+ public: |
+ explicit HasModelTypesMatcher(ModelEnumSet expected_types) |
+ : expected_types_(expected_types) {} |
+ |
+ virtual ~HasModelTypesMatcher() {} |
+ |
+ virtual bool MatchAndExplain( |
+ ModelEnumSet model_types, |
+ ::testing::MatchResultListener* listener) const { |
+ // No need to annotate listener since we already define PrintTo(). |
+ return model_types.Equals(expected_types_); |
+ } |
+ |
+ virtual void DescribeTo(::std::ostream* os) const { |
+ *os << "has model types " << ModelEnumSetToString(expected_types_); |
+ } |
+ |
+ virtual void DescribeNegationTo(::std::ostream* os) const { |
+ *os << "doesn't have model types " |
+ << ModelEnumSetToString(expected_types_); |
+ } |
+ |
+ private: |
+ const ModelEnumSet expected_types_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(HasModelTypesMatcher); |
+}; |
+ |
+} // namespace |
+ |
+::testing::Matcher<ModelEnumSet> HasModelTypes(ModelEnumSet expected_types) { |
+ return ::testing::MakeMatcher(new HasModelTypesMatcher(expected_types)); |
+} |
+ |
+} // namespace syncable |