1 /* Test nanopb option parsing. 2 * options.expected lists the patterns that are searched for in the output. 3 */ 4 5 import "nanopb.proto"; 6 7 // File level options 8 option (nanopb_fileopt).max_size = 20; 9 10 message Message1 11 { 12 required string filesize = 1; 13 } 14 15 // Message level options 16 message Message2 17 { 18 option (nanopb_msgopt).max_size = 30; 19 required string msgsize = 1; 20 } 21 22 // Field level options 23 message Message3 24 { 25 required string fieldsize = 1 [(nanopb).max_size = 40]; 26 } 27 28 // Forced callback field 29 message Message4 30 { 31 required int32 int32_callback = 1 [(nanopb).type = FT_CALLBACK]; 32 } 33 34 // Short enum names 35 enum Enum1 36 { 37 option (nanopb_enumopt).long_names = false; 38 EnumValue1 = 1; 39 EnumValue2 = 2; 40 } 41 42 message EnumTest 43 { 44 required Enum1 field = 1 [default = EnumValue2]; 45 } 46 47 // Short enum names inside message 48 message Message5 49 { 50 enum Enum2 51 { 52 option (nanopb_enumopt).long_names = false; 53 EnumValue1 = 1; 54 } 55 required Enum2 field = 1 [default = EnumValue1]; 56 } 57 58 // Packed structure 59 message my_packed_struct 60 { 61 option (nanopb_msgopt).packed_struct = true; 62 optional int32 myfield = 1; 63 } 64 65 // Message with ignored field 66 // Note: doesn't really test if the field is missing in the output, 67 // but atleast tests that the output compiles. 68 message Message6 69 { 70 required int32 field1 = 1; 71 optional int32 field2 = 2 [(nanopb).type = FT_IGNORE]; 72 } 73 74