Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: third_party/protobuf/java/core/src/test/java/com/google/protobuf/FieldPresenceTest.java

Issue 2600753002: Reverts third_party/protobuf: Update to HEAD (f52e188fe4) (Closed)
Patch Set: Created 3 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Protocol Buffers - Google's data interchange format 1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved. 2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/ 3 // https://developers.google.com/protocol-buffers/
4 // 4 //
5 // Redistribution and use in source and binary forms, with or without 5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are 6 // modification, are permitted provided that the following conditions are
7 // met: 7 // met:
8 // 8 //
9 // * Redistributions of source code must retain the above copyright 9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer. 10 // notice, this list of conditions and the following disclaimer.
(...skipping 13 matching lines...) Expand all
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 30
31 package com.google.protobuf; 31 package com.google.protobuf;
32 32
33 import com.google.protobuf.Descriptors.Descriptor; 33 import com.google.protobuf.Descriptors.Descriptor;
34 import com.google.protobuf.Descriptors.EnumDescriptor;
35 import com.google.protobuf.Descriptors.EnumValueDescriptor;
36 import com.google.protobuf.Descriptors.FieldDescriptor; 34 import com.google.protobuf.Descriptors.FieldDescriptor;
37 import com.google.protobuf.FieldPresenceTestProto.TestAllTypes; 35 import com.google.protobuf.FieldPresenceTestProto.TestAllTypes;
38 import com.google.protobuf.FieldPresenceTestProto.TestOptionalFieldsOnly; 36 import com.google.protobuf.FieldPresenceTestProto.TestOptionalFieldsOnly;
39 import com.google.protobuf.FieldPresenceTestProto.TestRepeatedFieldsOnly; 37 import com.google.protobuf.FieldPresenceTestProto.TestRepeatedFieldsOnly;
40 import protobuf_unittest.UnittestProto; 38 import protobuf_unittest.UnittestProto;
41 39
42 import junit.framework.TestCase; 40 import junit.framework.TestCase;
43 41
44 /** 42 /**
45 * Unit tests for protos that doesn't support field presence test for optional 43 * Unit tests for protos that doesn't support field presence test for optional
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 public void testOneofEquals() throws Exception { 145 public void testOneofEquals() throws Exception {
148 TestAllTypes.Builder builder = TestAllTypes.newBuilder(); 146 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
149 TestAllTypes message1 = builder.build(); 147 TestAllTypes message1 = builder.build();
150 // Set message2's oneof_uint32 field to defalut value. The two 148 // Set message2's oneof_uint32 field to defalut value. The two
151 // messages should be different when check with oneof case. 149 // messages should be different when check with oneof case.
152 builder.setOneofUint32(0); 150 builder.setOneofUint32(0);
153 TestAllTypes message2 = builder.build(); 151 TestAllTypes message2 = builder.build();
154 assertFalse(message1.equals(message2)); 152 assertFalse(message1.equals(message2));
155 } 153 }
156 154
157 public void testLazyField() throws Exception {
158 // Test default constructed message.
159 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
160 TestAllTypes message = builder.build();
161 assertFalse(message.hasOptionalLazyMessage());
162 assertEquals(0, message.getSerializedSize());
163 assertEquals(ByteString.EMPTY, message.toByteString());
164
165 // Set default instance to the field.
166 builder.setOptionalLazyMessage(TestAllTypes.NestedMessage.getDefaultInstance ());
167 message = builder.build();
168 assertTrue(message.hasOptionalLazyMessage());
169 assertEquals(2, message.getSerializedSize());
170
171 // Test parse zero-length from wire sets the presence.
172 TestAllTypes parsed = TestAllTypes.parseFrom(message.toByteString());
173 assertTrue(parsed.hasOptionalLazyMessage());
174 assertEquals(message.getOptionalLazyMessage(), parsed.getOptionalLazyMessage ());
175 }
176
177 public void testFieldPresence() { 155 public void testFieldPresence() {
178 // Optional non-message fields set to their default value are treated the 156 // Optional non-message fields set to their default value are treated the
179 // same way as not set. 157 // same way as not set.
180 158
181 // Serialization will ignore such fields. 159 // Serialization will ignore such fields.
182 TestAllTypes.Builder builder = TestAllTypes.newBuilder(); 160 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
183 builder.setOptionalInt32(0); 161 builder.setOptionalInt32(0);
184 builder.setOptionalString(""); 162 builder.setOptionalString("");
185 builder.setOptionalBytes(ByteString.EMPTY); 163 builder.setOptionalBytes(ByteString.EMPTY);
186 builder.setOptionalNestedEnum(TestAllTypes.NestedEnum.FOO); 164 builder.setOptionalNestedEnum(TestAllTypes.NestedEnum.FOO);
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 .setOptionalBytes(ByteString.copyFromUtf8("y")) 226 .setOptionalBytes(ByteString.copyFromUtf8("y"))
249 .setOptionalNestedEnum(TestAllTypes.NestedEnum.BAR) 227 .setOptionalNestedEnum(TestAllTypes.NestedEnum.BAR)
250 .build(); 228 .build();
251 assertTrue(message.hasField(optionalInt32Field)); 229 assertTrue(message.hasField(optionalInt32Field));
252 assertTrue(message.hasField(optionalStringField)); 230 assertTrue(message.hasField(optionalStringField));
253 assertTrue(message.hasField(optionalBytesField)); 231 assertTrue(message.hasField(optionalBytesField));
254 assertTrue(message.hasField(optionalNestedEnumField)); 232 assertTrue(message.hasField(optionalNestedEnumField));
255 assertEquals(4, message.getAllFields().size()); 233 assertEquals(4, message.getAllFields().size());
256 } 234 }
257 235
258 public void testFieldPresenceDynamicMessage() {
259 Descriptor descriptor = TestAllTypes.getDescriptor();
260 FieldDescriptor optionalInt32Field = descriptor.findFieldByName("optional_in t32");
261 FieldDescriptor optionalStringField = descriptor.findFieldByName("optional_s tring");
262 FieldDescriptor optionalBytesField = descriptor.findFieldByName("optional_by tes");
263 FieldDescriptor optionalNestedEnumField = descriptor.findFieldByName("option al_nested_enum");
264 EnumDescriptor enumDescriptor = optionalNestedEnumField.getEnumType();
265 EnumValueDescriptor defaultEnumValueDescriptor = enumDescriptor.getValues(). get(0);
266 EnumValueDescriptor nonDefaultEnumValueDescriptor = enumDescriptor.getValues ().get(1);
267
268 DynamicMessage defaultInstance = DynamicMessage.getDefaultInstance(descripto r);
269 // Field not present.
270 DynamicMessage message = defaultInstance.newBuilderForType().build();
271 assertFalse(message.hasField(optionalInt32Field));
272 assertFalse(message.hasField(optionalStringField));
273 assertFalse(message.hasField(optionalBytesField));
274 assertFalse(message.hasField(optionalNestedEnumField));
275 assertEquals(0, message.getAllFields().size());
276
277 // Field set to non-default value is seen as present.
278 message =
279 defaultInstance
280 .newBuilderForType()
281 .setField(optionalInt32Field, 1)
282 .setField(optionalStringField, "x")
283 .setField(optionalBytesField, ByteString.copyFromUtf8("y"))
284 .setField(optionalNestedEnumField, nonDefaultEnumValueDescriptor)
285 .build();
286 assertTrue(message.hasField(optionalInt32Field));
287 assertTrue(message.hasField(optionalStringField));
288 assertTrue(message.hasField(optionalBytesField));
289 assertTrue(message.hasField(optionalNestedEnumField));
290 assertEquals(4, message.getAllFields().size());
291
292 // Field set to default value is seen as not present.
293 message = message.toBuilder()
294 .setField(optionalInt32Field, 0)
295 .setField(optionalStringField, "")
296 .setField(optionalBytesField, ByteString.EMPTY)
297 .setField(optionalNestedEnumField, defaultEnumValueDescriptor)
298 .build();
299 assertFalse(message.hasField(optionalInt32Field));
300 assertFalse(message.hasField(optionalStringField));
301 assertFalse(message.hasField(optionalBytesField));
302 assertFalse(message.hasField(optionalNestedEnumField));
303 assertEquals(0, message.getAllFields().size());
304 }
305
306 public void testMessageField() { 236 public void testMessageField() {
307 TestAllTypes.Builder builder = TestAllTypes.newBuilder(); 237 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
308 assertFalse(builder.hasOptionalNestedMessage()); 238 assertFalse(builder.hasOptionalNestedMessage());
309 assertFalse(builder.build().hasOptionalNestedMessage()); 239 assertFalse(builder.build().hasOptionalNestedMessage());
310 240
311 TestAllTypes.NestedMessage.Builder nestedBuilder = 241 TestAllTypes.NestedMessage.Builder nestedBuilder =
312 builder.getOptionalNestedMessageBuilder(); 242 builder.getOptionalNestedMessageBuilder();
313 assertTrue(builder.hasOptionalNestedMessage()); 243 assertTrue(builder.hasOptionalNestedMessage());
314 assertTrue(builder.build().hasOptionalNestedMessage()); 244 assertTrue(builder.build().hasOptionalNestedMessage());
315 245
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 DynamicMessage dynamicOptionalOnlyMessage = 364 DynamicMessage dynamicOptionalOnlyMessage =
435 DynamicMessage.getDefaultInstance( 365 DynamicMessage.getDefaultInstance(
436 TestOptionalFieldsOnly.getDescriptor()) 366 TestOptionalFieldsOnly.getDescriptor())
437 .getParserForType().parseFrom(data); 367 .getParserForType().parseFrom(data);
438 assertEquals( 368 assertEquals(
439 0, dynamicOptionalOnlyMessage.getUnknownFields().toByteString().size()); 369 0, dynamicOptionalOnlyMessage.getUnknownFields().toByteString().size());
440 assertEquals(optionalOnlyMessage.toByteString(), 370 assertEquals(optionalOnlyMessage.toByteString(),
441 dynamicOptionalOnlyMessage.toByteString()); 371 dynamicOptionalOnlyMessage.toByteString());
442 } 372 }
443 } 373 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698