| 84 | |
| 85 | template<typename F> |
| 86 | void testEncode(F&& doEncode) { |
| 87 | std::string target; |
| 88 | size_t writtenCount; |
| 89 | { |
| 90 | google::protobuf::io::StringOutputStream stream(&target); |
| 91 | google::protobuf::io::CodedOutputStream outputStream(&stream, false); |
| 92 | |
| 93 | doEncode(1, &outputStream); |
| 94 | |
| 95 | writtenCount = static_cast<size_t>(outputStream.ByteCount()); |
| 96 | } |
| 97 | |
| 98 | auto byteSize = field.byteSize(1, false, false); |
| 99 | |
| 100 | ASSERT_EQ(writtenCount, byteSize); |
| 101 | |
| 102 | ByteBuffer buffer; |
| 103 | buffer.resize(byteSize); |
| 104 | |
| 105 | auto* bufferEnd = field.write(1, false, false, buffer.begin(), buffer.end()); |
| 106 | |
| 107 | ASSERT_EQ(buffer.end(), bufferEnd); |
| 108 | |
| 109 | ASSERT_EQ(std::string_view(target.data(), writtenCount), buffer.toStringView()); |
| 110 | |
| 111 | if (writtenCount > 0) { |
| 112 | switch (field.getInternalType()) { |
| 113 | case Protobuf::Field::InternalType::Varint: |
| 114 | checkVarintConformance(buffer); |
| 115 | break; |
| 116 | case Protobuf::Field::InternalType::Fixed64: |
| 117 | checkFixed64Conformance(buffer); |
| 118 | break; |
| 119 | case Protobuf::Field::InternalType::Fixed32: |
| 120 | checkFixed32Conformance(buffer); |
| 121 | break; |
| 122 | default: |
| 123 | break; |
| 124 | } |
| 125 | } |
| 126 | } |
| 127 | |
| 128 | template<typename T> |
| 129 | void testField(T fieldValue, |
nothing calls this directly
no test coverage detected