OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "gtest/gtest.h" | |
6 #include "mojo/public/cpp/bindings/lib/bindings_serialization.h" | |
7 #include "mojo/public/cpp/bindings/lib/message_builder.h" | |
8 #include "mojo/public/cpp/bindings/lib/message_internal.h" | |
9 | |
10 namespace mojo { | |
11 namespace test { | |
12 namespace { | |
13 | |
14 TEST(MessageBuilderTest, MessageBuilder) { | |
15 char payload[41]; | |
16 MessageBuilder b(123u, sizeof(payload)); | |
17 | |
18 // The payload size should be a multiple of 8. | |
19 EXPECT_EQ(48u, b.message()->payload_num_bytes()); | |
20 | |
21 // payload size + message header size: | |
22 EXPECT_EQ(48u + sizeof(internal::MessageHeader), | |
23 b.message()->data_num_bytes()); | |
24 | |
25 const auto* msg_hdr = | |
26 reinterpret_cast<const internal::MessageHeader*>(b.message()->data()); | |
27 EXPECT_EQ(123u, msg_hdr->name); | |
28 EXPECT_EQ(0u, msg_hdr->flags); | |
29 EXPECT_EQ(0u, msg_hdr->version); | |
30 | |
31 EXPECT_EQ(sizeof(internal::MessageHeader), msg_hdr->num_bytes); | |
32 } | |
33 | |
34 TEST(MessageBuilderTest, RequestMessageBuilder) { | |
35 char payload[41]; | |
36 RequestMessageBuilder b(123u, sizeof(payload)); | |
37 | |
38 // The payload size should be a multiple of 8. | |
39 EXPECT_EQ(48u, b.message()->payload_num_bytes()); | |
40 // Total data size should be payload size + message header size. | |
41 EXPECT_EQ(48u + sizeof(internal::MessageHeaderWithRequestID), | |
42 b.message()->data_num_bytes()); | |
43 | |
44 const auto* msg_hdr = | |
45 reinterpret_cast<const internal::MessageHeaderWithRequestID*>( | |
46 b.message()->data()); | |
47 EXPECT_EQ(123u, msg_hdr->name); | |
48 EXPECT_EQ(internal::kMessageExpectsResponse, msg_hdr->flags); | |
49 EXPECT_EQ(1u, msg_hdr->version); | |
50 EXPECT_EQ(0ul, msg_hdr->request_id); | |
51 EXPECT_EQ(sizeof(internal::MessageHeaderWithRequestID), msg_hdr->num_bytes); | |
52 } | |
53 | |
54 TEST(MessageBuilderTest, ResponseMessageBuilder) { | |
55 char payload[41]; | |
56 ResponseMessageBuilder b(123u, sizeof(payload), 0ull); | |
57 | |
58 // The payload size should be a multiple of 8. | |
59 EXPECT_EQ(48u, b.message()->payload_num_bytes()); | |
60 // Total data size should be payload size + message header size. | |
61 EXPECT_EQ(48u + sizeof(internal::MessageHeaderWithRequestID), | |
62 b.message()->data_num_bytes()); | |
63 | |
64 const auto* msg_hdr = | |
65 reinterpret_cast<const internal::MessageHeaderWithRequestID*>( | |
66 b.message()->data()); | |
67 EXPECT_EQ(123u, msg_hdr->name); | |
68 EXPECT_EQ(internal::kMessageIsResponse, msg_hdr->flags); | |
69 EXPECT_EQ(1u, msg_hdr->version); | |
70 EXPECT_EQ(0ul, msg_hdr->request_id); | |
71 EXPECT_EQ(sizeof(internal::MessageHeaderWithRequestID), msg_hdr->num_bytes); | |
72 } | |
73 | |
74 } // namespace | |
75 } // namespace test | |
76 } // namespace mojo | |
OLD | NEW |