xref: /aosp_15_r20/external/jazzer-api/src/test/java/com/code_intelligence/jazzer/mutation/mutator/proto/proto2.proto (revision 33edd6723662ea34453766bfdca85dbfdd5342b8)
1// Copyright 2023 Code Intelligence GmbH
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto2";
16
17package com.code_intelligence.jazzer.protobuf;
18option java_package = "com.code_intelligence.jazzer.protobuf";
19
20message PrimitiveField2 {
21optional bool some_field = 1;
22}
23
24message RequiredPrimitiveField2 {
25required bool some_field = 1;
26}
27
28message RepeatedPrimitiveField2 {
29repeated bool some_field = 1;
30}
31
32message MessageField2 {
33optional RequiredPrimitiveField2 message_field = 1;
34}
35
36message RepeatedMessageField2 {
37repeated RequiredPrimitiveField2 message_field = 1;
38}
39
40message RepeatedOptionalMessageField2 {
41repeated PrimitiveField2 message_field = 1;
42}
43
44message RecursiveMessageField2 {
45required bool some_field = 1;
46optional RecursiveMessageField2 message_field = 2;
47}
48
49message RepeatedRecursiveMessageField2 {
50optional bool some_field = 1;
51repeated RepeatedRecursiveMessageField2 message_field = 2;
52}
53
54message OneOfField2 {
55required bool other_field = 4;
56oneof oneof_field {
57  bool bool_field = 7;
58  RequiredPrimitiveField2 message_field = 2;
59}
60optional bool yet_another_field = 1;
61}
62
63message IntegralField2 {
64optional uint32 some_field = 1;
65}
66
67message RepeatedIntegralField2 {
68repeated uint32 some_field = 1;
69}
70
71message BytesField2 {
72optional bytes some_field = 1;
73}
74
75message StringField2 {
76optional string some_field = 1;
77}
78
79message Parent {
80  optional Child child = 1;
81}
82
83message Child {
84  optional Parent parent = 1;
85}
86
87// Taken from
88// https://github.com/google/fuzztest/blob/c5fde4baee6134c84d4f2b618def9f60c7505151/fuzztest/internal/test_protobuf.proto#L24
89message TestSubProtobuf {
90  optional int32 subproto_i32 = 1;
91  repeated int32 subproto_rep_i32 = 2 [packed = true];
92  optional TestProtobuf parent = 3;
93}
94
95message TestProtobuf {
96  enum Enum {
97    Label1 = 0;
98    Label2 = 1;
99    Label3 = 2;
100    Label4 = 3;
101    Label5 = 4;
102  }
103
104  optional bool b = 1;
105  optional int32 i32 = 2;
106  optional uint32 u32 = 3;
107  optional int64 i64 = 4;
108  optional uint64 u64 = 5;
109  optional float f = 6;
110  optional double d = 7;
111  optional string str = 8;
112  optional Enum e = 9;
113  optional TestSubProtobuf subproto = 10;
114
115  repeated bool rep_b = 11;
116  repeated int32 rep_i32 = 12;
117  repeated uint32 rep_u32 = 13;
118  repeated int64 rep_i64 = 14;
119  repeated uint64 rep_u64 = 15;
120  repeated float rep_f = 16;
121  repeated double rep_d = 17;
122  repeated string rep_str = 18;
123  repeated Enum rep_e = 19;
124  repeated TestSubProtobuf rep_subproto = 20;
125
126  oneof oneof_field {
127    int32 oneof_i32 = 21;
128    int64 oneof_i64 = 22;
129    uint32 oneof_u32 = 24;
130  }
131
132  map<int32, int32> map_field = 25;
133
134  // Special cases
135  enum EnumOneLabel {
136    OnlyLabel = 17;
137  }
138  optional EnumOneLabel enum_one_label = 100;
139  message EmptyMessage {}
140  optional EmptyMessage empty_message = 101;
141}
142
143message OriginalSubmessage2 {
144  required int32 numeric_field = 1;
145}
146
147message OriginalMessage2 {
148  required OriginalSubmessage2 message_field = 1;
149  required bool bool_field = 2;
150}
151
152message ExtendedSubmessage2 {
153  required int32 numeric_field = 1;
154  required OriginalSubmessage2 message_field = 2;
155}
156
157message ExtendedMessage2 {
158  required ExtendedSubmessage2 message_field = 1;
159  required bool bool_field = 2;
160  required float float_field = 3;
161}
162