1syntax = "proto" // multi-line string literal
2         "2";
3
4option go_package = "github.com/" // more multi-line string literals
5                    "jhump/protoreflect/"
6                    "internal/testprotos";
7
8package testprotos;
9
10message PrimitiveDefaults {
11	//// Floats
12
13	// simple default
14	optional float fl32 = 1 [default = 3.14159];
15	optional double fl64 = 2 [default = 3.14159];
16
17	// exponent notation
18	optional float fl32d = 3 [default = 6.022140857e23];
19	optional double fl64d = 4 [default = 6.022140857e23];
20
21	// special values: inf, -inf, and nan
22	optional float fl32inf = 5 [default = inf];
23	optional double fl64inf = 6 [default = inf];
24	optional float fl32negInf = 7 [default = -inf];
25	optional double fl64negInf = 8 [default = -inf];
26	optional float fl32nan = 9 [default = nan];
27	optional double fl64nan = 10 [default = nan];
28
29	//// Booleans
30
31	optional bool bl1 = 11 [default = true];
32	optional bool bl2 = 12 [default = false];
33
34	//// Ints
35
36	// signed
37	optional int32 i32 = 13 [default = 10101];
38	optional int32 i32n = 14 [default = -10101];
39	optional int32 i32x = 15 [default = 0x20202];
40	optional int32 i32xn = 16 [default = -0x20202];
41	optional int64 i64 = 17 [default = 10101];
42	optional int64 i64n = 18 [default = -10101];
43	optional int64 i64x = 19 [default = 0x20202];
44	optional int64 i64xn = 20 [default = -0x20202];
45	optional sint32 i32s = 21 [default = 10101];
46	optional sint32 i32sn = 22 [default = -10101];
47	optional sint32 i32sx = 23 [default = 0x20202];
48	optional sint32 i32sxn = 24 [default = -0x20202];
49	optional sint64 i64s = 25 [default = 10101];
50	optional sint64 i64sn = 26 [default = -10101];
51	optional sint64 i64sx = 27 [default = 0x20202];
52	optional sint64 i64sxn = 28 [default = -0x20202];
53	optional sfixed32 i32f = 29 [default = 10101];
54	optional sfixed32 i32fn = 30 [default = -10101];
55	optional sfixed32 i32fx = 31 [default = 0x20202];
56	optional sfixed32 i32fxn = 32 [default = -0x20202];
57	optional sfixed64 i64f = 33 [default = 10101];
58	optional sfixed64 i64fn = 34 [default = -10101];
59	optional sfixed64 i64fx = 35 [default = 0x20202];
60	optional sfixed64 i64fxn = 36 [default = -0x20202];
61
62	// unsigned
63	optional uint32 u32 = 37 [default = 10101];
64	optional uint32 u32x = 38 [default = 0x20202];
65	optional uint64 u64 = 39 [default = 10101];
66	optional uint64 u64x = 40 [default = 0x20202];
67	optional fixed32 u32f = 41 [default = 10101];
68	optional fixed32 u32fx = 42 [default = 0x20202];
69	optional fixed64 u64f = 43 [default = 10101];
70	optional fixed64 u64fx = 44 [default = 0x20202];
71}
72
73message StringAndBytesDefaults {
74	optional string dq = 1 [default = "this is a string with \"nested quotes\""];
75	optional string sq = 2 [default = 'this is a string with "nested quotes"'];
76
77	optional bytes escaped_bytes = 3 [default = "\0\001\a\b\f\n\r\t\v\\\'\"\xfe"];
78	optional string utf8_string = 4 [default = "\341\210\264"]; // this is utf-8 for \u1234
79  	optional string string_with_zero = 5 [default = "hel\000lo"];
80  	optional bytes bytes_with_zero = 6 [default = "wor\000ld"];
81
82	optional string really_long_string = 7 [default = "this is "
83                                           "a really long string constant, so it "
84                                           "spans multiple lines! it also tests "
85                                           "support for multi-line string literals "
86                                           "in option values"];
87}
88
89enum Color {
90	RED = 0;
91	GREEN = 1;
92	BLUE = 2;
93}
94
95enum Number {
96	option allow_alias = true;
97	ZERO = 0;
98	ZED = 0;
99	NIL = 0;
100	NULL = 0;
101	ONE = 1;
102	UNO = 1;
103	TWO = 2;
104	DOS = 2;
105}
106
107message EnumDefaults {
108	optional Color red = 1 [default = RED];
109	optional Color green = 2 [default = GREEN];
110	optional Color blue = 3 [default = BLUE];
111	optional Number zero = 4 [default = ZERO];
112	optional Number zed = 5 [default = ZED];
113	optional Number one = 6 [default = ONE];
114	optional Number dos = 7 [default = DOS];
115}
116
117message MoarFloats {
118	optional float a = 1 [default = 1];
119	optional float b = 2 [default = 1.];
120	optional float c = 3 [default = 1.01];
121	optional float d = 4 [default = .1];
122	optional float e = 5 [default = 1.e5];
123	optional float f = 6 [default = 1.e-5];
124}