Home | History | Annotate | Download | only in options
      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