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

Side by Side Diff: mojo/public/cpp/bindings/tests/struct_traits_unittest.cc

Issue 2179273002: Mojo C++ bindings: support mapping T and T? differently. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/callback.h" 6 #include "base/callback.h"
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "mojo/public/cpp/bindings/binding_set.h" 10 #include "mojo/public/cpp/bindings/binding_set.h"
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 const EchoTrivialStructWithTraitsCallback& callback) override { 139 const EchoTrivialStructWithTraitsCallback& callback) override {
140 callback.Run(s); 140 callback.Run(s);
141 } 141 }
142 142
143 void EchoMoveOnlyStructWithTraits( 143 void EchoMoveOnlyStructWithTraits(
144 MoveOnlyStructWithTraitsImpl s, 144 MoveOnlyStructWithTraitsImpl s,
145 const EchoMoveOnlyStructWithTraitsCallback& callback) override { 145 const EchoMoveOnlyStructWithTraitsCallback& callback) override {
146 callback.Run(std::move(s)); 146 callback.Run(std::move(s));
147 } 147 }
148 148
149 void EchoNullableMoveOnlyStructWithTraits(
150 base::Optional<MoveOnlyStructWithTraitsImpl> s,
151 const EchoNullableMoveOnlyStructWithTraitsCallback& callback) override {
152 callback.Run(std::move(s));
153 }
154
149 void EchoEnumWithTraits(EnumWithTraitsImpl e, 155 void EchoEnumWithTraits(EnumWithTraitsImpl e,
150 const EchoEnumWithTraitsCallback& callback) override { 156 const EchoEnumWithTraitsCallback& callback) override {
151 callback.Run(e); 157 callback.Run(e);
152 } 158 }
153 159
154 void EchoStructWithTraitsForUniquePtrTest( 160 void EchoStructWithTraitsForUniquePtr(
155 std::unique_ptr<int> e, 161 std::unique_ptr<int> e,
156 const EchoStructWithTraitsForUniquePtrTestCallback& callback) override { 162 const EchoStructWithTraitsForUniquePtrCallback& callback) override {
157 callback.Run(std::move(e)); 163 callback.Run(std::move(e));
158 } 164 }
159 165
166 void EchoNullableStructWithTraitsForUniquePtr(
167 std::unique_ptr<int> e,
168 const EchoNullableStructWithTraitsForUniquePtrCallback& callback)
169 override {
170 callback.Run(std::move(e));
171 }
172
160 base::MessageLoop loop_; 173 base::MessageLoop loop_;
161 174
162 ChromiumRectServiceImpl chromium_service_; 175 ChromiumRectServiceImpl chromium_service_;
163 BindingSet<RectService> chromium_bindings_; 176 BindingSet<RectService> chromium_bindings_;
164 177
165 BlinkRectServiceImpl blink_service_; 178 BlinkRectServiceImpl blink_service_;
166 BindingSet<blink::RectService> blink_bindings_; 179 BindingSet<blink::RectService> blink_bindings_;
167 180
168 BindingSet<TraitsTestService> traits_test_bindings_; 181 BindingSet<TraitsTestService> traits_test_bindings_;
169 }; 182 };
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 349
337 char buffer[10] = {0}; 350 char buffer[10] = {0};
338 uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer)); 351 uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer));
339 EXPECT_EQ(MOJO_RESULT_OK, 352 EXPECT_EQ(MOJO_RESULT_OK,
340 ReadMessageRaw(received.get(), buffer, &buffer_size, nullptr, 353 ReadMessageRaw(received.get(), buffer, &buffer_size, nullptr,
341 nullptr, MOJO_READ_MESSAGE_FLAG_NONE)); 354 nullptr, MOJO_READ_MESSAGE_FLAG_NONE));
342 EXPECT_EQ(kHelloSize, buffer_size); 355 EXPECT_EQ(kHelloSize, buffer_size);
343 EXPECT_STREQ(kHello, buffer); 356 EXPECT_STREQ(kHello, buffer);
344 } 357 }
345 358
359 void CaptureNullableMoveOnlyStructWithTraitsImpl(
360 base::Optional<MoveOnlyStructWithTraitsImpl>* storage,
361 const base::Closure& closure,
362 base::Optional<MoveOnlyStructWithTraitsImpl> passed) {
363 *storage = std::move(passed);
364 closure.Run();
365 }
366
367 TEST_F(StructTraitsTest, EchoNullableMoveOnlyStructWithTraits) {
368 base::RunLoop loop;
369 TraitsTestServicePtr proxy = GetTraitsTestProxy();
370
371 base::Optional<MoveOnlyStructWithTraitsImpl> received;
372 proxy->EchoNullableMoveOnlyStructWithTraits(
373 base::nullopt, base::Bind(&CaptureNullableMoveOnlyStructWithTraitsImpl,
374 &received, loop.QuitClosure()));
375 loop.Run();
376
377 EXPECT_FALSE(received);
378 }
379
346 void ExpectEnumWithTraits(EnumWithTraitsImpl expected_value, 380 void ExpectEnumWithTraits(EnumWithTraitsImpl expected_value,
347 const base::Closure& closure, 381 const base::Closure& closure,
348 EnumWithTraitsImpl value) { 382 EnumWithTraitsImpl value) {
349 EXPECT_EQ(expected_value, value); 383 EXPECT_EQ(expected_value, value);
350 closure.Run(); 384 closure.Run();
351 } 385 }
352 386
353 TEST_F(StructTraitsTest, EchoEnumWithTraits) { 387 TEST_F(StructTraitsTest, EchoEnumWithTraits) {
354 base::RunLoop loop; 388 base::RunLoop loop;
355 TraitsTestServicePtr proxy = GetTraitsTestProxy(); 389 TraitsTestServicePtr proxy = GetTraitsTestProxy();
(...skipping 28 matching lines...) Expand all
384 EXPECT_EQ(input.get_bool(), output.get_bool()); 418 EXPECT_EQ(input.get_bool(), output.get_bool());
385 EXPECT_EQ(input.get_uint32(), output.get_uint32()); 419 EXPECT_EQ(input.get_uint32(), output.get_uint32());
386 EXPECT_EQ(input.get_uint64(), output.get_uint64()); 420 EXPECT_EQ(input.get_uint64(), output.get_uint64());
387 EXPECT_EQ(input.get_string(), output.get_string()); 421 EXPECT_EQ(input.get_string(), output.get_string());
388 EXPECT_EQ(input.get_string_array(), output.get_string_array()); 422 EXPECT_EQ(input.get_string_array(), output.get_string_array());
389 EXPECT_EQ(input.get_struct(), output.get_struct()); 423 EXPECT_EQ(input.get_struct(), output.get_struct());
390 EXPECT_EQ(input.get_struct_array(), output.get_struct_array()); 424 EXPECT_EQ(input.get_struct_array(), output.get_struct_array());
391 EXPECT_EQ(input.get_struct_map(), output.get_struct_map()); 425 EXPECT_EQ(input.get_struct_map(), output.get_struct_map());
392 } 426 }
393 427
394 void ExpectUniquePtr(int expected, 428 void ExpectUniquePtr(std::unique_ptr<int> expected,
395 const base::Closure& closure, 429 const base::Closure& closure,
396 std::unique_ptr<int> value) { 430 std::unique_ptr<int> value) {
397 EXPECT_EQ(expected, *value); 431 ASSERT_EQ(!expected, !value);
432 if (expected)
433 EXPECT_EQ(*expected, *value);
398 closure.Run(); 434 closure.Run();
399 } 435 }
400 436
401 TEST_F(StructTraitsTest, TypemapUniquePtr) { 437 TEST_F(StructTraitsTest, TypemapUniquePtr) {
402 base::RunLoop loop;
403 TraitsTestServicePtr proxy = GetTraitsTestProxy(); 438 TraitsTestServicePtr proxy = GetTraitsTestProxy();
404 439
405 proxy->EchoStructWithTraitsForUniquePtrTest( 440 {
406 base::MakeUnique<int>(12345), 441 base::RunLoop loop;
407 base::Bind(&ExpectUniquePtr, 12345, loop.QuitClosure())); 442 proxy->EchoStructWithTraitsForUniquePtr(
408 loop.Run(); 443 base::MakeUnique<int>(12345),
444 base::Bind(&ExpectUniquePtr, base::Passed(base::MakeUnique<int>(12345)),
445 loop.QuitClosure()));
446 loop.Run();
447 }
448 {
449 base::RunLoop loop;
450 proxy->EchoNullableStructWithTraitsForUniquePtr(
451 nullptr, base::Bind(&ExpectUniquePtr, nullptr, loop.QuitClosure()));
452 loop.Run();
453 }
409 } 454 }
410 455
411 } // namespace test 456 } // namespace test
412 } // namespace mojo 457 } // namespace mojo
OLDNEW
« no previous file with comments | « device/bluetooth/public/interfaces/bluetooth_uuid.typemap ('k') | mojo/public/cpp/bindings/tests/struct_with_traits.typemap » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698