| 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 | 
|---|