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

Side by Side Diff: mojo/system/shared_buffer_dispatcher_unittest.cc

Issue 471773002: Mojo: Add a platform interface for shared memory (embedder::PlatformSharedBuffer). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: win fix Created 6 years, 4 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
« no previous file with comments | « mojo/system/shared_buffer_dispatcher.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mojo/system/shared_buffer_dispatcher.h" 5 #include "mojo/system/shared_buffer_dispatcher.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
11 #include "mojo/embedder/platform_shared_buffer.h"
11 #include "mojo/system/dispatcher.h" 12 #include "mojo/system/dispatcher.h"
12 #include "mojo/system/raw_shared_buffer.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 namespace mojo { 15 namespace mojo {
16 namespace system { 16 namespace system {
17 namespace { 17 namespace {
18 18
19 // NOTE(vtl): There's currently not much to test for in 19 // NOTE(vtl): There's currently not much to test for in
20 // |SharedBufferDispatcher::ValidateCreateOptions()|, but the tests should be 20 // |SharedBufferDispatcher::ValidateCreateOptions()|, but the tests should be
21 // expanded if/when options are added, so I've kept the general form of the 21 // expanded if/when options are added, so I've kept the general form of the
22 // tests from data_pipe_unittest.cc. 22 // tests from data_pipe_unittest.cc.
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 TEST(SharedBufferDispatcherTest, CreateAndMapBuffer) { 102 TEST(SharedBufferDispatcherTest, CreateAndMapBuffer) {
103 scoped_refptr<SharedBufferDispatcher> dispatcher; 103 scoped_refptr<SharedBufferDispatcher> dispatcher;
104 EXPECT_EQ( 104 EXPECT_EQ(
105 MOJO_RESULT_OK, 105 MOJO_RESULT_OK,
106 SharedBufferDispatcher::Create( 106 SharedBufferDispatcher::Create(
107 SharedBufferDispatcher::kDefaultCreateOptions, 100, &dispatcher)); 107 SharedBufferDispatcher::kDefaultCreateOptions, 100, &dispatcher));
108 ASSERT_TRUE(dispatcher); 108 ASSERT_TRUE(dispatcher);
109 EXPECT_EQ(Dispatcher::kTypeSharedBuffer, dispatcher->GetType()); 109 EXPECT_EQ(Dispatcher::kTypeSharedBuffer, dispatcher->GetType());
110 110
111 // Make a couple of mappings. 111 // Make a couple of mappings.
112 scoped_ptr<RawSharedBufferMapping> mapping1; 112 scoped_ptr<embedder::PlatformSharedBufferMapping> mapping1;
113 EXPECT_EQ( 113 EXPECT_EQ(
114 MOJO_RESULT_OK, 114 MOJO_RESULT_OK,
115 dispatcher->MapBuffer(0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping1)); 115 dispatcher->MapBuffer(0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping1));
116 ASSERT_TRUE(mapping1); 116 ASSERT_TRUE(mapping1);
117 ASSERT_TRUE(mapping1->base()); 117 ASSERT_TRUE(mapping1->GetBase());
118 EXPECT_EQ(100u, mapping1->length()); 118 EXPECT_EQ(100u, mapping1->GetLength());
119 // Write something. 119 // Write something.
120 static_cast<char*>(mapping1->base())[50] = 'x'; 120 static_cast<char*>(mapping1->GetBase())[50] = 'x';
121 121
122 scoped_ptr<RawSharedBufferMapping> mapping2; 122 scoped_ptr<embedder::PlatformSharedBufferMapping> mapping2;
123 EXPECT_EQ( 123 EXPECT_EQ(
124 MOJO_RESULT_OK, 124 MOJO_RESULT_OK,
125 dispatcher->MapBuffer(50, 50, MOJO_MAP_BUFFER_FLAG_NONE, &mapping2)); 125 dispatcher->MapBuffer(50, 50, MOJO_MAP_BUFFER_FLAG_NONE, &mapping2));
126 ASSERT_TRUE(mapping2); 126 ASSERT_TRUE(mapping2);
127 ASSERT_TRUE(mapping2->base()); 127 ASSERT_TRUE(mapping2->GetBase());
128 EXPECT_EQ(50u, mapping2->length()); 128 EXPECT_EQ(50u, mapping2->GetLength());
129 EXPECT_EQ('x', static_cast<char*>(mapping2->base())[0]); 129 EXPECT_EQ('x', static_cast<char*>(mapping2->GetBase())[0]);
130 130
131 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); 131 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close());
132 132
133 // Check that we can still read/write to mappings after the dispatcher has 133 // Check that we can still read/write to mappings after the dispatcher has
134 // gone away. 134 // gone away.
135 static_cast<char*>(mapping2->base())[1] = 'y'; 135 static_cast<char*>(mapping2->GetBase())[1] = 'y';
136 EXPECT_EQ('y', static_cast<char*>(mapping1->base())[51]); 136 EXPECT_EQ('y', static_cast<char*>(mapping1->GetBase())[51]);
137 } 137 }
138 138
139 TEST(SharedBufferDispatcher, DuplicateBufferHandle) { 139 TEST(SharedBufferDispatcher, DuplicateBufferHandle) {
140 scoped_refptr<SharedBufferDispatcher> dispatcher1; 140 scoped_refptr<SharedBufferDispatcher> dispatcher1;
141 EXPECT_EQ( 141 EXPECT_EQ(
142 MOJO_RESULT_OK, 142 MOJO_RESULT_OK,
143 SharedBufferDispatcher::Create( 143 SharedBufferDispatcher::Create(
144 SharedBufferDispatcher::kDefaultCreateOptions, 100, &dispatcher1)); 144 SharedBufferDispatcher::kDefaultCreateOptions, 100, &dispatcher1));
145 145
146 // Map and write something. 146 // Map and write something.
147 scoped_ptr<RawSharedBufferMapping> mapping; 147 scoped_ptr<embedder::PlatformSharedBufferMapping> mapping;
148 EXPECT_EQ( 148 EXPECT_EQ(
149 MOJO_RESULT_OK, 149 MOJO_RESULT_OK,
150 dispatcher1->MapBuffer(0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); 150 dispatcher1->MapBuffer(0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
151 static_cast<char*>(mapping->base())[0] = 'x'; 151 static_cast<char*>(mapping->GetBase())[0] = 'x';
152 mapping.reset(); 152 mapping.reset();
153 153
154 // Duplicate |dispatcher1| and then close it. 154 // Duplicate |dispatcher1| and then close it.
155 scoped_refptr<Dispatcher> dispatcher2; 155 scoped_refptr<Dispatcher> dispatcher2;
156 EXPECT_EQ( 156 EXPECT_EQ(
157 MOJO_RESULT_OK, 157 MOJO_RESULT_OK,
158 dispatcher1->DuplicateBufferHandle(NullUserPointer(), &dispatcher2)); 158 dispatcher1->DuplicateBufferHandle(NullUserPointer(), &dispatcher2));
159 ASSERT_TRUE(dispatcher2); 159 ASSERT_TRUE(dispatcher2);
160 EXPECT_EQ(Dispatcher::kTypeSharedBuffer, dispatcher2->GetType()); 160 EXPECT_EQ(Dispatcher::kTypeSharedBuffer, dispatcher2->GetType());
161 161
162 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->Close()); 162 EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->Close());
163 163
164 // Map |dispatcher2| and read something. 164 // Map |dispatcher2| and read something.
165 EXPECT_EQ( 165 EXPECT_EQ(
166 MOJO_RESULT_OK, 166 MOJO_RESULT_OK,
167 dispatcher2->MapBuffer(0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); 167 dispatcher2->MapBuffer(0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
168 EXPECT_EQ('x', static_cast<char*>(mapping->base())[0]); 168 EXPECT_EQ('x', static_cast<char*>(mapping->GetBase())[0]);
169 169
170 EXPECT_EQ(MOJO_RESULT_OK, dispatcher2->Close()); 170 EXPECT_EQ(MOJO_RESULT_OK, dispatcher2->Close());
171 } 171 }
172 172
173 TEST(SharedBufferDispatcherTest, DuplicateBufferHandleOptionsValid) { 173 TEST(SharedBufferDispatcherTest, DuplicateBufferHandleOptionsValid) {
174 scoped_refptr<SharedBufferDispatcher> dispatcher1; 174 scoped_refptr<SharedBufferDispatcher> dispatcher1;
175 EXPECT_EQ( 175 EXPECT_EQ(
176 MOJO_RESULT_OK, 176 MOJO_RESULT_OK,
177 SharedBufferDispatcher::Create( 177 SharedBufferDispatcher::Create(
178 SharedBufferDispatcher::kDefaultCreateOptions, 100, &dispatcher1)); 178 SharedBufferDispatcher::kDefaultCreateOptions, 100, &dispatcher1));
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 EXPECT_FALSE(dispatcher); 243 EXPECT_FALSE(dispatcher);
244 } 244 }
245 245
246 TEST(SharedBufferDispatcherTest, MapBufferInvalidArguments) { 246 TEST(SharedBufferDispatcherTest, MapBufferInvalidArguments) {
247 scoped_refptr<SharedBufferDispatcher> dispatcher; 247 scoped_refptr<SharedBufferDispatcher> dispatcher;
248 EXPECT_EQ( 248 EXPECT_EQ(
249 MOJO_RESULT_OK, 249 MOJO_RESULT_OK,
250 SharedBufferDispatcher::Create( 250 SharedBufferDispatcher::Create(
251 SharedBufferDispatcher::kDefaultCreateOptions, 100, &dispatcher)); 251 SharedBufferDispatcher::kDefaultCreateOptions, 100, &dispatcher));
252 252
253 scoped_ptr<RawSharedBufferMapping> mapping; 253 scoped_ptr<embedder::PlatformSharedBufferMapping> mapping;
254 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 254 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
255 dispatcher->MapBuffer(0, 101, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); 255 dispatcher->MapBuffer(0, 101, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
256 EXPECT_FALSE(mapping); 256 EXPECT_FALSE(mapping);
257 257
258 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 258 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
259 dispatcher->MapBuffer(1, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); 259 dispatcher->MapBuffer(1, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
260 EXPECT_FALSE(mapping); 260 EXPECT_FALSE(mapping);
261 261
262 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 262 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
263 dispatcher->MapBuffer(0, 0, MOJO_MAP_BUFFER_FLAG_NONE, &mapping)); 263 dispatcher->MapBuffer(0, 0, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
264 EXPECT_FALSE(mapping); 264 EXPECT_FALSE(mapping);
265 265
266 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); 266 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close());
267 } 267 }
268 268
269 } // namespace 269 } // namespace
270 } // namespace system 270 } // namespace system
271 } // namespace mojo 271 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/system/shared_buffer_dispatcher.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698