31 package com.google.protobuf;
41 import junit.framework.TestCase;
49 if (clazz.getMethod(
name) !=
null) {
54 }
catch (NoSuchMethodException e) {
60 Class<?> classWithFieldPresence, Class<?> classWithoutFieldPresence, String camelName) {
61 assertTrue(
hasMethod(classWithFieldPresence,
"get" + camelName));
62 assertTrue(
hasMethod(classWithFieldPresence,
"has" + camelName));
63 assertTrue(
hasMethod(classWithoutFieldPresence,
"get" + camelName));
64 assertFalse(
hasMethod(classWithoutFieldPresence,
"has" + camelName));
73 UnittestProto.TestAllTypes.class, TestAllTypes.class,
"OptionalNestedEnum");
76 UnittestProto.TestAllTypes.Builder.class, TestAllTypes.Builder.class,
"OptionalInt32");
78 UnittestProto.TestAllTypes.Builder.class, TestAllTypes.Builder.class,
"OptionalString");
80 UnittestProto.TestAllTypes.Builder.class, TestAllTypes.Builder.class,
"OptionalBytes");
82 UnittestProto.TestAllTypes.Builder.class, TestAllTypes.Builder.class,
"OptionalNestedEnum");
85 assertFalse(TestAllTypes.getDefaultInstance().hasOptionalNestedMessage());
86 assertFalse(TestAllTypes.newBuilder().hasOptionalNestedMessage());
92 assertFalse(TestAllTypes.getDefaultInstance().hasOneofNestedMessage());
93 assertFalse(TestAllTypes.newBuilder().hasOneofNestedMessage());
96 UnittestProto.TestAllTypes.Builder.class, TestAllTypes.Builder.class,
"OneofUint32");
98 UnittestProto.TestAllTypes.Builder.class, TestAllTypes.Builder.class,
"OneofString");
100 UnittestProto.TestAllTypes.Builder.class, TestAllTypes.Builder.class,
"OneofBytes");
104 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
105 TestAllTypes message1 = builder.build();
108 builder.setOneofUint32(0);
109 TestAllTypes message2 = builder.build();
110 assertFalse(message1.equals(message2));
115 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
116 TestAllTypes
message = builder.build();
117 assertFalse(
message.hasOptionalLazyMessage());
118 assertEquals(0,
message.getSerializedSize());
122 builder.setOptionalLazyMessage(TestAllTypes.NestedMessage.getDefaultInstance());
124 assertTrue(
message.hasOptionalLazyMessage());
125 assertEquals(2,
message.getSerializedSize());
128 TestAllTypes parsed = TestAllTypes.parseFrom(
message.toByteString());
129 assertTrue(parsed.hasOptionalLazyMessage());
130 assertEquals(
message.getOptionalLazyMessage(), parsed.getOptionalLazyMessage());
138 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
139 builder.setOptionalInt32(0);
140 builder.setOptionalString(
"");
142 builder.setOptionalNestedEnum(TestAllTypes.NestedEnum.FOO);
143 TestAllTypes
message = builder.build();
144 assertEquals(0,
message.getSerializedSize());
147 TestAllTypes.Builder
a = TestAllTypes.newBuilder();
148 a.setOptionalInt32(1);
149 a.setOptionalString(
"x");
151 a.setOptionalNestedEnum(TestAllTypes.NestedEnum.BAR);
152 TestAllTypes.Builder
b = TestAllTypes.newBuilder();
153 b.setOptionalInt32(0);
154 b.setOptionalString(
"");
156 b.setOptionalNestedEnum(TestAllTypes.NestedEnum.FOO);
157 a.mergeFrom(
b.build());
159 assertEquals(1,
message.getOptionalInt32());
160 assertEquals(
"x",
message.getOptionalString());
162 assertEquals(TestAllTypes.NestedEnum.BAR,
message.getOptionalNestedEnum());
165 TestAllTypes empty = TestAllTypes.getDefaultInstance();
169 assertEquals(empty.hashCode(),
message.hashCode());
180 TestAllTypes
message = TestAllTypes.getDefaultInstance();
181 assertFalse(
message.hasField(optionalInt32Field));
182 assertFalse(
message.hasField(optionalStringField));
183 assertFalse(
message.hasField(optionalBytesField));
184 assertFalse(
message.hasField(optionalNestedEnumField));
185 assertEquals(0,
message.getAllFields().size());
189 TestAllTypes.newBuilder()
191 .setOptionalString(
"")
193 .setOptionalNestedEnum(TestAllTypes.NestedEnum.FOO)
195 assertFalse(
message.hasField(optionalInt32Field));
196 assertFalse(
message.hasField(optionalStringField));
197 assertFalse(
message.hasField(optionalBytesField));
198 assertFalse(
message.hasField(optionalNestedEnumField));
199 assertEquals(0,
message.getAllFields().size());
203 TestAllTypes.newBuilder()
205 .setOptionalString(
"x")
206 .setOptionalBytes(
ByteString.copyFromUtf8(
"y"))
207 .setOptionalNestedEnum(TestAllTypes.NestedEnum.BAR)
209 assertTrue(
message.hasField(optionalInt32Field));
210 assertTrue(
message.hasField(optionalStringField));
211 assertTrue(
message.hasField(optionalBytesField));
212 assertTrue(
message.hasField(optionalNestedEnumField));
213 assertEquals(4,
message.getAllFields().size());
229 assertFalse(
message.hasField(optionalInt32Field));
230 assertFalse(
message.hasField(optionalStringField));
231 assertFalse(
message.hasField(optionalBytesField));
232 assertFalse(
message.hasField(optionalNestedEnumField));
233 assertEquals(0,
message.getAllFields().size());
242 .
setField(optionalNestedEnumField, nonDefaultEnumValueDescriptor)
244 assertTrue(
message.hasField(optionalInt32Field));
245 assertTrue(
message.hasField(optionalStringField));
246 assertTrue(
message.hasField(optionalBytesField));
247 assertTrue(
message.hasField(optionalNestedEnumField));
248 assertEquals(4,
message.getAllFields().size());
254 .setField(optionalInt32Field, 0)
255 .setField(optionalStringField,
"")
257 .setField(optionalNestedEnumField, defaultEnumValueDescriptor)
259 assertFalse(
message.hasField(optionalInt32Field));
260 assertFalse(
message.hasField(optionalStringField));
261 assertFalse(
message.hasField(optionalBytesField));
262 assertFalse(
message.hasField(optionalNestedEnumField));
263 assertEquals(0,
message.getAllFields().size());
267 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
268 assertFalse(builder.hasOptionalNestedMessage());
269 assertFalse(builder.build().hasOptionalNestedMessage());
271 TestAllTypes.NestedMessage.Builder nestedBuilder = builder.getOptionalNestedMessageBuilder();
272 assertTrue(builder.hasOptionalNestedMessage());
273 assertTrue(builder.build().hasOptionalNestedMessage());
275 nestedBuilder.setValue(1);
276 assertEquals(1, builder.build().getOptionalNestedMessage().getValue());
278 builder.clearOptionalNestedMessage();
279 assertFalse(builder.hasOptionalNestedMessage());
280 assertFalse(builder.build().hasOptionalNestedMessage());
284 builder.setOptionalNestedMessage(TestAllTypes.NestedMessage.getDefaultInstance());
285 assertTrue(builder.hasOptionalNestedMessage());
286 assertTrue(builder.build().hasOptionalNestedMessage());
290 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
291 builder.setOptionalInt32(1234);
292 builder.setOptionalString(
"hello");
293 builder.setOptionalNestedMessage(TestAllTypes.NestedMessage.getDefaultInstance());
296 builder.setOneofInt32(0);
299 TestAllTypes
message = TestAllTypes.parseFrom(
data);
300 assertEquals(1234,
message.getOptionalInt32());
301 assertEquals(
"hello",
message.getOptionalString());
304 assertEquals(TestAllTypes.NestedEnum.FOO,
message.getOptionalNestedEnum());
306 assertTrue(
message.hasOptionalNestedMessage());
307 assertEquals(0,
message.getOptionalNestedMessage().getValue());
309 assertEquals(TestAllTypes.OneofFieldCase.ONEOF_INT32,
message.getOneofFieldCase());
315 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
316 builder.setOptionalInt32(1234);
317 builder.setOptionalString(
"hello");
318 builder.setOptionalNestedMessage(TestAllTypes.NestedMessage.getDefaultInstance());
319 builder.addRepeatedInt32(4321);
320 builder.addRepeatedString(
"world");
321 builder.addRepeatedNestedMessage(TestAllTypes.NestedMessage.getDefaultInstance());
324 TestOptionalFieldsOnly optionalOnlyMessage = TestOptionalFieldsOnly.parseFrom(
data);
325 assertEquals(1234, optionalOnlyMessage.getOptionalInt32());
326 assertEquals(
"hello", optionalOnlyMessage.getOptionalString());
327 assertTrue(optionalOnlyMessage.hasOptionalNestedMessage());
328 assertEquals(0, optionalOnlyMessage.getOptionalNestedMessage().getValue());
330 TestRepeatedFieldsOnly repeatedOnlyMessage = TestRepeatedFieldsOnly.parseFrom(
data);
331 assertEquals(1, repeatedOnlyMessage.getRepeatedInt32Count());
332 assertEquals(4321, repeatedOnlyMessage.getRepeatedInt32(0));
333 assertEquals(1, repeatedOnlyMessage.getRepeatedStringCount());
334 assertEquals(
"world", repeatedOnlyMessage.getRepeatedString(0));
335 assertEquals(1, repeatedOnlyMessage.getRepeatedNestedMessageCount());
336 assertEquals(0, repeatedOnlyMessage.getRepeatedNestedMessage(0).getValue());
340 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
343 UnittestProto.TestRequired.Builder proto2Builder = builder.getOptionalProto2MessageBuilder();
344 assertFalse(builder.isInitialized());
345 assertFalse(builder.buildPartial().isInitialized());
347 proto2Builder.setA(1).setB(2).setC(3);
348 assertTrue(builder.isInitialized());
349 assertTrue(builder.buildPartial().isInitialized());
352 proto2Builder = builder.getOneofProto2MessageBuilder();
353 assertFalse(builder.isInitialized());
354 assertFalse(builder.buildPartial().isInitialized());
356 proto2Builder.setA(1).setB(2).setC(3);
357 assertTrue(builder.isInitialized());
358 assertTrue(builder.buildPartial().isInitialized());
361 proto2Builder = builder.addRepeatedProto2MessageBuilder();
362 assertFalse(builder.isInitialized());
363 assertFalse(builder.buildPartial().isInitialized());
365 proto2Builder.setA(1).setB(2).setC(3);
366 assertTrue(builder.isInitialized());
367 assertTrue(builder.buildPartial().isInitialized());