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

Side by Side Diff: mojo/public/bindings/tests/request_response_unittest.cc

Issue 218883013: Mojo: Move public/bindings/tests/*.cc to public/cpp/bindings/tests/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2014 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 "mojo/public/bindings/tests/sample_import.mojom.h"
6 #include "mojo/public/bindings/tests/sample_interfaces.mojom.h"
7 #include "mojo/public/cpp/bindings/allocation_scope.h"
8 #include "mojo/public/cpp/bindings/remote_ptr.h"
9 #include "mojo/public/cpp/environment/environment.h"
10 #include "mojo/public/cpp/test_support/test_utils.h"
11 #include "mojo/public/cpp/utility/run_loop.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 namespace mojo {
15 namespace test {
16 namespace {
17
18 class ProviderImpl : public sample::Provider {
19 public:
20 explicit ProviderImpl(sample::ScopedProviderClientHandle handle)
21 : client_(handle.Pass(), this) {
22 }
23
24 virtual void EchoString(
25 const String& a,
26 const Callback<void(String)>& callback) MOJO_OVERRIDE {
27 AllocationScope scope;
28 callback.Run(a);
29 }
30
31 virtual void EchoStrings(
32 const String& a,
33 const String& b,
34 const Callback<void(String, String)>& callback) MOJO_OVERRIDE {
35 AllocationScope scope;
36 callback.Run(a, b);
37 }
38
39 virtual void EchoMessagePipeHandle(
40 ScopedMessagePipeHandle a,
41 const Callback<void(ScopedMessagePipeHandle)>& callback) MOJO_OVERRIDE {
42 AllocationScope scope;
43 callback.Run(a.Pass());
44 }
45
46 private:
47 RemotePtr<sample::ProviderClient> client_;
48 };
49
50 class StringRecorder {
51 public:
52 StringRecorder(std::string* buf) : buf_(buf) {
53 }
54 void Run(const String& a) const {
55 *buf_ = a.To<std::string>();
56 }
57 void Run(const String& a, const String& b) const {
58 *buf_ = a.To<std::string>() + b.To<std::string>();
59 }
60 private:
61 std::string* buf_;
62 };
63
64 class MessagePipeWriter {
65 public:
66 explicit MessagePipeWriter(const char* text) : text_(text) {
67 }
68 void Run(ScopedMessagePipeHandle handle) const {
69 WriteTextMessage(handle.get(), text_);
70 }
71 private:
72 std::string text_;
73 };
74
75 class RequestResponseTest : public testing::Test {
76 public:
77 void PumpMessages() {
78 loop_.RunUntilIdle();
79 }
80
81 private:
82 Environment env_;
83 RunLoop loop_;
84 };
85
86 TEST_F(RequestResponseTest, EchoString) {
87 InterfacePipe<sample::Provider> pipe;
88 ProviderImpl provider_impl(pipe.handle_to_peer.Pass());
89 RemotePtr<sample::Provider> provider(pipe.handle_to_self.Pass(), NULL);
90
91 std::string buf;
92 {
93 AllocationScope scope;
94 provider->EchoString("hello", StringRecorder(&buf));
95 }
96
97 PumpMessages();
98
99 EXPECT_EQ(std::string("hello"), buf);
100 }
101
102 TEST_F(RequestResponseTest, EchoStrings) {
103 InterfacePipe<sample::Provider> pipe;
104 ProviderImpl provider_impl(pipe.handle_to_peer.Pass());
105 RemotePtr<sample::Provider> provider(pipe.handle_to_self.Pass(), NULL);
106
107 std::string buf;
108 {
109 AllocationScope scope;
110 provider->EchoStrings("hello", " world", StringRecorder(&buf));
111 }
112
113 PumpMessages();
114
115 EXPECT_EQ(std::string("hello world"), buf);
116 }
117
118 TEST_F(RequestResponseTest, EchoMessagePipeHandle) {
119 InterfacePipe<sample::Provider> pipe;
120 ProviderImpl provider_impl(pipe.handle_to_peer.Pass());
121 RemotePtr<sample::Provider> provider(pipe.handle_to_self.Pass(), NULL);
122
123 MessagePipe pipe2;
124 {
125 AllocationScope scope;
126 provider->EchoMessagePipeHandle(pipe2.handle1.Pass(),
127 MessagePipeWriter("hello"));
128 }
129
130 PumpMessages();
131
132 std::string value;
133 ReadTextMessage(pipe2.handle0.get(), &value);
134
135 EXPECT_EQ(std::string("hello"), value);
136 }
137
138 } // namespace
139 } // namespace test
140 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/bindings/tests/remote_ptr_unittest.cc ('k') | mojo/public/bindings/tests/router_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698