Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Side by Side Diff: mojo/common/callback_binding_unittest.cc

Issue 1841863002: Update monet. (Closed) Base URL: https://github.com/domokit/monet.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/common/binding_set_unittest.cc ('k') | mojo/common/common_type_converters.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2013 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 "base/bind.h"
6 #include "mojo/public/cpp/bindings/callback.h"
7 #include "mojo/public/cpp/bindings/map.h"
8 #include "mojo/public/cpp/bindings/string.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace {
12
13 struct RunnableNoArgs {
14 RunnableNoArgs(int* calls) : calls(calls) {}
15 void Run() const { (*calls)++; }
16
17 int* calls;
18 };
19
20 TEST(CallbackBindingTest, BaseBindToMojoCallbackNoParams) {
21 mojo::Callback<void()> cb;
22 int calls = 0;
23 RunnableNoArgs r(&calls);
24 cb = r;
25 cb.Run();
26 EXPECT_EQ(1, calls);
27
28 cb = base::Bind(&RunnableNoArgs::Run, base::Unretained(&r));
29 cb.Run();
30 EXPECT_EQ(2, calls);
31 }
32
33 struct RunnableOnePrimitiveArg {
34 explicit RunnableOnePrimitiveArg(int* calls) : calls(calls) {}
35 void Run(int a) const { (*calls)++; }
36
37 int* calls;
38 };
39
40 TEST(CallbackBindingTest, BaseBindToMojoCallbackPrimitiveParam) {
41 mojo::Callback<void(int)> mojo_callback;
42 int calls = 0;
43 RunnableOnePrimitiveArg r(&calls);
44 mojo_callback = r;
45 mojo_callback.Run(0);
46 EXPECT_EQ(1, calls);
47
48 base::Callback<void(int)> base_callback =
49 base::Bind(&RunnableOnePrimitiveArg::Run, base::Unretained(&r));
50 mojo_callback = base_callback;
51 mojo_callback.Run(0);
52 EXPECT_EQ(2, calls);
53 }
54
55 struct RunnableOneMojoStringParam {
56 explicit RunnableOneMojoStringParam(int* calls) : calls(calls) {}
57 void Run(const mojo::String& s) const { (*calls)++; }
58
59 int* calls;
60 };
61
62 TEST(CallbackBindingTest, BaseBindToMojoCallbackMojoStringParam) {
63 // The mojo type is a callback on mojo::String, but it'll expect to invoke
64 // callbacks with a parameter of type 'const Mojo::String&'.
65 mojo::Callback<void(mojo::String)> mojo_callback;
66 int calls = 0;
67 RunnableOneMojoStringParam r(&calls);
68 mojo_callback = r;
69 mojo_callback.Run(0);
70 EXPECT_EQ(1, calls);
71
72 base::Callback<void(const mojo::String&)> base_callback =
73 base::Bind(&RunnableOneMojoStringParam::Run, base::Unretained(&r));
74 mojo_callback = base_callback;
75 mojo_callback.Run(0);
76 EXPECT_EQ(2, calls);
77 }
78
79 using ExampleMoveOnlyType = mojo::Map<int, int>;
80
81 struct RunnableOneMoveOnlyParam {
82 explicit RunnableOneMoveOnlyParam(int* calls) : calls(calls) {}
83
84 void Run(ExampleMoveOnlyType m) const { (*calls)++; }
85 int* calls;
86 };
87
88 TEST(CallbackBindingTest, BaseBindToMoveOnlyParam) {
89 mojo::Callback<void(ExampleMoveOnlyType)> mojo_callback;
90 int calls = 0;
91 RunnableOneMoveOnlyParam r(&calls);
92 mojo_callback = r;
93 ExampleMoveOnlyType m;
94 mojo_callback.Run(m.Clone());
95 EXPECT_EQ(1, calls);
96
97 base::Callback<void(ExampleMoveOnlyType)> base_callback =
98 base::Bind(&RunnableOneMoveOnlyParam::Run, base::Unretained(&r));
99 mojo_callback = base_callback;
100 mojo_callback.Run(m.Clone());
101 EXPECT_EQ(2, calls);
102 }
103
104 } // namespace
OLDNEW
« no previous file with comments | « mojo/common/binding_set_unittest.cc ('k') | mojo/common/common_type_converters.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698