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

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

Issue 2112093002: Mojo C++ bindings: Merge EncodePointers/DecodePointers into Serialize/Deserialize, respectively. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@61_array_fix
Patch Set: . Created 4 years, 5 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 PodUnionPtr pod(PodUnion::New()); 163 PodUnionPtr pod(PodUnion::New());
164 pod->set_f_int8(10); 164 pod->set_f_int8(10);
165 165
166 size_t size = 166 size_t size =
167 mojo::internal::PrepareToSerialize<PodUnionPtr>(pod, false, nullptr); 167 mojo::internal::PrepareToSerialize<PodUnionPtr>(pod, false, nullptr);
168 EXPECT_EQ(16U, size); 168 EXPECT_EQ(16U, size);
169 169
170 mojo::internal::FixedBufferForTesting buf(size); 170 mojo::internal::FixedBufferForTesting buf(size);
171 internal::PodUnion_Data* data = nullptr; 171 internal::PodUnion_Data* data = nullptr;
172 mojo::internal::Serialize<PodUnionPtr>(pod, &buf, &data, false, nullptr); 172 mojo::internal::Serialize<PodUnionPtr>(pod, &buf, &data, false, nullptr);
173 data->EncodePointers();
174 173
175 void* raw_buf = buf.Leak(); 174 void* raw_buf = buf.Leak();
176 mojo::internal::ValidationContext validation_context( 175 mojo::internal::ValidationContext validation_context(
177 data, static_cast<uint32_t>(size), 0); 176 data, static_cast<uint32_t>(size), 0);
178 EXPECT_TRUE( 177 EXPECT_TRUE(
179 internal::PodUnion_Data::Validate(raw_buf, &validation_context, false)); 178 internal::PodUnion_Data::Validate(raw_buf, &validation_context, false));
180 free(raw_buf); 179 free(raw_buf);
181 } 180 }
182 181
183 TEST(UnionTest, SerializeNotNull) { 182 TEST(UnionTest, SerializeNotNull) {
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 348
350 String hello("hello world"); 349 String hello("hello world");
351 pod1->set_f_string(hello); 350 pod1->set_f_string(hello);
352 351
353 size_t size = 352 size_t size =
354 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(pod1, false, nullptr); 353 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(pod1, false, nullptr);
355 mojo::internal::FixedBufferForTesting buf(size); 354 mojo::internal::FixedBufferForTesting buf(size);
356 internal::ObjectUnion_Data* data = nullptr; 355 internal::ObjectUnion_Data* data = nullptr;
357 mojo::internal::Serialize<ObjectUnionPtr>(pod1, &buf, &data, false, nullptr); 356 mojo::internal::Serialize<ObjectUnionPtr>(pod1, &buf, &data, false, nullptr);
358 357
359 data->EncodePointers();
360 data->DecodePointers();
361
362 ObjectUnionPtr pod2; 358 ObjectUnionPtr pod2;
363 mojo::internal::Deserialize<ObjectUnionPtr>(data, &pod2, nullptr); 359 mojo::internal::Deserialize<ObjectUnionPtr>(data, &pod2, nullptr);
364 EXPECT_EQ(hello, pod2->get_f_string()); 360 EXPECT_EQ(hello, pod2->get_f_string());
365 EXPECT_TRUE(pod2->is_f_string()); 361 EXPECT_TRUE(pod2->is_f_string());
366 EXPECT_EQ(pod2->which(), ObjectUnion::Tag::F_STRING); 362 EXPECT_EQ(pod2->which(), ObjectUnion::Tag::F_STRING);
367 } 363 }
368 364
369 TEST(UnionTest, NullStringValidation) { 365 TEST(UnionTest, NullStringValidation) {
370 size_t size = sizeof(internal::ObjectUnion_Data); 366 size_t size = sizeof(internal::ObjectUnion_Data);
371 mojo::internal::FixedBufferForTesting buf(size); 367 mojo::internal::FixedBufferForTesting buf(size);
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 mojo::internal::PrepareToSerialize<Array<ObjectUnionPtr>>(array, nullptr); 491 mojo::internal::PrepareToSerialize<Array<ObjectUnionPtr>>(array, nullptr);
496 EXPECT_EQ(72U, size); 492 EXPECT_EQ(72U, size);
497 493
498 mojo::internal::FixedBufferForTesting buf(size); 494 mojo::internal::FixedBufferForTesting buf(size);
499 495
500 mojo::internal::Array_Data<internal::ObjectUnion_Data>* data; 496 mojo::internal::Array_Data<internal::ObjectUnion_Data>* data;
501 mojo::internal::ContainerValidateParams validate_params(0, false, nullptr); 497 mojo::internal::ContainerValidateParams validate_params(0, false, nullptr);
502 mojo::internal::Serialize<Array<ObjectUnionPtr>>(array, &buf, &data, 498 mojo::internal::Serialize<Array<ObjectUnionPtr>>(array, &buf, &data,
503 &validate_params, nullptr); 499 &validate_params, nullptr);
504 500
505 data->EncodePointers();
506
507 std::vector<char> new_buf; 501 std::vector<char> new_buf;
508 new_buf.resize(size); 502 new_buf.resize(size);
509 503
510 void* raw_buf = buf.Leak(); 504 void* raw_buf = buf.Leak();
511 memcpy(new_buf.data(), raw_buf, size); 505 memcpy(new_buf.data(), raw_buf, size);
512 free(raw_buf); 506 free(raw_buf);
513 507
514 data = 508 data =
515 reinterpret_cast<mojo::internal::Array_Data<internal::ObjectUnion_Data>*>( 509 reinterpret_cast<mojo::internal::Array_Data<internal::ObjectUnion_Data>*>(
516 new_buf.data()); 510 new_buf.data());
517 mojo::internal::ValidationContext validation_context( 511 mojo::internal::ValidationContext validation_context(
518 data, static_cast<uint32_t>(size), 0); 512 data, static_cast<uint32_t>(size), 0);
519 ASSERT_TRUE(mojo::internal::Array_Data<internal::ObjectUnion_Data>::Validate( 513 ASSERT_TRUE(mojo::internal::Array_Data<internal::ObjectUnion_Data>::Validate(
520 data, &validation_context, &validate_params)); 514 data, &validation_context, &validate_params));
521 515
522 data->DecodePointers();
523 Array<ObjectUnionPtr> array2; 516 Array<ObjectUnionPtr> array2;
524 mojo::internal::Deserialize<Array<ObjectUnionPtr>>(data, &array2, nullptr); 517 mojo::internal::Deserialize<Array<ObjectUnionPtr>>(data, &array2, nullptr);
525 518
526 EXPECT_EQ(2U, array2.size()); 519 EXPECT_EQ(2U, array2.size());
527 520
528 EXPECT_EQ(String("hello"), array2[0]->get_f_string()); 521 EXPECT_EQ(String("hello"), array2[0]->get_f_string());
529 EXPECT_EQ(String("world"), array2[1]->get_f_string()); 522 EXPECT_EQ(String("world"), array2[1]->get_f_string());
530 } 523 }
531 524
532 // TODO(azani): Move back in struct_unittest.cc when possible. 525 // TODO(azani): Move back in struct_unittest.cc when possible.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 obj_struct->obj_union->set_f_string(hello); 562 obj_struct->obj_union->set_f_string(hello);
570 563
571 size_t size = mojo::internal::PrepareToSerialize<SmallObjStructPtr>( 564 size_t size = mojo::internal::PrepareToSerialize<SmallObjStructPtr>(
572 obj_struct, nullptr); 565 obj_struct, nullptr);
573 566
574 mojo::internal::FixedBufferForTesting buf(size); 567 mojo::internal::FixedBufferForTesting buf(size);
575 internal::SmallObjStruct_Data* data = nullptr; 568 internal::SmallObjStruct_Data* data = nullptr;
576 mojo::internal::Serialize<SmallObjStructPtr>(obj_struct, &buf, &data, 569 mojo::internal::Serialize<SmallObjStructPtr>(obj_struct, &buf, &data,
577 nullptr); 570 nullptr);
578 571
579 data->EncodePointers();
580 data->DecodePointers();
581
582 SmallObjStructPtr deserialized; 572 SmallObjStructPtr deserialized;
583 mojo::internal::Deserialize<SmallObjStructPtr>(data, &deserialized, nullptr); 573 mojo::internal::Deserialize<SmallObjStructPtr>(data, &deserialized, nullptr);
584 574
585 EXPECT_EQ(hello, deserialized->obj_union->get_f_string()); 575 EXPECT_EQ(hello, deserialized->obj_union->get_f_string());
586 } 576 }
587 577
588 // Validation test of a struct with a union. 578 // Validation test of a struct with a union.
589 TEST(UnionTest, Validation_UnionsInStruct) { 579 TEST(UnionTest, Validation_UnionsInStruct) {
590 SmallStructPtr small_struct(SmallStruct::New()); 580 SmallStructPtr small_struct(SmallStruct::New());
591 small_struct->pod_union = PodUnion::New(); 581 small_struct->pod_union = PodUnion::New();
592 small_struct->pod_union->set_f_int32(10); 582 small_struct->pod_union->set_f_int32(10);
593 583
594 mojo::internal::SerializationContext context; 584 mojo::internal::SerializationContext context;
595 size_t size = mojo::internal::PrepareToSerialize<SmallStructPtr>(small_struct, 585 size_t size = mojo::internal::PrepareToSerialize<SmallStructPtr>(small_struct,
596 &context); 586 &context);
597 587
598 mojo::internal::FixedBufferForTesting buf(size); 588 mojo::internal::FixedBufferForTesting buf(size);
599 internal::SmallStruct_Data* data = nullptr; 589 internal::SmallStruct_Data* data = nullptr;
600 mojo::internal::Serialize<SmallStructPtr>(small_struct, &buf, &data, 590 mojo::internal::Serialize<SmallStructPtr>(small_struct, &buf, &data,
601 &context); 591 &context);
602 592
603 data->EncodePointers();
604 593
605 void* raw_buf = buf.Leak(); 594 void* raw_buf = buf.Leak();
606 mojo::internal::ValidationContext validation_context( 595 mojo::internal::ValidationContext validation_context(
607 data, static_cast<uint32_t>(size), 0); 596 data, static_cast<uint32_t>(size), 0);
608 EXPECT_TRUE(internal::SmallStruct_Data::Validate( 597 EXPECT_TRUE(internal::SmallStruct_Data::Validate(
609 raw_buf, &validation_context)); 598 raw_buf, &validation_context));
610 free(raw_buf); 599 free(raw_buf);
611 } 600 }
612 601
613 // Validation test of a struct union fails due to unknown union tag. 602 // Validation test of a struct union fails due to unknown union tag.
614 TEST(UnionTest, Validation_PodUnionInStruct_Failure) { 603 TEST(UnionTest, Validation_PodUnionInStruct_Failure) {
615 SmallStructPtr small_struct(SmallStruct::New()); 604 SmallStructPtr small_struct(SmallStruct::New());
616 small_struct->pod_union = PodUnion::New(); 605 small_struct->pod_union = PodUnion::New();
617 small_struct->pod_union->set_f_int32(10); 606 small_struct->pod_union->set_f_int32(10);
618 607
619 mojo::internal::SerializationContext context; 608 mojo::internal::SerializationContext context;
620 size_t size = mojo::internal::PrepareToSerialize<SmallStructPtr>(small_struct, 609 size_t size = mojo::internal::PrepareToSerialize<SmallStructPtr>(small_struct,
621 &context); 610 &context);
622 611
623 mojo::internal::FixedBufferForTesting buf(size); 612 mojo::internal::FixedBufferForTesting buf(size);
624 internal::SmallStruct_Data* data = nullptr; 613 internal::SmallStruct_Data* data = nullptr;
625 mojo::internal::Serialize<SmallStructPtr>(small_struct, &buf, &data, 614 mojo::internal::Serialize<SmallStructPtr>(small_struct, &buf, &data,
626 &context); 615 &context);
627 data->pod_union.tag = static_cast<internal::PodUnion_Data::PodUnion_Tag>(100); 616 data->pod_union.tag = static_cast<internal::PodUnion_Data::PodUnion_Tag>(100);
628 617
629 data->EncodePointers();
630
631 void* raw_buf = buf.Leak(); 618 void* raw_buf = buf.Leak();
632 mojo::internal::ValidationContext validation_context( 619 mojo::internal::ValidationContext validation_context(
633 data, static_cast<uint32_t>(size), 0); 620 data, static_cast<uint32_t>(size), 0);
634 EXPECT_FALSE(internal::SmallStruct_Data::Validate( 621 EXPECT_FALSE(internal::SmallStruct_Data::Validate(
635 raw_buf, &validation_context)); 622 raw_buf, &validation_context));
636 free(raw_buf); 623 free(raw_buf);
637 } 624 }
638 625
639 // Validation fails due to non-nullable null union in struct. 626 // Validation fails due to non-nullable null union in struct.
640 TEST(UnionTest, Validation_NullUnion_Failure) { 627 TEST(UnionTest, Validation_NullUnion_Failure) {
(...skipping 22 matching lines...) Expand all
663 650
664 mojo::internal::SerializationContext context; 651 mojo::internal::SerializationContext context;
665 size_t size = mojo::internal::PrepareToSerialize<SmallStructPtr>(small_struct, 652 size_t size = mojo::internal::PrepareToSerialize<SmallStructPtr>(small_struct,
666 &context); 653 &context);
667 654
668 mojo::internal::FixedBufferForTesting buf(size); 655 mojo::internal::FixedBufferForTesting buf(size);
669 internal::SmallStruct_Data* data = nullptr; 656 internal::SmallStruct_Data* data = nullptr;
670 mojo::internal::Serialize<SmallStructPtr>(small_struct, &buf, &data, 657 mojo::internal::Serialize<SmallStructPtr>(small_struct, &buf, &data,
671 &context); 658 &context);
672 659
673 data->EncodePointers();
674
675 void* raw_buf = buf.Leak(); 660 void* raw_buf = buf.Leak();
676 mojo::internal::ValidationContext validation_context( 661 mojo::internal::ValidationContext validation_context(
677 data, static_cast<uint32_t>(size), 0); 662 data, static_cast<uint32_t>(size), 0);
678 EXPECT_TRUE(internal::SmallStruct_Data::Validate( 663 EXPECT_TRUE(internal::SmallStruct_Data::Validate(
679 raw_buf, &validation_context)); 664 raw_buf, &validation_context));
680 free(raw_buf); 665 free(raw_buf);
681 } 666 }
682 667
683 // TODO(azani): Move back in map_unittest.cc when possible. 668 // TODO(azani): Move back in map_unittest.cc when possible.
684 // Map Tests 669 // Map Tests
(...skipping 17 matching lines...) Expand all
702 687
703 map["one"]->set_f_int8(8); 688 map["one"]->set_f_int8(8);
704 map["two"]->set_f_int16(16); 689 map["two"]->set_f_int16(16);
705 690
706 mojo::internal::SerializationContext context; 691 mojo::internal::SerializationContext context;
707 size_t size = mojo::internal::PrepareToSerialize<Map<String, PodUnionPtr>>( 692 size_t size = mojo::internal::PrepareToSerialize<Map<String, PodUnionPtr>>(
708 map, &context); 693 map, &context);
709 EXPECT_EQ(120U, size); 694 EXPECT_EQ(120U, size);
710 695
711 mojo::internal::FixedBufferForTesting buf(size); 696 mojo::internal::FixedBufferForTesting buf(size);
712 mojo::internal::Map_Data<mojo::internal::String_Data*, 697 typename mojo::internal::MojomTypeTraits<Map<String, PodUnionPtr>>::Data*
713 internal::PodUnion_Data>* data; 698 data;
714 mojo::internal::ContainerValidateParams validate_params( 699 mojo::internal::ContainerValidateParams validate_params(
715 new mojo::internal::ContainerValidateParams(0, false, nullptr), 700 new mojo::internal::ContainerValidateParams(0, false, nullptr),
716 new mojo::internal::ContainerValidateParams(0, false, nullptr)); 701 new mojo::internal::ContainerValidateParams(0, false, nullptr));
717 mojo::internal::Serialize<Map<String, PodUnionPtr>>( 702 mojo::internal::Serialize<Map<String, PodUnionPtr>>(
718 map, &buf, &data, &validate_params, &context); 703 map, &buf, &data, &validate_params, &context);
719 704
720 Map<String, PodUnionPtr> map2; 705 Map<String, PodUnionPtr> map2;
721 mojo::internal::Deserialize<Map<String, PodUnionPtr>>(data, &map2, &context); 706 mojo::internal::Deserialize<Map<String, PodUnionPtr>>(data, &map2, &context);
722 707
723 EXPECT_EQ(8, map2["one"]->get_f_int8()); 708 EXPECT_EQ(8, map2["one"]->get_f_int8());
724 EXPECT_EQ(16, map2["two"]->get_f_int16()); 709 EXPECT_EQ(16, map2["two"]->get_f_int16());
725 } 710 }
726 711
727 TEST(UnionTest, PodUnionInMapSerializationWithNull) { 712 TEST(UnionTest, PodUnionInMapSerializationWithNull) {
728 Map<String, PodUnionPtr> map; 713 Map<String, PodUnionPtr> map;
729 map.insert("one", PodUnion::New()); 714 map.insert("one", PodUnion::New());
730 map.insert("two", nullptr); 715 map.insert("two", nullptr);
731 716
732 map["one"]->set_f_int8(8); 717 map["one"]->set_f_int8(8);
733 718
734 mojo::internal::SerializationContext context; 719 mojo::internal::SerializationContext context;
735 size_t size = mojo::internal::PrepareToSerialize<Map<String, PodUnionPtr>>( 720 size_t size = mojo::internal::PrepareToSerialize<Map<String, PodUnionPtr>>(
736 map, &context); 721 map, &context);
737 EXPECT_EQ(120U, size); 722 EXPECT_EQ(120U, size);
738 723
739 mojo::internal::FixedBufferForTesting buf(size); 724 mojo::internal::FixedBufferForTesting buf(size);
740 mojo::internal::Map_Data<mojo::internal::String_Data*, 725 typename mojo::internal::MojomTypeTraits<Map<String, PodUnionPtr>>::Data*
741 internal::PodUnion_Data>* data; 726 data;
742 mojo::internal::ContainerValidateParams validate_params( 727 mojo::internal::ContainerValidateParams validate_params(
743 new mojo::internal::ContainerValidateParams(0, false, nullptr), 728 new mojo::internal::ContainerValidateParams(0, false, nullptr),
744 new mojo::internal::ContainerValidateParams(0, true, nullptr)); 729 new mojo::internal::ContainerValidateParams(0, true, nullptr));
745 mojo::internal::Serialize<Map<String, PodUnionPtr>>( 730 mojo::internal::Serialize<Map<String, PodUnionPtr>>(
746 map, &buf, &data, &validate_params, &context); 731 map, &buf, &data, &validate_params, &context);
747 732
748 Map<String, PodUnionPtr> map2; 733 Map<String, PodUnionPtr> map2;
749 mojo::internal::Deserialize<Map<String, PodUnionPtr>>(data, &map2, &context); 734 mojo::internal::Deserialize<Map<String, PodUnionPtr>>(data, &map2, &context);
750 735
751 EXPECT_EQ(8, map2["one"]->get_f_int8()); 736 EXPECT_EQ(8, map2["one"]->get_f_int8());
(...skipping 18 matching lines...) Expand all
770 obj->set_f_dummy(std::move(dummy)); 755 obj->set_f_dummy(std::move(dummy));
771 756
772 size_t size = 757 size_t size =
773 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr); 758 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr);
774 EXPECT_EQ(32U, size); 759 EXPECT_EQ(32U, size);
775 760
776 mojo::internal::FixedBufferForTesting buf(size); 761 mojo::internal::FixedBufferForTesting buf(size);
777 internal::ObjectUnion_Data* data = nullptr; 762 internal::ObjectUnion_Data* data = nullptr;
778 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr); 763 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr);
779 764
780 data->EncodePointers();
781 data->DecodePointers();
782
783 ObjectUnionPtr obj2; 765 ObjectUnionPtr obj2;
784 mojo::internal::Deserialize<ObjectUnionPtr>(data, &obj2, nullptr); 766 mojo::internal::Deserialize<ObjectUnionPtr>(data, &obj2, nullptr);
785 EXPECT_EQ(8, obj2->get_f_dummy()->f_int8); 767 EXPECT_EQ(8, obj2->get_f_dummy()->f_int8);
786 } 768 }
787 769
788 TEST(UnionTest, StructInUnionValidation) { 770 TEST(UnionTest, StructInUnionValidation) {
789 DummyStructPtr dummy(DummyStruct::New()); 771 DummyStructPtr dummy(DummyStruct::New());
790 dummy->f_int8 = 8; 772 dummy->f_int8 = 8;
791 773
792 ObjectUnionPtr obj(ObjectUnion::New()); 774 ObjectUnionPtr obj(ObjectUnion::New());
793 obj->set_f_dummy(std::move(dummy)); 775 obj->set_f_dummy(std::move(dummy));
794 776
795 size_t size = 777 size_t size =
796 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr); 778 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr);
797 779
798 mojo::internal::FixedBufferForTesting buf(size); 780 mojo::internal::FixedBufferForTesting buf(size);
799 internal::ObjectUnion_Data* data = nullptr; 781 internal::ObjectUnion_Data* data = nullptr;
800 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr); 782 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr);
801 783
802 data->EncodePointers();
803
804 void* raw_buf = buf.Leak(); 784 void* raw_buf = buf.Leak();
805 mojo::internal::ValidationContext validation_context( 785 mojo::internal::ValidationContext validation_context(
806 data, static_cast<uint32_t>(size), 0); 786 data, static_cast<uint32_t>(size), 0);
807 EXPECT_TRUE(internal::ObjectUnion_Data::Validate( 787 EXPECT_TRUE(internal::ObjectUnion_Data::Validate(
808 raw_buf, &validation_context, false)); 788 raw_buf, &validation_context, false));
809 free(raw_buf); 789 free(raw_buf);
810 } 790 }
811 791
812 TEST(UnionTest, StructInUnionValidationNonNullable) { 792 TEST(UnionTest, StructInUnionValidationNonNullable) {
813 mojo::internal::SerializationWarningObserverForTesting suppress_warning; 793 mojo::internal::SerializationWarningObserverForTesting suppress_warning;
814 794
815 DummyStructPtr dummy(nullptr); 795 DummyStructPtr dummy(nullptr);
816 796
817 ObjectUnionPtr obj(ObjectUnion::New()); 797 ObjectUnionPtr obj(ObjectUnion::New());
818 obj->set_f_dummy(std::move(dummy)); 798 obj->set_f_dummy(std::move(dummy));
819 799
820 size_t size = 800 size_t size =
821 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr); 801 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr);
822 802
823 mojo::internal::FixedBufferForTesting buf(size); 803 mojo::internal::FixedBufferForTesting buf(size);
824 internal::ObjectUnion_Data* data = nullptr; 804 internal::ObjectUnion_Data* data = nullptr;
825 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr); 805 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr);
826 data->EncodePointers();
827 806
828 void* raw_buf = buf.Leak(); 807 void* raw_buf = buf.Leak();
829 mojo::internal::ValidationContext validation_context( 808 mojo::internal::ValidationContext validation_context(
830 data, static_cast<uint32_t>(size), 0); 809 data, static_cast<uint32_t>(size), 0);
831 EXPECT_FALSE(internal::ObjectUnion_Data::Validate( 810 EXPECT_FALSE(internal::ObjectUnion_Data::Validate(
832 raw_buf, &validation_context, false)); 811 raw_buf, &validation_context, false));
833 free(raw_buf); 812 free(raw_buf);
834 } 813 }
835 814
836 TEST(UnionTest, StructInUnionValidationNullable) { 815 TEST(UnionTest, StructInUnionValidationNullable) {
837 DummyStructPtr dummy(nullptr); 816 DummyStructPtr dummy(nullptr);
838 817
839 ObjectUnionPtr obj(ObjectUnion::New()); 818 ObjectUnionPtr obj(ObjectUnion::New());
840 obj->set_f_nullable(std::move(dummy)); 819 obj->set_f_nullable(std::move(dummy));
841 820
842 size_t size = 821 size_t size =
843 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr); 822 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr);
844 823
845 mojo::internal::FixedBufferForTesting buf(size); 824 mojo::internal::FixedBufferForTesting buf(size);
846 internal::ObjectUnion_Data* data = nullptr; 825 internal::ObjectUnion_Data* data = nullptr;
847 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr); 826 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr);
848 827
849 data->EncodePointers();
850
851 void* raw_buf = buf.Leak(); 828 void* raw_buf = buf.Leak();
852 mojo::internal::ValidationContext validation_context( 829 mojo::internal::ValidationContext validation_context(
853 data, static_cast<uint32_t>(size), 0); 830 data, static_cast<uint32_t>(size), 0);
854 EXPECT_TRUE(internal::ObjectUnion_Data::Validate( 831 EXPECT_TRUE(internal::ObjectUnion_Data::Validate(
855 raw_buf, &validation_context, false)); 832 raw_buf, &validation_context, false));
856 free(raw_buf); 833 free(raw_buf);
857 } 834 }
858 835
859 TEST(UnionTest, ArrayInUnionGetterSetter) { 836 TEST(UnionTest, ArrayInUnionGetterSetter) {
860 Array<int8_t> array(2); 837 Array<int8_t> array(2);
(...skipping 16 matching lines...) Expand all
877 obj->set_f_array_int8(std::move(array)); 854 obj->set_f_array_int8(std::move(array));
878 855
879 size_t size = 856 size_t size =
880 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr); 857 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr);
881 EXPECT_EQ(32U, size); 858 EXPECT_EQ(32U, size);
882 859
883 mojo::internal::FixedBufferForTesting buf(size); 860 mojo::internal::FixedBufferForTesting buf(size);
884 internal::ObjectUnion_Data* data = nullptr; 861 internal::ObjectUnion_Data* data = nullptr;
885 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr); 862 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr);
886 863
887 data->EncodePointers();
888 data->DecodePointers();
889
890 ObjectUnionPtr obj2; 864 ObjectUnionPtr obj2;
891 mojo::internal::Deserialize<ObjectUnionPtr>(data, &obj2, nullptr); 865 mojo::internal::Deserialize<ObjectUnionPtr>(data, &obj2, nullptr);
892 866
893 EXPECT_EQ(8, obj2->get_f_array_int8()[0]); 867 EXPECT_EQ(8, obj2->get_f_array_int8()[0]);
894 EXPECT_EQ(9, obj2->get_f_array_int8()[1]); 868 EXPECT_EQ(9, obj2->get_f_array_int8()[1]);
895 } 869 }
896 870
897 TEST(UnionTest, ArrayInUnionValidation) { 871 TEST(UnionTest, ArrayInUnionValidation) {
898 Array<int8_t> array(2); 872 Array<int8_t> array(2);
899 array[0] = 8; 873 array[0] = 8;
900 array[1] = 9; 874 array[1] = 9;
901 875
902 ObjectUnionPtr obj(ObjectUnion::New()); 876 ObjectUnionPtr obj(ObjectUnion::New());
903 obj->set_f_array_int8(std::move(array)); 877 obj->set_f_array_int8(std::move(array));
904 878
905 size_t size = 879 size_t size =
906 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr); 880 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr);
907 mojo::internal::FixedBufferForTesting buf(size); 881 mojo::internal::FixedBufferForTesting buf(size);
908 internal::ObjectUnion_Data* data = nullptr; 882 internal::ObjectUnion_Data* data = nullptr;
909 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr); 883 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr);
910 884
911 data->EncodePointers();
912
913 void* raw_buf = buf.Leak(); 885 void* raw_buf = buf.Leak();
914 mojo::internal::ValidationContext validation_context( 886 mojo::internal::ValidationContext validation_context(
915 data, static_cast<uint32_t>(size), 0); 887 data, static_cast<uint32_t>(size), 0);
916 888
917 EXPECT_TRUE(internal::ObjectUnion_Data::Validate( 889 EXPECT_TRUE(internal::ObjectUnion_Data::Validate(
918 raw_buf, &validation_context, false)); 890 raw_buf, &validation_context, false));
919 free(raw_buf); 891 free(raw_buf);
920 } 892 }
921 893
922 TEST(UnionTest, MapInUnionGetterSetter) { 894 TEST(UnionTest, MapInUnionGetterSetter) {
(...skipping 18 matching lines...) Expand all
941 913
942 mojo::internal::SerializationContext context; 914 mojo::internal::SerializationContext context;
943 size_t size = 915 size_t size =
944 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, &context); 916 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, &context);
945 EXPECT_EQ(112U, size); 917 EXPECT_EQ(112U, size);
946 918
947 mojo::internal::FixedBufferForTesting buf(size); 919 mojo::internal::FixedBufferForTesting buf(size);
948 internal::ObjectUnion_Data* data = nullptr; 920 internal::ObjectUnion_Data* data = nullptr;
949 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, &context); 921 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, &context);
950 922
951 data->EncodePointers();
952 data->DecodePointers();
953
954 ObjectUnionPtr obj2; 923 ObjectUnionPtr obj2;
955 mojo::internal::Deserialize<ObjectUnionPtr>(data, &obj2, &context); 924 mojo::internal::Deserialize<ObjectUnionPtr>(data, &obj2, &context);
956 925
957 EXPECT_EQ(1, obj2->get_f_map_int8()["one"]); 926 EXPECT_EQ(1, obj2->get_f_map_int8()["one"]);
958 EXPECT_EQ(2, obj2->get_f_map_int8()["two"]); 927 EXPECT_EQ(2, obj2->get_f_map_int8()["two"]);
959 } 928 }
960 929
961 TEST(UnionTest, MapInUnionValidation) { 930 TEST(UnionTest, MapInUnionValidation) {
962 Map<String, int8_t> map; 931 Map<String, int8_t> map;
963 map.insert("one", 1); 932 map.insert("one", 1);
964 map.insert("two", 2); 933 map.insert("two", 2);
965 934
966 ObjectUnionPtr obj(ObjectUnion::New()); 935 ObjectUnionPtr obj(ObjectUnion::New());
967 obj->set_f_map_int8(std::move(map)); 936 obj->set_f_map_int8(std::move(map));
968 937
969 mojo::internal::SerializationContext context; 938 mojo::internal::SerializationContext context;
970 size_t size = 939 size_t size =
971 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, &context); 940 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, &context);
972 EXPECT_EQ(112U, size); 941 EXPECT_EQ(112U, size);
973 942
974 mojo::internal::FixedBufferForTesting buf(size); 943 mojo::internal::FixedBufferForTesting buf(size);
975 internal::ObjectUnion_Data* data = nullptr; 944 internal::ObjectUnion_Data* data = nullptr;
976 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, &context); 945 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, &context);
977 946
978 data->EncodePointers();
979
980 void* raw_buf = buf.Leak(); 947 void* raw_buf = buf.Leak();
981 mojo::internal::ValidationContext validation_context( 948 mojo::internal::ValidationContext validation_context(
982 data, static_cast<uint32_t>(size), 0); 949 data, static_cast<uint32_t>(size), 0);
983 950
984 EXPECT_TRUE(internal::ObjectUnion_Data::Validate( 951 EXPECT_TRUE(internal::ObjectUnion_Data::Validate(
985 raw_buf, &validation_context, false)); 952 raw_buf, &validation_context, false));
986 free(raw_buf); 953 free(raw_buf);
987 } 954 }
988 955
989 TEST(UnionTest, UnionInUnionGetterSetter) { 956 TEST(UnionTest, UnionInUnionGetterSetter) {
(...skipping 14 matching lines...) Expand all
1004 obj->set_f_pod_union(std::move(pod)); 971 obj->set_f_pod_union(std::move(pod));
1005 972
1006 size_t size = 973 size_t size =
1007 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr); 974 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr);
1008 EXPECT_EQ(32U, size); 975 EXPECT_EQ(32U, size);
1009 976
1010 mojo::internal::FixedBufferForTesting buf(size); 977 mojo::internal::FixedBufferForTesting buf(size);
1011 internal::ObjectUnion_Data* data = nullptr; 978 internal::ObjectUnion_Data* data = nullptr;
1012 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr); 979 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr);
1013 980
1014 data->EncodePointers();
1015 data->DecodePointers();
1016
1017 ObjectUnionPtr obj2; 981 ObjectUnionPtr obj2;
1018 mojo::internal::Deserialize<ObjectUnionPtr>(data, &obj2, nullptr); 982 mojo::internal::Deserialize<ObjectUnionPtr>(data, &obj2, nullptr);
1019 EXPECT_EQ(10, obj2->get_f_pod_union()->get_f_int8()); 983 EXPECT_EQ(10, obj2->get_f_pod_union()->get_f_int8());
1020 } 984 }
1021 985
1022 TEST(UnionTest, UnionInUnionValidation) { 986 TEST(UnionTest, UnionInUnionValidation) {
1023 PodUnionPtr pod(PodUnion::New()); 987 PodUnionPtr pod(PodUnion::New());
1024 pod->set_f_int8(10); 988 pod->set_f_int8(10);
1025 989
1026 ObjectUnionPtr obj(ObjectUnion::New()); 990 ObjectUnionPtr obj(ObjectUnion::New());
1027 obj->set_f_pod_union(std::move(pod)); 991 obj->set_f_pod_union(std::move(pod));
1028 992
1029 size_t size = 993 size_t size =
1030 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr); 994 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr);
1031 EXPECT_EQ(32U, size); 995 EXPECT_EQ(32U, size);
1032 996
1033 mojo::internal::FixedBufferForTesting buf(size); 997 mojo::internal::FixedBufferForTesting buf(size);
1034 internal::ObjectUnion_Data* data = nullptr; 998 internal::ObjectUnion_Data* data = nullptr;
1035 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr); 999 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr);
1036 1000
1037 data->EncodePointers();
1038
1039 void* raw_buf = buf.Leak(); 1001 void* raw_buf = buf.Leak();
1040 mojo::internal::ValidationContext validation_context( 1002 mojo::internal::ValidationContext validation_context(
1041 data, static_cast<uint32_t>(size), 0); 1003 data, static_cast<uint32_t>(size), 0);
1042 EXPECT_TRUE(internal::ObjectUnion_Data::Validate( 1004 EXPECT_TRUE(internal::ObjectUnion_Data::Validate(
1043 raw_buf, &validation_context, false)); 1005 raw_buf, &validation_context, false));
1044 free(raw_buf); 1006 free(raw_buf);
1045 } 1007 }
1046 1008
1047 TEST(UnionTest, UnionInUnionValidationNonNullable) { 1009 TEST(UnionTest, UnionInUnionValidationNonNullable) {
1048 mojo::internal::SerializationWarningObserverForTesting suppress_warning; 1010 mojo::internal::SerializationWarningObserverForTesting suppress_warning;
1049 1011
1050 PodUnionPtr pod(nullptr); 1012 PodUnionPtr pod(nullptr);
1051 1013
1052 ObjectUnionPtr obj(ObjectUnion::New()); 1014 ObjectUnionPtr obj(ObjectUnion::New());
1053 obj->set_f_pod_union(std::move(pod)); 1015 obj->set_f_pod_union(std::move(pod));
1054 1016
1055 size_t size = 1017 size_t size =
1056 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr); 1018 mojo::internal::PrepareToSerialize<ObjectUnionPtr>(obj, false, nullptr);
1057 1019
1058 mojo::internal::FixedBufferForTesting buf(size); 1020 mojo::internal::FixedBufferForTesting buf(size);
1059 internal::ObjectUnion_Data* data = nullptr; 1021 internal::ObjectUnion_Data* data = nullptr;
1060 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr); 1022 mojo::internal::Serialize<ObjectUnionPtr>(obj, &buf, &data, false, nullptr);
1061 data->EncodePointers();
1062 1023
1063 void* raw_buf = buf.Leak(); 1024 void* raw_buf = buf.Leak();
1064 mojo::internal::ValidationContext validation_context( 1025 mojo::internal::ValidationContext validation_context(
1065 data, static_cast<uint32_t>(size), 0); 1026 data, static_cast<uint32_t>(size), 0);
1066 EXPECT_FALSE(internal::ObjectUnion_Data::Validate( 1027 EXPECT_FALSE(internal::ObjectUnion_Data::Validate(
1067 raw_buf, &validation_context, false)); 1028 raw_buf, &validation_context, false));
1068 free(raw_buf); 1029 free(raw_buf);
1069 } 1030 }
1070 1031
1071 TEST(UnionTest, HandleInUnionGetterSetter) { 1032 TEST(UnionTest, HandleInUnionGetterSetter) {
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
1256 1217
1257 PodUnionPtr pod(PodUnion::New()); 1218 PodUnionPtr pod(PodUnion::New());
1258 pod->set_f_int16(16); 1219 pod->set_f_int16(16);
1259 1220
1260 ptr->Echo(std::move(pod), base::Bind(&ExpectInt16, 16)); 1221 ptr->Echo(std::move(pod), base::Bind(&ExpectInt16, 16));
1261 run_loop.RunUntilIdle(); 1222 run_loop.RunUntilIdle();
1262 } 1223 }
1263 1224
1264 } // namespace test 1225 } // namespace test
1265 } // namespace mojo 1226 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/tests/struct_unittest.cc ('k') | mojo/public/cpp/bindings/tests/wtf_types_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698