1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "sync/internal_api/public/base/model_type_test_util.h" 6 7namespace syncer { 8 9void PrintTo(ModelTypeSet model_types, ::std::ostream* os) { 10 *os << ModelTypeSetToString(model_types); 11} 12 13namespace { 14 15// Matcher implementation for HasModelTypes(). 16class HasModelTypesMatcher 17 : public ::testing::MatcherInterface<ModelTypeSet> { 18 public: 19 explicit HasModelTypesMatcher(ModelTypeSet expected_types) 20 : expected_types_(expected_types) {} 21 22 virtual ~HasModelTypesMatcher() {} 23 24 virtual bool MatchAndExplain( 25 ModelTypeSet model_types, 26 ::testing::MatchResultListener* listener) const { 27 // No need to annotate listener since we already define PrintTo(). 28 return model_types.Equals(expected_types_); 29 } 30 31 virtual void DescribeTo(::std::ostream* os) const { 32 *os << "has model types " << ModelTypeSetToString(expected_types_); 33 } 34 35 virtual void DescribeNegationTo(::std::ostream* os) const { 36 *os << "doesn't have model types " 37 << ModelTypeSetToString(expected_types_); 38 } 39 40 private: 41 const ModelTypeSet expected_types_; 42 43 DISALLOW_COPY_AND_ASSIGN(HasModelTypesMatcher); 44}; 45 46} // namespace 47 48::testing::Matcher<ModelTypeSet> HasModelTypes(ModelTypeSet expected_types) { 49 return ::testing::MakeMatcher(new HasModelTypesMatcher(expected_types)); 50} 51 52} // namespace syncer 53