| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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 <stdlib.h> | 5 #include <stdlib.h> |
| 6 #include <string.h> | 6 #include <string.h> |
| 7 | 7 |
| 8 #include "base/basictypes.h" | |
| 9 #include "base/compiler_specific.h" | |
| 10 #include "mojo/public/bindings/lib/bindings_support.h" | 8 #include "mojo/public/bindings/lib/bindings_support.h" |
| 11 #include "mojo/public/bindings/lib/connector.h" | 9 #include "mojo/public/bindings/lib/connector.h" |
| 12 #include "mojo/public/bindings/lib/message_queue.h" | 10 #include "mojo/public/bindings/lib/message_queue.h" |
| 11 #include "mojo/public/system/macros.h" |
| 13 #include "mojo/public/tests/simple_bindings_support.h" | 12 #include "mojo/public/tests/simple_bindings_support.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 15 | 14 |
| 16 namespace mojo { | 15 namespace mojo { |
| 17 namespace test { | 16 namespace test { |
| 18 | 17 |
| 19 class MessageAccumulator : public MessageReceiver { | 18 class MessageAccumulator : public MessageReceiver { |
| 20 public: | 19 public: |
| 21 MessageAccumulator() { | 20 MessageAccumulator() { |
| 22 } | 21 } |
| (...skipping 15 matching lines...) Expand all Loading... |
| 38 MessageQueue queue_; | 37 MessageQueue queue_; |
| 39 }; | 38 }; |
| 40 | 39 |
| 41 class BindingsConnectorTest : public testing::Test { | 40 class BindingsConnectorTest : public testing::Test { |
| 42 public: | 41 public: |
| 43 BindingsConnectorTest() | 42 BindingsConnectorTest() |
| 44 : handle0_(kInvalidHandle), | 43 : handle0_(kInvalidHandle), |
| 45 handle1_(kInvalidHandle) { | 44 handle1_(kInvalidHandle) { |
| 46 } | 45 } |
| 47 | 46 |
| 48 virtual void SetUp() OVERRIDE { | 47 virtual void SetUp() MOJO_OVERRIDE { |
| 49 CreateMessagePipe(&handle0_, &handle1_); | 48 CreateMessagePipe(&handle0_, &handle1_); |
| 50 } | 49 } |
| 51 | 50 |
| 52 virtual void TearDown() OVERRIDE { | 51 virtual void TearDown() MOJO_OVERRIDE { |
| 53 Close(handle0_); | 52 Close(handle0_); |
| 54 Close(handle1_); | 53 Close(handle1_); |
| 55 } | 54 } |
| 56 | 55 |
| 57 void AllocMessage(const char* text, Message* message) { | 56 void AllocMessage(const char* text, Message* message) { |
| 58 size_t payload_size = strlen(text) + 1; // Plus null terminator. | 57 size_t payload_size = strlen(text) + 1; // Plus null terminator. |
| 59 size_t num_bytes = sizeof(MessageHeader) + payload_size; | 58 size_t num_bytes = sizeof(MessageHeader) + payload_size; |
| 60 message->data = static_cast<MessageData*>(malloc(num_bytes)); | 59 message->data = static_cast<MessageData*>(malloc(num_bytes)); |
| 61 message->data->header.num_bytes = num_bytes; | 60 message->data->header.num_bytes = num_bytes; |
| 62 message->data->header.name = 1; | 61 message->data->header.name = 1; |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 std::string( | 125 std::string( |
| 127 reinterpret_cast<char*>(message_received.data->payload))); | 126 reinterpret_cast<char*>(message_received.data->payload))); |
| 128 } | 127 } |
| 129 | 128 |
| 130 TEST_F(BindingsConnectorTest, Basic_TwoMessages) { | 129 TEST_F(BindingsConnectorTest, Basic_TwoMessages) { |
| 131 Connector connector0(handle0_); | 130 Connector connector0(handle0_); |
| 132 Connector connector1(handle1_); | 131 Connector connector1(handle1_); |
| 133 | 132 |
| 134 const char* kText[] = { "hello", "world" }; | 133 const char* kText[] = { "hello", "world" }; |
| 135 | 134 |
| 136 for (size_t i = 0; i < arraysize(kText); ++i) { | 135 for (size_t i = 0; i < sizeof(kText) / sizeof(kText[0]); ++i) { |
| 137 Message message; | 136 Message message; |
| 138 AllocMessage(kText[i], &message); | 137 AllocMessage(kText[i], &message); |
| 139 | 138 |
| 140 connector0.Accept(&message); | 139 connector0.Accept(&message); |
| 141 } | 140 } |
| 142 | 141 |
| 143 MessageAccumulator accumulator; | 142 MessageAccumulator accumulator; |
| 144 connector1.SetIncomingReceiver(&accumulator); | 143 connector1.SetIncomingReceiver(&accumulator); |
| 145 | 144 |
| 146 PumpMessages(); | 145 PumpMessages(); |
| 147 | 146 |
| 148 for (size_t i = 0; i < arraysize(kText); ++i) { | 147 for (size_t i = 0; i < sizeof(kText) / sizeof(kText[0]); ++i) { |
| 149 ASSERT_FALSE(accumulator.IsEmpty()); | 148 ASSERT_FALSE(accumulator.IsEmpty()); |
| 150 | 149 |
| 151 Message message_received; | 150 Message message_received; |
| 152 accumulator.Pop(&message_received); | 151 accumulator.Pop(&message_received); |
| 153 | 152 |
| 154 EXPECT_EQ(std::string(kText[i]), | 153 EXPECT_EQ(std::string(kText[i]), |
| 155 std::string( | 154 std::string( |
| 156 reinterpret_cast<char*>(message_received.data->payload))); | 155 reinterpret_cast<char*>(message_received.data->payload))); |
| 157 } | 156 } |
| 158 } | 157 } |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 std::string( | 208 std::string( |
| 210 reinterpret_cast<char*>(message_received.data->payload))); | 209 reinterpret_cast<char*>(message_received.data->payload))); |
| 211 ASSERT_EQ(2U, message_received.handles.size()); | 210 ASSERT_EQ(2U, message_received.handles.size()); |
| 212 EXPECT_EQ(handles[0].value, message_received.handles[0].value); | 211 EXPECT_EQ(handles[0].value, message_received.handles[0].value); |
| 213 EXPECT_EQ(handles[1].value, message_received.handles[1].value); | 212 EXPECT_EQ(handles[1].value, message_received.handles[1].value); |
| 214 } | 213 } |
| 215 #endif | 214 #endif |
| 216 | 215 |
| 217 } // namespace test | 216 } // namespace test |
| 218 } // namespace mojo | 217 } // namespace mojo |
| OLD | NEW |