| 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 <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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |