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.
5 #include "sync/js/js_test_util.h"
7 #include "base/basictypes.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "sync/js/js_arg_list.h"
10 #include "sync/js/js_event_details.h"
14 void PrintTo(const JsArgList& args, ::std::ostream* os) {
15 *os << args.ToString();
18 void PrintTo(const JsEventDetails& details, ::std::ostream* os) {
19 *os << details.ToString();
24 // Matcher implementation for HasArgs().
26 : public ::testing::MatcherInterface<const JsArgList&> {
28 explicit HasArgsMatcher(const JsArgList& expected_args)
29 : expected_args_(expected_args) {}
31 virtual ~HasArgsMatcher() {}
33 virtual bool MatchAndExplain(
34 const JsArgList& args,
35 ::testing::MatchResultListener* listener) const {
36 // No need to annotate listener since we already define PrintTo().
37 return args.Get().Equals(&expected_args_.Get());
40 virtual void DescribeTo(::std::ostream* os) const {
41 *os << "has args " << expected_args_.ToString();
44 virtual void DescribeNegationTo(::std::ostream* os) const {
45 *os << "doesn't have args " << expected_args_.ToString();
49 const JsArgList expected_args_;
51 DISALLOW_COPY_AND_ASSIGN(HasArgsMatcher);
54 // Matcher implementation for HasDetails().
55 class HasDetailsMatcher
56 : public ::testing::MatcherInterface<const JsEventDetails&> {
58 explicit HasDetailsMatcher(const JsEventDetails& expected_details)
59 : expected_details_(expected_details) {}
61 virtual ~HasDetailsMatcher() {}
63 virtual bool MatchAndExplain(
64 const JsEventDetails& details,
65 ::testing::MatchResultListener* listener) const {
66 // No need to annotate listener since we already define PrintTo().
67 return details.Get().Equals(&expected_details_.Get());
70 virtual void DescribeTo(::std::ostream* os) const {
71 *os << "has details " << expected_details_.ToString();
74 virtual void DescribeNegationTo(::std::ostream* os) const {
75 *os << "doesn't have details " << expected_details_.ToString();
79 const JsEventDetails expected_details_;
81 DISALLOW_COPY_AND_ASSIGN(HasDetailsMatcher);
86 ::testing::Matcher<const JsArgList&> HasArgs(const JsArgList& expected_args) {
87 return ::testing::MakeMatcher(new HasArgsMatcher(expected_args));
90 ::testing::Matcher<const JsEventDetails&> HasDetails(
91 const JsEventDetails& expected_details) {
92 return ::testing::MakeMatcher(new HasDetailsMatcher(expected_details));
95 ::testing::Matcher<const JsEventDetails&> HasDetailsAsDictionary(
96 const base::DictionaryValue& expected_details) {
97 scoped_ptr<base::DictionaryValue> expected_details_copy(
98 expected_details.DeepCopy());
99 return HasDetails(JsEventDetails(expected_details_copy.get()));
102 MockJsBackend::MockJsBackend() {}
104 MockJsBackend::~MockJsBackend() {}
106 WeakHandle<JsBackend> MockJsBackend::AsWeakHandle() {
107 return MakeWeakHandle(AsWeakPtr());
110 MockJsController::MockJsController() {}
112 MockJsController::~MockJsController() {}
114 MockJsEventHandler::MockJsEventHandler() {}
116 WeakHandle<JsEventHandler> MockJsEventHandler::AsWeakHandle() {
117 return MakeWeakHandle(AsWeakPtr());
120 MockJsEventHandler::~MockJsEventHandler() {}
122 MockJsReplyHandler::MockJsReplyHandler() {}
124 MockJsReplyHandler::~MockJsReplyHandler() {}
126 WeakHandle<JsReplyHandler> MockJsReplyHandler::AsWeakHandle() {
127 return MakeWeakHandle(AsWeakPtr());
130 } // namespace syncer