| OLD | NEW |
| 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 <string.h> | 5 #include <string.h> |
| 6 | 6 |
| 7 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" | 7 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" |
| 8 #include "mojo/public/cpp/system/message_pipe.h" | 8 #include "mojo/public/cpp/system/message_pipe.h" |
| 9 #include "mojo/public/interfaces/bindings/tests/test_structs.mojom.h" | 9 #include "mojo/public/interfaces/bindings/tests/test_structs.mojom.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 | 60 |
| 61 // Set the subsequent area to a special value, so that we can find out if we | 61 // Set the subsequent area to a special value, so that we can find out if we |
| 62 // mistakenly access the area. | 62 // mistakenly access the area. |
| 63 void* subsequent_area = buf.Allocate(32); | 63 void* subsequent_area = buf.Allocate(32); |
| 64 memset(subsequent_area, 0xAA, 32); | 64 memset(subsequent_area, 0xAA, 32); |
| 65 | 65 |
| 66 OutputDataType output_data = reinterpret_cast<OutputDataType>(data); | 66 OutputDataType output_data = reinterpret_cast<OutputDataType>(data); |
| 67 output_data->DecodePointersAndHandles(&handles); | 67 output_data->DecodePointersAndHandles(&handles); |
| 68 | 68 |
| 69 U output; | 69 U output; |
| 70 Deserialize_(output_data, &output); | 70 Deserialize_(output_data, &output, nullptr); |
| 71 return output.Pass(); | 71 return output.Pass(); |
| 72 } | 72 } |
| 73 | 73 |
| 74 using StructTest = testing::Test; | 74 using StructTest = testing::Test; |
| 75 | 75 |
| 76 } // namespace | 76 } // namespace |
| 77 | 77 |
| 78 TEST_F(StructTest, Rect) { | 78 TEST_F(StructTest, Rect) { |
| 79 RectPtr rect; | 79 RectPtr rect; |
| 80 EXPECT_TRUE(rect.is_null()); | 80 EXPECT_TRUE(rect.is_null()); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 RectPtr rect(MakeRect()); | 132 RectPtr rect(MakeRect()); |
| 133 | 133 |
| 134 size_t size = GetSerializedSize_(rect); | 134 size_t size = GetSerializedSize_(rect); |
| 135 EXPECT_EQ(8U + 16U, size); | 135 EXPECT_EQ(8U + 16U, size); |
| 136 | 136 |
| 137 mojo::internal::FixedBufferForTesting buf(size); | 137 mojo::internal::FixedBufferForTesting buf(size); |
| 138 internal::Rect_Data* data; | 138 internal::Rect_Data* data; |
| 139 Serialize_(rect.Pass(), &buf, &data); | 139 Serialize_(rect.Pass(), &buf, &data); |
| 140 | 140 |
| 141 RectPtr rect2; | 141 RectPtr rect2; |
| 142 Deserialize_(data, &rect2); | 142 Deserialize_(data, &rect2, nullptr); |
| 143 | 143 |
| 144 CheckRect(*rect2); | 144 CheckRect(*rect2); |
| 145 } | 145 } |
| 146 | 146 |
| 147 // Construction of a struct with struct pointers from null. | 147 // Construction of a struct with struct pointers from null. |
| 148 TEST_F(StructTest, Construction_StructPointers) { | 148 TEST_F(StructTest, Construction_StructPointers) { |
| 149 RectPairPtr pair; | 149 RectPairPtr pair; |
| 150 EXPECT_TRUE(pair.is_null()); | 150 EXPECT_TRUE(pair.is_null()); |
| 151 | 151 |
| 152 pair = RectPair::New(); | 152 pair = RectPair::New(); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 165 pair->second = MakeRect(); | 165 pair->second = MakeRect(); |
| 166 | 166 |
| 167 size_t size = GetSerializedSize_(pair); | 167 size_t size = GetSerializedSize_(pair); |
| 168 EXPECT_EQ(8U + 16U + 2 * (8U + 16U), size); | 168 EXPECT_EQ(8U + 16U + 2 * (8U + 16U), size); |
| 169 | 169 |
| 170 mojo::internal::FixedBufferForTesting buf(size); | 170 mojo::internal::FixedBufferForTesting buf(size); |
| 171 internal::RectPair_Data* data; | 171 internal::RectPair_Data* data; |
| 172 Serialize_(pair.Pass(), &buf, &data); | 172 Serialize_(pair.Pass(), &buf, &data); |
| 173 | 173 |
| 174 RectPairPtr pair2; | 174 RectPairPtr pair2; |
| 175 Deserialize_(data, &pair2); | 175 Deserialize_(data, &pair2, nullptr); |
| 176 | 176 |
| 177 CheckRect(*pair2->first); | 177 CheckRect(*pair2->first); |
| 178 CheckRect(*pair2->second); | 178 CheckRect(*pair2->second); |
| 179 } | 179 } |
| 180 | 180 |
| 181 // Serialization test of a struct with an array member. | 181 // Serialization test of a struct with an array member. |
| 182 TEST_F(StructTest, Serialization_ArrayPointers) { | 182 TEST_F(StructTest, Serialization_ArrayPointers) { |
| 183 NamedRegionPtr region(NamedRegion::New()); | 183 NamedRegionPtr region(NamedRegion::New()); |
| 184 region->name = "region"; | 184 region->name = "region"; |
| 185 region->rects = Array<RectPtr>::New(4); | 185 region->rects = Array<RectPtr>::New(4); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 196 4 * 8U + // rects payload (four pointers) | 196 4 * 8U + // rects payload (four pointers) |
| 197 4 * (8U + // rect header | 197 4 * (8U + // rect header |
| 198 16U), // rect payload (four ints) | 198 16U), // rect payload (four ints) |
| 199 size); | 199 size); |
| 200 | 200 |
| 201 mojo::internal::FixedBufferForTesting buf(size); | 201 mojo::internal::FixedBufferForTesting buf(size); |
| 202 internal::NamedRegion_Data* data; | 202 internal::NamedRegion_Data* data; |
| 203 Serialize_(region.Pass(), &buf, &data); | 203 Serialize_(region.Pass(), &buf, &data); |
| 204 | 204 |
| 205 NamedRegionPtr region2; | 205 NamedRegionPtr region2; |
| 206 Deserialize_(data, ®ion2); | 206 Deserialize_(data, ®ion2, nullptr); |
| 207 | 207 |
| 208 EXPECT_EQ(String("region"), region2->name); | 208 EXPECT_EQ(String("region"), region2->name); |
| 209 | 209 |
| 210 EXPECT_EQ(4U, region2->rects.size()); | 210 EXPECT_EQ(4U, region2->rects.size()); |
| 211 for (size_t i = 0; i < region2->rects.size(); ++i) | 211 for (size_t i = 0; i < region2->rects.size(); ++i) |
| 212 CheckRect(*region2->rects[i], static_cast<int32_t>(i) + 1); | 212 CheckRect(*region2->rects[i], static_cast<int32_t>(i) + 1); |
| 213 } | 213 } |
| 214 | 214 |
| 215 // Serialization test of a struct with null array pointers. | 215 // Serialization test of a struct with null array pointers. |
| 216 TEST_F(StructTest, Serialization_NullArrayPointers) { | 216 TEST_F(StructTest, Serialization_NullArrayPointers) { |
| 217 NamedRegionPtr region(NamedRegion::New()); | 217 NamedRegionPtr region(NamedRegion::New()); |
| 218 EXPECT_TRUE(region->name.is_null()); | 218 EXPECT_TRUE(region->name.is_null()); |
| 219 EXPECT_TRUE(region->rects.is_null()); | 219 EXPECT_TRUE(region->rects.is_null()); |
| 220 | 220 |
| 221 size_t size = GetSerializedSize_(region); | 221 size_t size = GetSerializedSize_(region); |
| 222 EXPECT_EQ(8U + // header | 222 EXPECT_EQ(8U + // header |
| 223 8U + // name pointer | 223 8U + // name pointer |
| 224 8U, // rects pointer | 224 8U, // rects pointer |
| 225 size); | 225 size); |
| 226 | 226 |
| 227 mojo::internal::FixedBufferForTesting buf(size); | 227 mojo::internal::FixedBufferForTesting buf(size); |
| 228 internal::NamedRegion_Data* data; | 228 internal::NamedRegion_Data* data; |
| 229 Serialize_(region.Pass(), &buf, &data); | 229 Serialize_(region.Pass(), &buf, &data); |
| 230 | 230 |
| 231 NamedRegionPtr region2; | 231 NamedRegionPtr region2; |
| 232 Deserialize_(data, ®ion2); | 232 Deserialize_(data, ®ion2, nullptr); |
| 233 | 233 |
| 234 EXPECT_TRUE(region2->name.is_null()); | 234 EXPECT_TRUE(region2->name.is_null()); |
| 235 EXPECT_TRUE(region2->rects.is_null()); | 235 EXPECT_TRUE(region2->rects.is_null()); |
| 236 } | 236 } |
| 237 | 237 |
| 238 // Tests deserializing structs as a newer version. | 238 // Tests deserializing structs as a newer version. |
| 239 TEST_F(StructTest, Versioning_OldToNew) { | 239 TEST_F(StructTest, Versioning_OldToNew) { |
| 240 { | 240 { |
| 241 MultiVersionStructV0Ptr input(MultiVersionStructV0::New()); | 241 MultiVersionStructV0Ptr input(MultiVersionStructV0::New()); |
| 242 input->f_int32 = 123; | 242 input->f_int32 = 123; |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 expected_output->f_int32 = 123; | 406 expected_output->f_int32 = 123; |
| 407 | 407 |
| 408 MultiVersionStructV0Ptr output = | 408 MultiVersionStructV0Ptr output = |
| 409 SerializeAndDeserialize<MultiVersionStructV0Ptr>(input.Pass()); | 409 SerializeAndDeserialize<MultiVersionStructV0Ptr>(input.Pass()); |
| 410 EXPECT_TRUE(output); | 410 EXPECT_TRUE(output); |
| 411 EXPECT_TRUE(output->Equals(*expected_output)); | 411 EXPECT_TRUE(output->Equals(*expected_output)); |
| 412 } | 412 } |
| 413 } | 413 } |
| 414 } // namespace test | 414 } // namespace test |
| 415 } // namespace mojo | 415 } // namespace mojo |
| OLD | NEW |