Loading system/gd/packet/parser/fields/vector_field.cc +9 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,15 @@ bool VectorField::GenBuilderParameter(std::ostream& s) const { return true; } bool VectorField::GenBuilderMember(std::ostream& s) const { if (type_def_ != nullptr) { s << "const std::vector<" << type_def_->GetTypeName() << "> " << GetName(); } else { s << "const std::vector<" << util::GetTypeForSize(element_size_) << "> " << GetName(); } return true; } bool VectorField::HasParameterValidator() const { // Does not have parameter validator yet. // TODO: See comment in GenParameterValidator Loading system/gd/packet/parser/fields/vector_field.h +2 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ class VectorField : public PacketField { virtual bool GenBuilderParameter(std::ostream& s) const override; virtual bool GenBuilderMember(std::ostream& s) const override; virtual bool HasParameterValidator() const override; virtual void GenParameterValidator(std::ostream& s) const override; Loading system/gd/packet/parser/test/generated_packet_test.cc +31 −12 Original line number Diff line number Diff line Loading @@ -448,6 +448,10 @@ TEST(GeneratedPacketTest, testFixedArrayEnum) { auto packet = FixedArrayEnumBuilder::Create(fixed_array); ASSERT_EQ(fixed_array_enum.size(), packet->size()); // Verify that the packet is independent from the array. std::array<ForArrays, 5> copy_array(fixed_array); fixed_array[1] = ForArrays::ONE; std::shared_ptr<std::vector<uint8_t>> packet_bytes = std::make_shared<std::vector<uint8_t>>(); BitInserter it(*packet_bytes); packet->Serialize(it); Loading @@ -461,9 +465,9 @@ TEST(GeneratedPacketTest, testFixedArrayEnum) { auto view = FixedArrayEnumView::Create(packet_bytes_view); ASSERT_TRUE(view.IsValid()); auto array = view.GetEnumArray(); ASSERT_EQ(fixed_array.size(), array.size()); for (size_t i = 0; i < fixed_array.size(); i++) { ASSERT_EQ(array[i], fixed_array[i]); ASSERT_EQ(copy_array.size(), array.size()); for (size_t i = 0; i < copy_array.size(); i++) { ASSERT_EQ(array[i], copy_array[i]); } } Loading @@ -490,6 +494,10 @@ TEST(GeneratedPacketTest, testSizedArrayEnum) { auto packet = SizedArrayEnumBuilder::Create(sized_array); ASSERT_EQ(sized_array_enum.size(), packet->size()); // Copy the original vector and modify it to make sure the packet is independent. std::vector<ForArrays> copy_array(sized_array); sized_array[1] = ForArrays::ONE; std::shared_ptr<std::vector<uint8_t>> packet_bytes = std::make_shared<std::vector<uint8_t>>(); BitInserter it(*packet_bytes); packet->Serialize(it); Loading @@ -503,9 +511,9 @@ TEST(GeneratedPacketTest, testSizedArrayEnum) { auto view = SizedArrayEnumView::Create(packet_bytes_view); ASSERT_TRUE(view.IsValid()); auto array = view.GetEnumArray(); ASSERT_EQ(sized_array.size(), array.size()); for (size_t i = 0; i < sized_array.size(); i++) { ASSERT_EQ(array[i], sized_array[i]); ASSERT_EQ(copy_array.size(), array.size()); for (size_t i = 0; i < copy_array.size(); i++) { ASSERT_EQ(array[i], copy_array[i]); } } Loading Loading @@ -731,6 +739,10 @@ TEST(GeneratedPacketTest, testOneStruct) { auto packet = OneStructBuilder::Create(trn); ASSERT_EQ(one_struct.size(), packet->size()); // Copy the original struct, then modify it to verify independence from the packet. TwoRelatedNumbers copy_trn(trn); trn.id_ = 2; std::shared_ptr<std::vector<uint8_t>> packet_bytes = std::make_shared<std::vector<uint8_t>>(); BitInserter it(*packet_bytes); packet->Serialize(it); Loading @@ -744,8 +756,8 @@ TEST(GeneratedPacketTest, testOneStruct) { auto view = OneStructView::Create(packet_bytes_view); ASSERT_TRUE(view.IsValid()); auto one = view.GetOne(); ASSERT_EQ(one.id_, trn.id_); ASSERT_EQ(one.count_, trn.count_); ASSERT_EQ(one.id_, copy_trn.id_); ASSERT_EQ(one.count_, copy_trn.count_); } vector<uint8_t> two_structs{ Loading Loading @@ -800,7 +812,14 @@ TEST(GeneratedPacketTest, testArrayOfStruct) { count_array.push_back(trn); } // Make a copy std::vector<TwoRelatedNumbers> copy_array(count_array); auto packet = ArrayOfStructBuilder::Create(count_array); // Change the original vector to make sure a copy was made. count_array[0].id_ = count_array[0].id_ + 1; ASSERT_EQ(array_of_struct.size(), packet->size()); std::shared_ptr<std::vector<uint8_t>> packet_bytes = std::make_shared<std::vector<uint8_t>>(); Loading @@ -816,10 +835,10 @@ TEST(GeneratedPacketTest, testArrayOfStruct) { auto view = ArrayOfStructView::Create(packet_bytes_view); ASSERT_TRUE(view.IsValid()); auto array = view.GetArray(); ASSERT_EQ(count_array.size(), array.size()); for (size_t i = 0; i < count_array.size(); i++) { ASSERT_EQ(array[i].id_, count_array[i].id_); ASSERT_EQ(array[i].count_, count_array[i].count_); ASSERT_EQ(copy_array.size(), array.size()); for (size_t i = 0; i < copy_array.size(); i++) { ASSERT_EQ(array[i].id_, copy_array[i].id_); ASSERT_EQ(array[i].count_, copy_array[i].count_); } } Loading Loading
system/gd/packet/parser/fields/vector_field.cc +9 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,15 @@ bool VectorField::GenBuilderParameter(std::ostream& s) const { return true; } bool VectorField::GenBuilderMember(std::ostream& s) const { if (type_def_ != nullptr) { s << "const std::vector<" << type_def_->GetTypeName() << "> " << GetName(); } else { s << "const std::vector<" << util::GetTypeForSize(element_size_) << "> " << GetName(); } return true; } bool VectorField::HasParameterValidator() const { // Does not have parameter validator yet. // TODO: See comment in GenParameterValidator Loading
system/gd/packet/parser/fields/vector_field.h +2 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ class VectorField : public PacketField { virtual bool GenBuilderParameter(std::ostream& s) const override; virtual bool GenBuilderMember(std::ostream& s) const override; virtual bool HasParameterValidator() const override; virtual void GenParameterValidator(std::ostream& s) const override; Loading
system/gd/packet/parser/test/generated_packet_test.cc +31 −12 Original line number Diff line number Diff line Loading @@ -448,6 +448,10 @@ TEST(GeneratedPacketTest, testFixedArrayEnum) { auto packet = FixedArrayEnumBuilder::Create(fixed_array); ASSERT_EQ(fixed_array_enum.size(), packet->size()); // Verify that the packet is independent from the array. std::array<ForArrays, 5> copy_array(fixed_array); fixed_array[1] = ForArrays::ONE; std::shared_ptr<std::vector<uint8_t>> packet_bytes = std::make_shared<std::vector<uint8_t>>(); BitInserter it(*packet_bytes); packet->Serialize(it); Loading @@ -461,9 +465,9 @@ TEST(GeneratedPacketTest, testFixedArrayEnum) { auto view = FixedArrayEnumView::Create(packet_bytes_view); ASSERT_TRUE(view.IsValid()); auto array = view.GetEnumArray(); ASSERT_EQ(fixed_array.size(), array.size()); for (size_t i = 0; i < fixed_array.size(); i++) { ASSERT_EQ(array[i], fixed_array[i]); ASSERT_EQ(copy_array.size(), array.size()); for (size_t i = 0; i < copy_array.size(); i++) { ASSERT_EQ(array[i], copy_array[i]); } } Loading @@ -490,6 +494,10 @@ TEST(GeneratedPacketTest, testSizedArrayEnum) { auto packet = SizedArrayEnumBuilder::Create(sized_array); ASSERT_EQ(sized_array_enum.size(), packet->size()); // Copy the original vector and modify it to make sure the packet is independent. std::vector<ForArrays> copy_array(sized_array); sized_array[1] = ForArrays::ONE; std::shared_ptr<std::vector<uint8_t>> packet_bytes = std::make_shared<std::vector<uint8_t>>(); BitInserter it(*packet_bytes); packet->Serialize(it); Loading @@ -503,9 +511,9 @@ TEST(GeneratedPacketTest, testSizedArrayEnum) { auto view = SizedArrayEnumView::Create(packet_bytes_view); ASSERT_TRUE(view.IsValid()); auto array = view.GetEnumArray(); ASSERT_EQ(sized_array.size(), array.size()); for (size_t i = 0; i < sized_array.size(); i++) { ASSERT_EQ(array[i], sized_array[i]); ASSERT_EQ(copy_array.size(), array.size()); for (size_t i = 0; i < copy_array.size(); i++) { ASSERT_EQ(array[i], copy_array[i]); } } Loading Loading @@ -731,6 +739,10 @@ TEST(GeneratedPacketTest, testOneStruct) { auto packet = OneStructBuilder::Create(trn); ASSERT_EQ(one_struct.size(), packet->size()); // Copy the original struct, then modify it to verify independence from the packet. TwoRelatedNumbers copy_trn(trn); trn.id_ = 2; std::shared_ptr<std::vector<uint8_t>> packet_bytes = std::make_shared<std::vector<uint8_t>>(); BitInserter it(*packet_bytes); packet->Serialize(it); Loading @@ -744,8 +756,8 @@ TEST(GeneratedPacketTest, testOneStruct) { auto view = OneStructView::Create(packet_bytes_view); ASSERT_TRUE(view.IsValid()); auto one = view.GetOne(); ASSERT_EQ(one.id_, trn.id_); ASSERT_EQ(one.count_, trn.count_); ASSERT_EQ(one.id_, copy_trn.id_); ASSERT_EQ(one.count_, copy_trn.count_); } vector<uint8_t> two_structs{ Loading Loading @@ -800,7 +812,14 @@ TEST(GeneratedPacketTest, testArrayOfStruct) { count_array.push_back(trn); } // Make a copy std::vector<TwoRelatedNumbers> copy_array(count_array); auto packet = ArrayOfStructBuilder::Create(count_array); // Change the original vector to make sure a copy was made. count_array[0].id_ = count_array[0].id_ + 1; ASSERT_EQ(array_of_struct.size(), packet->size()); std::shared_ptr<std::vector<uint8_t>> packet_bytes = std::make_shared<std::vector<uint8_t>>(); Loading @@ -816,10 +835,10 @@ TEST(GeneratedPacketTest, testArrayOfStruct) { auto view = ArrayOfStructView::Create(packet_bytes_view); ASSERT_TRUE(view.IsValid()); auto array = view.GetArray(); ASSERT_EQ(count_array.size(), array.size()); for (size_t i = 0; i < count_array.size(); i++) { ASSERT_EQ(array[i].id_, count_array[i].id_); ASSERT_EQ(array[i].count_, count_array[i].count_); ASSERT_EQ(copy_array.size(), array.size()); for (size_t i = 0; i < copy_array.size(); i++) { ASSERT_EQ(array[i].id_, copy_array[i].id_); ASSERT_EQ(array[i].count_, copy_array[i].count_); } } Loading