@@ -94,6 +94,37 @@ TEST(DefaultsTest, Check2024) {
9494 FeatureSet::VisibilityFeature::EXPORT_TOP_LEVEL);
9595}
9696
97+ TEST (DefaultsTest, Check2026) {
98+ auto defaults = ReadDefaults (" test_defaults_2026" );
99+ ASSERT_OK (defaults);
100+ ASSERT_EQ (defaults->defaults ().size (), 6 );
101+ ASSERT_EQ (defaults->minimum_edition (), EDITION_2026);
102+ ASSERT_EQ (defaults->maximum_edition (), EDITION_2026);
103+
104+ EXPECT_EQ (defaults->defaults ()[0 ].edition (), EDITION_LEGACY);
105+ EXPECT_EQ (defaults->defaults ()[1 ].edition (), EDITION_PROTO3);
106+ EXPECT_EQ (defaults->defaults ()[2 ].edition (), EDITION_2023);
107+ EXPECT_EQ (defaults->defaults ()[2 ].overridable_features ().field_presence (),
108+ FeatureSet::EXPLICIT);
109+ EXPECT_EQ (defaults->defaults ()[2 ]
110+ .overridable_features ()
111+ .GetExtension (pb::test)
112+ .file_feature (),
113+ pb::VALUE3);
114+ EXPECT_EQ (defaults->defaults ()[3 ].edition (), EDITION_2024);
115+ EXPECT_EQ (
116+ defaults->defaults ()[3 ].overridable_features ().enforce_naming_style (),
117+ FeatureSet::STYLE2024);
118+ EXPECT_EQ (defaults->defaults ()[3 ]
119+ .overridable_features ()
120+ .default_symbol_visibility (),
121+ FeatureSet::VisibilityFeature::EXPORT_TOP_LEVEL);
122+ EXPECT_EQ (defaults->defaults ()[4 ].edition (), EDITION_2026);
123+ EXPECT_EQ (
124+ defaults->defaults ()[4 ].overridable_features ().enforce_proto_limits (),
125+ FeatureSet::ProtoLimitsFeature::PROTO_LIMITS2026);
126+ }
127+
97128TEST (DefaultsTest, CheckFuture) {
98129 auto defaults = ReadDefaults (" test_defaults_future" );
99130 ASSERT_OK (defaults);
@@ -119,6 +150,14 @@ TEST(DefaultsTest, CheckFuture) {
119150 .GetExtension (pb::test)
120151 .file_feature (),
121152 pb::VALUE3);
153+ EXPECT_EQ (defaults->defaults ()[4 ].edition (), EDITION_2026);
154+ EXPECT_EQ (defaults->defaults ()[4 ].overridable_features ().field_presence (),
155+ FeatureSet::EXPLICIT);
156+ EXPECT_EQ (defaults->defaults ()[4 ]
157+ .overridable_features ()
158+ .GetExtension (pb::test)
159+ .file_feature (),
160+ pb::VALUE3);
122161 EXPECT_EQ (defaults->defaults ()[5 ].edition (), EDITION_UNSTABLE);
123162 EXPECT_EQ (defaults->defaults ()[5 ]
124163 .overridable_features ()
@@ -160,6 +199,14 @@ TEST(DefaultsTest, CheckFarFuture) {
160199 .GetExtension (pb::test)
161200 .file_feature (),
162201 pb::VALUE3);
202+ EXPECT_EQ (defaults->defaults ()[4 ].edition (), EDITION_2026);
203+ EXPECT_EQ (defaults->defaults ()[4 ].overridable_features ().field_presence (),
204+ FeatureSet::EXPLICIT);
205+ EXPECT_EQ (defaults->defaults ()[4 ]
206+ .overridable_features ()
207+ .GetExtension (pb::test)
208+ .file_feature (),
209+ pb::VALUE3);
163210 EXPECT_EQ (defaults->defaults ()[5 ].edition (), EDITION_UNSTABLE);
164211 EXPECT_EQ (defaults->defaults ()[5 ]
165212 .overridable_features ()
@@ -314,7 +361,7 @@ TEST_F(OverridableDefaultsTest, Proto3) {
314361TEST_F (OverridableDefaultsTest, Edition2023) {
315362 auto feature_defaults = ReadDefaults (" protobuf_defaults" );
316363 ASSERT_OK (feature_defaults);
317- ASSERT_GE (feature_defaults->defaults ().size (), 4 );
364+ ASSERT_GE (feature_defaults->defaults ().size (), 5 );
318365 auto defaults = feature_defaults->defaults (2 );
319366 ASSERT_EQ (defaults.edition (), EDITION_2023);
320367
@@ -336,7 +383,7 @@ TEST_F(OverridableDefaultsTest, Edition2023) {
336383TEST_F (OverridableDefaultsTest, Edition2024) {
337384 auto feature_defaults = ReadDefaults (" protobuf_defaults" );
338385 ASSERT_OK (feature_defaults);
339- ASSERT_GE (feature_defaults->defaults ().size (), 4 );
386+ ASSERT_GE (feature_defaults->defaults ().size (), 5 );
340387 auto defaults = feature_defaults->defaults (3 );
341388 ASSERT_EQ (defaults.edition (), EDITION_2024);
342389
@@ -364,6 +411,40 @@ TEST_F(OverridableDefaultsTest, Edition2024) {
364411 )pb" ));
365412}
366413
414+ // Lock down that 2026 overridable defaults never change. Once Edition 2026 has
415+ // been released this test should never need to be touched.
416+ TEST_F (OverridableDefaultsTest, Edition2026) {
417+ auto feature_defaults = ReadDefaults (" protobuf_defaults" );
418+ ASSERT_OK (feature_defaults);
419+ ASSERT_GE (feature_defaults->defaults ().size (), 5 );
420+ auto defaults = feature_defaults->defaults (4 );
421+ ASSERT_EQ (defaults.edition (), EDITION_2026);
422+
423+
424+ EXPECT_THAT (defaults.overridable_features (), EqualsProto (R"pb(
425+ field_presence: EXPLICIT
426+ enum_type: OPEN
427+ repeated_field_encoding: PACKED
428+ utf8_validation: VERIFY
429+ message_encoding: LENGTH_PREFIXED
430+ json_format: ALLOW
431+ enforce_naming_style: STYLE2026
432+ default_symbol_visibility: EXPORT_TOP_LEVEL
433+ enforce_proto_limits: PROTO_LIMITS2026
434+ [pb.cpp] {
435+ legacy_closed_enum: false
436+ string_type: VIEW
437+ enum_name_uses_string_view: true
438+ }
439+ [pb.java] {
440+ legacy_closed_enum: false
441+ utf8_validation: DEFAULT
442+ large_enum: false
443+ nest_in_file_class: NO
444+ }
445+ )pb" ));
446+ }
447+
367448} // namespace
368449} // namespace protobuf
369450} // namespace google
0 commit comments