|
|
|
@ -194,6 +194,7 @@ enum ForeignEnum { |
|
|
|
|
FOREIGN_FOO = 4; |
|
|
|
|
FOREIGN_BAR = 5; |
|
|
|
|
FOREIGN_BAZ = 6; |
|
|
|
|
FOREIGN_BAX = 32; // (1 << 32) to generate a 64b bitmask would be incorrect. |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
message TestReservedFields { |
|
|
|
@ -410,12 +411,64 @@ message TestNestedChildExtensionData { |
|
|
|
|
// Required and closed enum fields are considered unknown fields if the value is |
|
|
|
|
// not valid. We need to make sure it functions as expected. |
|
|
|
|
message TestRequiredEnum { |
|
|
|
|
// Required closed enum results in missing required fields. |
|
|
|
|
required ForeignEnum required_enum = 1; |
|
|
|
|
|
|
|
|
|
// A dummy optional field. |
|
|
|
|
optional int32 a = 2; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// TestRequiredEnum + using enum values that won't fit to 64 bitmask. |
|
|
|
|
message TestRequiredEnumNoMask { |
|
|
|
|
enum NestedEnum { |
|
|
|
|
UNSPECIFIED = 0; |
|
|
|
|
FOO = 2; |
|
|
|
|
BAR = 100; |
|
|
|
|
BAZ = -1; // Intentionally negative. |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
required NestedEnum required_enum = 1; |
|
|
|
|
|
|
|
|
|
// A dummy optional field. |
|
|
|
|
optional int32 a = 2; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
message TestRequiredEnumMulti { |
|
|
|
|
enum NestedEnum { |
|
|
|
|
UNSPECIFIED = 0; |
|
|
|
|
FOO = 1; |
|
|
|
|
BAR = 2; |
|
|
|
|
BAZ = 100; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Intentionally placed in descending field number to force sorting in closed |
|
|
|
|
// enum verification. |
|
|
|
|
required NestedEnum required_enum_4 = 4; |
|
|
|
|
optional int32 a_3 = 3; |
|
|
|
|
required NestedEnum required_enum_2 = 2; |
|
|
|
|
required ForeignEnum required_enum_1 = 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
message TestRequiredNoMaskMulti { |
|
|
|
|
enum NestedEnum { |
|
|
|
|
UNSPECIFIED = 0; |
|
|
|
|
FOO = 1; |
|
|
|
|
BAR = 2; |
|
|
|
|
BAZ = 100; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Intentionally placed in descending field number to force sorting in closed |
|
|
|
|
// enum verification. Also, using large field numbers to use tag only |
|
|
|
|
// matching for required fields. |
|
|
|
|
required fixed32 required_fixed32_80 = 80; |
|
|
|
|
required fixed32 required_fixed32_70 = 70; |
|
|
|
|
|
|
|
|
|
required NestedEnum required_enum_64 = 64; |
|
|
|
|
required NestedEnum required_enum_4 = 4; |
|
|
|
|
optional int32 a_3 = 3; |
|
|
|
|
required NestedEnum required_enum_2 = 2; |
|
|
|
|
required ForeignEnum required_enum_1 = 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// We have separate messages for testing required fields because it's |
|
|
|
|
// annoying to have to fill in required fields in TestProto in order to |
|
|
|
|
// do anything with it. Note that we don't need to test every type of |
|
|
|
@ -490,6 +543,9 @@ message TestNestedRequiredForeign { |
|
|
|
|
optional int32 dummy = 3; |
|
|
|
|
// optional message to test required closed enum. |
|
|
|
|
optional TestRequiredEnum required_enum = 5; |
|
|
|
|
optional TestRequiredEnumNoMask required_enum_no_mask = 6; |
|
|
|
|
optional TestRequiredEnumMulti required_enum_multi = 7; |
|
|
|
|
optional TestRequiredNoMaskMulti required_no_mask = 9; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Test that we can use NestedMessage from outside TestAllTypes. |
|
|
|
|