Skip to content

Commit

Permalink
Add a unittest locking down presence behavior for proto3 extensions
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 613016814
  • Loading branch information
mkruskal-google authored and deannagarcia committed Jun 20, 2024
1 parent 5447386 commit 499a6ba
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/google/protobuf/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -828,6 +828,7 @@ filegroup(
"unittest_proto3_arena.proto",
"unittest_proto3_arena_lite.proto",
"unittest_proto3_bad_macros.proto",
"unittest_proto3_extensions.proto",
"unittest_proto3_lite.proto",
"unittest_proto3_optional.proto",
"unittest_retention.proto",
Expand Down
14 changes: 14 additions & 0 deletions src/google/protobuf/extension_set_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
#include "google/protobuf/unittest.pb.h"
#include "google/protobuf/unittest.pb.h"
#include "google/protobuf/unittest_mset.pb.h"
#include "google/protobuf/unittest_proto3_extensions.pb.h"
#include "google/protobuf/wire_format.h"
#include "google/protobuf/wire_format_lite.h"

Expand Down Expand Up @@ -1393,6 +1394,19 @@ TEST(ExtensionSetTest, Proto3PackedDynamicExtensions) {
EXPECT_EQ(reserialized_options, "\xca\xb5\x18\x01\x01");
}

TEST(ExtensionSetTest, Proto3ExtensionPresenceSingular) {
using protobuf_unittest::Proto3FileExtensions;
FileDescriptorProto file;

EXPECT_FALSE(file.options().HasExtension(Proto3FileExtensions::singular_int));
EXPECT_EQ(file.options().GetExtension(Proto3FileExtensions::singular_int), 0);

file.mutable_options()->SetExtension(Proto3FileExtensions::singular_int, 1);

EXPECT_TRUE(file.options().HasExtension(Proto3FileExtensions::singular_int));
EXPECT_EQ(file.options().GetExtension(Proto3FileExtensions::singular_int), 1);
}

TEST(ExtensionSetTest, BoolExtension) {
unittest::TestAllExtensions msg;
uint8_t wire_bytes[2] = {13 * 8, 42 /* out of bounds payload for bool */};
Expand Down
13 changes: 13 additions & 0 deletions src/google/protobuf/unittest_proto3_extensions.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
syntax = "proto3";

package protobuf_unittest;

import "google/protobuf/descriptor.proto";

// For testing proto3 extension behaviors.
message Proto3FileExtensions {
extend google.protobuf.FileOptions {
int32 singular_int = 1001;
repeated int32 repeated_int = 1002;
}
}

0 comments on commit 499a6ba

Please sign in to comment.