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

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

Issue 1800753005: C++ bindings: A struct's Deserialize() now does validation before deserializing. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Address comments. DeserializeWithoutValidation returns void, doesn't take in buf_size. Created 4 years, 9 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 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 <utility> 5 #include <utility>
6 #include <vector> 6 #include <vector>
7 7
8 #include "mojo/public/cpp/bindings/array.h" 8 #include "mojo/public/cpp/bindings/array.h"
9 #include "mojo/public/cpp/bindings/binding.h" 9 #include "mojo/public/cpp/bindings/binding.h"
10 #include "mojo/public/cpp/bindings/lib/array_internal.h" 10 #include "mojo/public/cpp/bindings/lib/array_internal.h"
(...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 654
655 // Serialize a null union and deserialize it back to check that we have a null 655 // Serialize a null union and deserialize it back to check that we have a null
656 // union. 656 // union.
657 TEST(UnionTest, Deserialize_NullableUnion) { 657 TEST(UnionTest, Deserialize_NullableUnion) {
658 char buf[1024]; 658 char buf[1024];
659 SmallStructPtr small_struct = SmallStruct::New(); 659 SmallStructPtr small_struct = SmallStruct::New();
660 small_struct->Serialize(buf, sizeof(buf)); 660 small_struct->Serialize(buf, sizeof(buf));
661 EXPECT_TRUE(small_struct->pod_union.is_null()); 661 EXPECT_TRUE(small_struct->pod_union.is_null());
662 662
663 SmallStructPtr deserialized_struct = SmallStruct::New(); 663 SmallStructPtr deserialized_struct = SmallStruct::New();
664 deserialized_struct->Deserialize(buf); 664 EXPECT_TRUE(deserialized_struct->Deserialize(buf, sizeof(buf)));
665
666 EXPECT_TRUE(deserialized_struct->pod_union.is_null()); 665 EXPECT_TRUE(deserialized_struct->pod_union.is_null());
667 } 666 }
668 667
669 // Validation passes with nullable null union containing non-nullable objects. 668 // Validation passes with nullable null union containing non-nullable objects.
670 TEST(UnionTest, Validation_NullableObjectUnion) { 669 TEST(UnionTest, Validation_NullableObjectUnion) {
671 Environment environment; 670 Environment environment;
672 StructNullObjectUnionPtr small_struct(StructNullObjectUnion::New()); 671 StructNullObjectUnionPtr small_struct(StructNullObjectUnion::New());
673 672
674 size_t size = GetSerializedSize_(*small_struct); 673 size_t size = GetSerializedSize_(*small_struct);
675 674
(...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after
1285 PodUnionPtr pod(PodUnion::New()); 1284 PodUnionPtr pod(PodUnion::New());
1286 pod->set_f_int16(16); 1285 pod->set_f_int16(16);
1287 1286
1288 ptr->Echo(pod.Pass(), 1287 ptr->Echo(pod.Pass(),
1289 [](PodUnionPtr out) { EXPECT_EQ(16, out->get_f_int16()); }); 1288 [](PodUnionPtr out) { EXPECT_EQ(16, out->get_f_int16()); });
1290 run_loop.RunUntilIdle(); 1289 run_loop.RunUntilIdle();
1291 } 1290 }
1292 1291
1293 } // namespace test 1292 } // namespace test
1294 } // namespace mojo 1293 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698