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

Side by Side Diff: third_party/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/DescriptorsTest.java

Issue 2495533002: third_party/protobuf: Update to HEAD (83d681ee2c) (Closed)
Patch Set: Make chrome settings proto generated file a component Created 4 years 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 // http://code.google.com/p/protobuf/
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.
11 // * Redistributions in binary form must reproduce the above 11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer 12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the 13 // in the documentation and/or other materials provided with the
14 // distribution. 14 // distribution.
15 // * Neither the name of Google Inc. nor the names of its 15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from 16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission. 17 // this software without specific prior written permission.
18 // 18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
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.test;
32 import com.google.protobuf.*;
32 33
33 import com.google.protobuf.DescriptorProtos.DescriptorProto; 34 import com.google.protobuf.DescriptorProtos.DescriptorProto;
34 import com.google.protobuf.DescriptorProtos.EnumDescriptorProto; 35 import com.google.protobuf.DescriptorProtos.EnumDescriptorProto;
35 import com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto; 36 import com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto;
36 import com.google.protobuf.DescriptorProtos.FieldDescriptorProto; 37 import com.google.protobuf.DescriptorProtos.FieldDescriptorProto;
37 import com.google.protobuf.DescriptorProtos.FileDescriptorProto; 38 import com.google.protobuf.DescriptorProtos.FileDescriptorProto;
39 import com.google.protobuf.Descriptors.DescriptorValidationException;
40 import com.google.protobuf.Descriptors.FileDescriptor;
38 import com.google.protobuf.Descriptors.Descriptor; 41 import com.google.protobuf.Descriptors.Descriptor;
39 import com.google.protobuf.Descriptors.DescriptorValidationException; 42 import com.google.protobuf.Descriptors.FieldDescriptor;
40 import com.google.protobuf.Descriptors.EnumDescriptor; 43 import com.google.protobuf.Descriptors.EnumDescriptor;
41 import com.google.protobuf.Descriptors.EnumValueDescriptor; 44 import com.google.protobuf.Descriptors.EnumValueDescriptor;
42 import com.google.protobuf.Descriptors.FieldDescriptor; 45 import com.google.protobuf.Descriptors.ServiceDescriptor;
43 import com.google.protobuf.Descriptors.FileDescriptor;
44 import com.google.protobuf.Descriptors.MethodDescriptor; 46 import com.google.protobuf.Descriptors.MethodDescriptor;
45 import com.google.protobuf.Descriptors.OneofDescriptor; 47
46 import com.google.protobuf.Descriptors.ServiceDescriptor;
47 import com.google.protobuf.test.UnittestImport; 48 import com.google.protobuf.test.UnittestImport;
48 import com.google.protobuf.test.UnittestImport.ImportEnum; 49 import com.google.protobuf.test.UnittestImport.ImportEnum;
49 import com.google.protobuf.test.UnittestImport.ImportEnumForMap; 50 import com.google.protobuf.test.UnittestImport.ImportMessage;
50 import protobuf_unittest.TestCustomOptions;
51 import protobuf_unittest.UnittestCustomOptions;
52 import protobuf_unittest.UnittestProto; 51 import protobuf_unittest.UnittestProto;
53 import protobuf_unittest.UnittestProto.ForeignEnum; 52 import protobuf_unittest.UnittestProto.ForeignEnum;
54 import protobuf_unittest.UnittestProto.ForeignMessage; 53 import protobuf_unittest.UnittestProto.ForeignMessage;
54 import protobuf_unittest.UnittestProto.TestAllTypes;
55 import protobuf_unittest.UnittestProto.TestAllExtensions; 55 import protobuf_unittest.UnittestProto.TestAllExtensions;
56 import protobuf_unittest.UnittestProto.TestAllTypes;
57 import protobuf_unittest.UnittestProto.TestExtremeDefaultValues; 56 import protobuf_unittest.UnittestProto.TestExtremeDefaultValues;
58 import protobuf_unittest.UnittestProto.TestMultipleExtensionRanges;
59 import protobuf_unittest.UnittestProto.TestRequired; 57 import protobuf_unittest.UnittestProto.TestRequired;
60 import protobuf_unittest.UnittestProto.TestReservedFields;
61 import protobuf_unittest.UnittestProto.TestService; 58 import protobuf_unittest.UnittestProto.TestService;
59 import protobuf_unittest.UnittestCustomOptions;
60
61
62 import junit.framework.TestCase; 62 import junit.framework.TestCase;
63 63
64 import java.util.Arrays; 64 import java.util.Arrays;
65 import java.util.Collections; 65 import java.util.Collections;
66 import java.util.List; 66 import java.util.List;
67 67
68 /** 68 /**
69 * Unit test for {@link Descriptors}. 69 * Unit test for {@link Descriptors}.
70 * 70 *
71 * @author kenton@google.com Kenton Varda 71 * @author kenton@google.com Kenton Varda
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 assertNull(file.findMessageTypeByName("protobuf_unittest.TestAllTypes")); 108 assertNull(file.findMessageTypeByName("protobuf_unittest.TestAllTypes"));
109 for (int i = 0; i < file.getMessageTypes().size(); i++) { 109 for (int i = 0; i < file.getMessageTypes().size(); i++) {
110 assertEquals(i, file.getMessageTypes().get(i).getIndex()); 110 assertEquals(i, file.getMessageTypes().get(i).getIndex());
111 } 111 }
112 112
113 EnumDescriptor enumType = ForeignEnum.getDescriptor(); 113 EnumDescriptor enumType = ForeignEnum.getDescriptor();
114 assertEquals(enumType, file.getEnumTypes().get(0)); 114 assertEquals(enumType, file.getEnumTypes().get(0));
115 assertEquals(enumType, file.findEnumTypeByName("ForeignEnum")); 115 assertEquals(enumType, file.findEnumTypeByName("ForeignEnum"));
116 assertNull(file.findEnumTypeByName("NoSuchType")); 116 assertNull(file.findEnumTypeByName("NoSuchType"));
117 assertNull(file.findEnumTypeByName("protobuf_unittest.ForeignEnum")); 117 assertNull(file.findEnumTypeByName("protobuf_unittest.ForeignEnum"));
118 assertEquals(Arrays.asList(ImportEnum.getDescriptor(), 118 assertEquals(Arrays.asList(ImportEnum.getDescriptor()),
119 ImportEnumForMap.getDescriptor()),
120 UnittestImport.getDescriptor().getEnumTypes()); 119 UnittestImport.getDescriptor().getEnumTypes());
121 for (int i = 0; i < file.getEnumTypes().size(); i++) { 120 for (int i = 0; i < file.getEnumTypes().size(); i++) {
122 assertEquals(i, file.getEnumTypes().get(i).getIndex()); 121 assertEquals(i, file.getEnumTypes().get(i).getIndex());
123 } 122 }
124 123
125 ServiceDescriptor service = TestService.getDescriptor(); 124 ServiceDescriptor service = TestService.getDescriptor();
126 assertEquals(service, file.getServices().get(0)); 125 assertEquals(service, file.getServices().get(0));
127 assertEquals(service, file.findServiceByName("TestService")); 126 assertEquals(service, file.findServiceByName("TestService"));
128 assertNull(file.findServiceByName("NoSuchType")); 127 assertNull(file.findServiceByName("NoSuchType"));
129 assertNull(file.findServiceByName("protobuf_unittest.TestService")); 128 assertNull(file.findServiceByName("protobuf_unittest.TestService"));
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 FieldDescriptor repeatedField = 265 FieldDescriptor repeatedField =
267 TestAllTypes.getDescriptor().findFieldByName("repeated_int32"); 266 TestAllTypes.getDescriptor().findFieldByName("repeated_int32");
268 267
269 assertTrue(requiredField.isRequired()); 268 assertTrue(requiredField.isRequired());
270 assertFalse(requiredField.isRepeated()); 269 assertFalse(requiredField.isRepeated());
271 assertFalse(optionalField.isRequired()); 270 assertFalse(optionalField.isRequired());
272 assertFalse(optionalField.isRepeated()); 271 assertFalse(optionalField.isRepeated());
273 assertFalse(repeatedField.isRequired()); 272 assertFalse(repeatedField.isRequired());
274 assertTrue(repeatedField.isRepeated()); 273 assertTrue(repeatedField.isRepeated());
275 } 274 }
276
277 public void testFieldDescriptorJsonName() throws Exception {
278 FieldDescriptor requiredField = TestRequired.getDescriptor().findFieldByName ("a");
279 FieldDescriptor optionalField = TestAllTypes.getDescriptor().findFieldByName ("optional_int32");
280 FieldDescriptor repeatedField = TestAllTypes.getDescriptor().findFieldByName ("repeated_int32");
281 assertEquals("a", requiredField.getJsonName());
282 assertEquals("optionalInt32", optionalField.getJsonName());
283 assertEquals("repeatedInt32", repeatedField.getJsonName());
284 }
285 275
286 public void testFieldDescriptorDefault() throws Exception { 276 public void testFieldDescriptorDefault() throws Exception {
287 Descriptor d = TestAllTypes.getDescriptor(); 277 Descriptor d = TestAllTypes.getDescriptor();
288 assertFalse(d.findFieldByName("optional_int32").hasDefaultValue()); 278 assertFalse(d.findFieldByName("optional_int32").hasDefaultValue());
289 assertEquals(0, d.findFieldByName("optional_int32").getDefaultValue()); 279 assertEquals(0, d.findFieldByName("optional_int32").getDefaultValue());
290 assertTrue(d.findFieldByName("default_int32").hasDefaultValue()); 280 assertTrue(d.findFieldByName("default_int32").hasDefaultValue());
291 assertEquals(41, d.findFieldByName("default_int32").getDefaultValue()); 281 assertEquals(41, d.findFieldByName("default_int32").getDefaultValue());
292 282
293 d = TestExtremeDefaultValues.getDescriptor(); 283 d = TestExtremeDefaultValues.getDescriptor();
294 assertEquals( 284 assertEquals(
295 ByteString.copyFrom( 285 ByteString.copyFrom(
296 "\0\001\007\b\f\n\r\t\013\\\'\"\u00fe".getBytes(Internal.ISO_8859_1)), 286 "\0\001\007\b\f\n\r\t\013\\\'\"\u00fe".getBytes("ISO-8859-1")),
297 d.findFieldByName("escaped_bytes").getDefaultValue()); 287 d.findFieldByName("escaped_bytes").getDefaultValue());
298 assertEquals(-1, d.findFieldByName("large_uint32").getDefaultValue()); 288 assertEquals(-1, d.findFieldByName("large_uint32").getDefaultValue());
299 assertEquals(-1L, d.findFieldByName("large_uint64").getDefaultValue()); 289 assertEquals(-1L, d.findFieldByName("large_uint64").getDefaultValue());
300 } 290 }
301 291
302 public void testEnumDescriptor() throws Exception { 292 public void testEnumDescriptor() throws Exception {
303 EnumDescriptor enumType = ForeignEnum.getDescriptor(); 293 EnumDescriptor enumType = ForeignEnum.getDescriptor();
304 EnumDescriptor nestedType = TestAllTypes.NestedEnum.getDescriptor(); 294 EnumDescriptor nestedType = TestAllTypes.NestedEnum.getDescriptor();
305 295
306 assertEquals("ForeignEnum", enumType.getName()); 296 assertEquals("ForeignEnum", enumType.getName());
307 assertEquals("protobuf_unittest.ForeignEnum", enumType.getFullName()); 297 assertEquals("protobuf_unittest.ForeignEnum", enumType.getFullName());
308 assertEquals(UnittestProto.getDescriptor(), enumType.getFile()); 298 assertEquals(UnittestProto.getDescriptor(), enumType.getFile());
309 assertNull(enumType.getContainingType()); 299 assertNull(enumType.getContainingType());
310 assertEquals(DescriptorProtos.EnumOptions.getDefaultInstance(), 300 assertEquals(DescriptorProtos.EnumOptions.getDefaultInstance(),
311 enumType.getOptions()); 301 enumType.getOptions());
312 302
313 assertEquals("NestedEnum", nestedType.getName()); 303 assertEquals("NestedEnum", nestedType.getName());
314 assertEquals("protobuf_unittest.TestAllTypes.NestedEnum", 304 assertEquals("protobuf_unittest.TestAllTypes.NestedEnum",
315 nestedType.getFullName()); 305 nestedType.getFullName());
316 assertEquals(UnittestProto.getDescriptor(), nestedType.getFile()); 306 assertEquals(UnittestProto.getDescriptor(), nestedType.getFile());
317 assertEquals(TestAllTypes.getDescriptor(), nestedType.getContainingType()); 307 assertEquals(TestAllTypes.getDescriptor(), nestedType.getContainingType());
318 308
319 EnumValueDescriptor value = ForeignEnum.FOREIGN_FOO.getValueDescriptor(); 309 EnumValueDescriptor value = ForeignEnum.FOREIGN_FOO.getValueDescriptor();
320 assertEquals(value, enumType.getValues().get(0)); 310 assertEquals(value, enumType.getValues().get(0));
321 assertEquals("FOREIGN_FOO", value.getName()); 311 assertEquals("FOREIGN_FOO", value.getName());
322 assertEquals("FOREIGN_FOO", value.toString());
323 assertEquals(4, value.getNumber()); 312 assertEquals(4, value.getNumber());
324 assertEquals(value, enumType.findValueByName("FOREIGN_FOO")); 313 assertEquals(value, enumType.findValueByName("FOREIGN_FOO"));
325 assertEquals(value, enumType.findValueByNumber(4)); 314 assertEquals(value, enumType.findValueByNumber(4));
326 assertNull(enumType.findValueByName("NO_SUCH_VALUE")); 315 assertNull(enumType.findValueByName("NO_SUCH_VALUE"));
327 for (int i = 0; i < enumType.getValues().size(); i++) { 316 for (int i = 0; i < enumType.getValues().size(); i++) {
328 assertEquals(i, enumType.getValues().get(i).getIndex()); 317 assertEquals(i, enumType.getValues().get(i).getIndex());
329 } 318 }
330 } 319 }
331 320
332 public void testServiceDescriptor() throws Exception { 321 public void testServiceDescriptor() throws Exception {
333 ServiceDescriptor service = TestService.getDescriptor(); 322 ServiceDescriptor service = TestService.getDescriptor();
334 323
335 assertEquals("TestService", service.getName()); 324 assertEquals("TestService", service.getName());
336 assertEquals("protobuf_unittest.TestService", service.getFullName()); 325 assertEquals("protobuf_unittest.TestService", service.getFullName());
337 assertEquals(UnittestProto.getDescriptor(), service.getFile()); 326 assertEquals(UnittestProto.getDescriptor(), service.getFile());
338 327
328 assertEquals(2, service.getMethods().size());
339 329
340 MethodDescriptor fooMethod = service.getMethods().get(0); 330 MethodDescriptor fooMethod = service.getMethods().get(0);
341 assertEquals("Foo", fooMethod.getName()); 331 assertEquals("Foo", fooMethod.getName());
342 assertEquals(UnittestProto.FooRequest.getDescriptor(), 332 assertEquals(UnittestProto.FooRequest.getDescriptor(),
343 fooMethod.getInputType()); 333 fooMethod.getInputType());
344 assertEquals(UnittestProto.FooResponse.getDescriptor(), 334 assertEquals(UnittestProto.FooResponse.getDescriptor(),
345 fooMethod.getOutputType()); 335 fooMethod.getOutputType());
346 assertEquals(fooMethod, service.findMethodByName("Foo")); 336 assertEquals(fooMethod, service.findMethodByName("Foo"));
347 337
348 MethodDescriptor barMethod = service.getMethods().get(1); 338 MethodDescriptor barMethod = service.getMethods().get(1);
349 assertEquals("Bar", barMethod.getName()); 339 assertEquals("Bar", barMethod.getName());
350 assertEquals(UnittestProto.BarRequest.getDescriptor(), 340 assertEquals(UnittestProto.BarRequest.getDescriptor(),
351 barMethod.getInputType()); 341 barMethod.getInputType());
352 assertEquals(UnittestProto.BarResponse.getDescriptor(), 342 assertEquals(UnittestProto.BarResponse.getDescriptor(),
353 barMethod.getOutputType()); 343 barMethod.getOutputType());
354 assertEquals(barMethod, service.findMethodByName("Bar")); 344 assertEquals(barMethod, service.findMethodByName("Bar"));
355 345
356 assertNull(service.findMethodByName("NoSuchMethod")); 346 assertNull(service.findMethodByName("NoSuchMethod"));
357 347
358 for (int i = 0; i < service.getMethods().size(); i++) { 348 for (int i = 0; i < service.getMethods().size(); i++) {
359 assertEquals(i, service.getMethods().get(i).getIndex()); 349 assertEquals(i, service.getMethods().get(i).getIndex());
360 } 350 }
361 } 351 }
362 352
363 353
364 public void testCustomOptions() throws Exception { 354 public void testCustomOptions() throws Exception {
365 // Get the descriptor indirectly from a dependent proto class. This is to
366 // ensure that when a proto class is loaded, custom options defined in its
367 // dependencies are also properly initialized.
368 Descriptor descriptor = 355 Descriptor descriptor =
369 TestCustomOptions.TestMessageWithCustomOptionsContainer.getDescriptor() 356 UnittestCustomOptions.TestMessageWithCustomOptions.getDescriptor();
370 .findFieldByName("field").getMessageType();
371 357
372 assertTrue( 358 assertTrue(
373 descriptor.getOptions().hasExtension(UnittestCustomOptions.messageOpt1)); 359 descriptor.getOptions().hasExtension(UnittestCustomOptions.messageOpt1));
374 assertEquals(Integer.valueOf(-56), 360 assertEquals(Integer.valueOf(-56),
375 descriptor.getOptions().getExtension(UnittestCustomOptions.messageOpt1)); 361 descriptor.getOptions().getExtension(UnittestCustomOptions.messageOpt1));
376 362
377 FieldDescriptor field = descriptor.findFieldByName("field1"); 363 FieldDescriptor field = descriptor.findFieldByName("field1");
378 assertNotNull(field); 364 assertNotNull(field);
379 365
380 assertTrue( 366 assertTrue(
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 .addField(FieldDescriptorProto.newBuilder() 483 .addField(FieldDescriptorProto.newBuilder()
498 .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL) 484 .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL)
499 .setTypeName("Foo") 485 .setTypeName("Foo")
500 .setName("Foo") 486 .setName("Foo")
501 .setNumber(1) 487 .setNumber(1)
502 .build()) 488 .build())
503 .build()) 489 .build())
504 .build(); 490 .build();
505 // translate and crosslink 491 // translate and crosslink
506 FileDescriptor file = 492 FileDescriptor file =
507 Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, 493 Descriptors.FileDescriptor.buildFrom(fileDescriptorProto,
508 new FileDescriptor[0]); 494 new FileDescriptor[0]);
509 // verify resulting descriptors 495 // verify resulting descriptors
510 assertNotNull(file); 496 assertNotNull(file);
511 List<Descriptor> msglist = file.getMessageTypes(); 497 List<Descriptor> msglist = file.getMessageTypes();
512 assertNotNull(msglist); 498 assertNotNull(msglist);
513 assertTrue(msglist.size() == 2); 499 assertTrue(msglist.size() == 2);
514 boolean barFound = false; 500 boolean barFound = false;
515 for (Descriptor desc : msglist) { 501 for (Descriptor desc : msglist) {
516 if (desc.getName().equals("Bar")) { 502 if (desc.getName().equals("Bar")) {
517 barFound = true; 503 barFound = true;
518 assertNotNull(desc.getFields()); 504 assertNotNull(desc.getFields());
519 List<FieldDescriptor> fieldlist = desc.getFields(); 505 List<FieldDescriptor> fieldlist = desc.getFields();
520 assertNotNull(fieldlist); 506 assertNotNull(fieldlist);
521 assertTrue(fieldlist.size() == 1); 507 assertTrue(fieldlist.size() == 1);
522 assertTrue(fieldlist.get(0).getType() == FieldDescriptor.Type.MESSAGE); 508 assertTrue(fieldlist.get(0).getType() == FieldDescriptor.Type.MESSAGE);
523 assertTrue(fieldlist.get(0).getMessageType().getName().equals("Foo")); 509 assertTrue(fieldlist.get(0).getMessageType().getName().equals("Foo"));
524 } 510 }
525 } 511 }
526 assertTrue(barFound); 512 assertTrue(barFound);
527 } 513 }
528 514
529 public void testDependencyOrder() throws Exception {
530 FileDescriptorProto fooProto = FileDescriptorProto.newBuilder()
531 .setName("foo.proto").build();
532 FileDescriptorProto barProto = FileDescriptorProto.newBuilder()
533 .setName("bar.proto")
534 .addDependency("foo.proto")
535 .build();
536 FileDescriptorProto bazProto = FileDescriptorProto.newBuilder()
537 .setName("baz.proto")
538 .addDependency("foo.proto")
539 .addDependency("bar.proto")
540 .addPublicDependency(0)
541 .addPublicDependency(1)
542 .build();
543 FileDescriptor fooFile = Descriptors.FileDescriptor.buildFrom(fooProto,
544 new FileDescriptor[0]);
545 FileDescriptor barFile = Descriptors.FileDescriptor.buildFrom(barProto,
546 new FileDescriptor[] {fooFile});
547
548 // Items in the FileDescriptor array can be in any order.
549 Descriptors.FileDescriptor.buildFrom(bazProto,
550 new FileDescriptor[] {fooFile, barFile});
551 Descriptors.FileDescriptor.buildFrom(bazProto,
552 new FileDescriptor[] {barFile, fooFile});
553 }
554
555 public void testInvalidPublicDependency() throws Exception { 515 public void testInvalidPublicDependency() throws Exception {
556 FileDescriptorProto fooProto = FileDescriptorProto.newBuilder() 516 FileDescriptorProto fooProto = FileDescriptorProto.newBuilder()
557 .setName("foo.proto").build(); 517 .setName("foo.proto") .build();
558 FileDescriptorProto barProto = FileDescriptorProto.newBuilder() 518 FileDescriptorProto barProto = FileDescriptorProto.newBuilder()
559 .setName("boo.proto") 519 .setName("boo.proto")
560 .addDependency("foo.proto") 520 .addDependency("foo.proto")
561 .addPublicDependency(1) // Error, should be 0. 521 .addPublicDependency(1) // Error, should be 0.
562 .build(); 522 .build();
563 FileDescriptor fooFile = Descriptors.FileDescriptor.buildFrom(fooProto, 523 FileDescriptor fooFile = Descriptors.FileDescriptor.buildFrom(fooProto,
564 new FileDescriptor[0]); 524 new FileDescriptor[0]);
565 try { 525 try {
566 Descriptors.FileDescriptor.buildFrom(barProto, 526 Descriptors.FileDescriptor.buildFrom(barProto,
567 new FileDescriptor[] {fooFile}); 527 new FileDescriptor[] {fooFile});
568 fail("DescriptorValidationException expected"); 528 fail("DescriptorValidationException expected");
569 } catch (DescriptorValidationException e) { 529 } catch (DescriptorValidationException e) {
570 assertTrue( 530 assertTrue(
571 e.getMessage().indexOf("Invalid public dependency index.") != -1); 531 e.getMessage().indexOf("Invalid public dependency index.") != -1);
572 } 532 }
573 } 533 }
574 534
575 public void testUnknownFieldsDenied() throws Exception {
576 FileDescriptorProto fooProto = FileDescriptorProto.newBuilder()
577 .setName("foo.proto")
578 .addMessageType(DescriptorProto.newBuilder()
579 .setName("Foo")
580 .addField(FieldDescriptorProto.newBuilder()
581 .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL)
582 .setTypeName("Bar")
583 .setName("bar")
584 .setNumber(1)))
585 .build();
586
587 try {
588 Descriptors.FileDescriptor.buildFrom(fooProto, new FileDescriptor[0]);
589 fail("DescriptorValidationException expected");
590 } catch (DescriptorValidationException e) {
591 assertTrue(e.getMessage().indexOf("Bar") != -1);
592 assertTrue(e.getMessage().indexOf("is not defined") != -1);
593 }
594 }
595
596 public void testUnknownFieldsAllowed() throws Exception {
597 FileDescriptorProto fooProto = FileDescriptorProto.newBuilder()
598 .setName("foo.proto")
599 .addDependency("bar.proto")
600 .addMessageType(DescriptorProto.newBuilder()
601 .setName("Foo")
602 .addField(FieldDescriptorProto.newBuilder()
603 .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL)
604 .setTypeName("Bar")
605 .setName("bar")
606 .setNumber(1)))
607 .build();
608 Descriptors.FileDescriptor.buildFrom(fooProto, new FileDescriptor[0], true);
609 }
610
611 public void testHiddenDependency() throws Exception { 535 public void testHiddenDependency() throws Exception {
612 FileDescriptorProto barProto = FileDescriptorProto.newBuilder() 536 FileDescriptorProto barProto = FileDescriptorProto.newBuilder()
613 .setName("bar.proto") 537 .setName("bar.proto")
614 .addMessageType(DescriptorProto.newBuilder().setName("Bar")) 538 .addMessageType(DescriptorProto.newBuilder().setName("Bar"))
615 .build(); 539 .build();
616 FileDescriptorProto forwardProto = FileDescriptorProto.newBuilder() 540 FileDescriptorProto forwardProto = FileDescriptorProto.newBuilder()
617 .setName("forward.proto") 541 .setName("forward.proto")
618 .addDependency("bar.proto") 542 .addDependency("bar.proto")
619 .build(); 543 .build();
620 FileDescriptorProto fooProto = FileDescriptorProto.newBuilder() 544 FileDescriptorProto fooProto = FileDescriptorProto.newBuilder()
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 .setName("bar") 588 .setName("bar")
665 .setNumber(1))) 589 .setNumber(1)))
666 .build(); 590 .build();
667 FileDescriptor barFile = Descriptors.FileDescriptor.buildFrom( 591 FileDescriptor barFile = Descriptors.FileDescriptor.buildFrom(
668 barProto, new FileDescriptor[0]); 592 barProto, new FileDescriptor[0]);
669 FileDescriptor forwardFile = Descriptors.FileDescriptor.buildFrom( 593 FileDescriptor forwardFile = Descriptors.FileDescriptor.buildFrom(
670 forwardProto, new FileDescriptor[]{barFile}); 594 forwardProto, new FileDescriptor[]{barFile});
671 Descriptors.FileDescriptor.buildFrom( 595 Descriptors.FileDescriptor.buildFrom(
672 fooProto, new FileDescriptor[] {forwardFile}); 596 fooProto, new FileDescriptor[] {forwardFile});
673 } 597 }
674 598
675 /** 599 /**
676 * Tests the translate/crosslink for an example with a more complex namespace 600 * Tests the translate/crosslink for an example with a more complex namespace
677 * referencing. 601 * referencing.
678 */ 602 */
679 public void testComplexNamespacePublicDependency() throws Exception { 603 public void testComplexNamespacePublicDependency() throws Exception {
680 FileDescriptorProto fooProto = FileDescriptorProto.newBuilder() 604 FileDescriptorProto fooProto = FileDescriptorProto.newBuilder()
681 .setName("bar.proto") 605 .setName("bar.proto")
682 .setPackage("a.b.c.d.bar.shared") 606 .setPackage("a.b.c.d.bar.shared")
683 .addEnumType(EnumDescriptorProto.newBuilder() 607 .addEnumType(EnumDescriptorProto.newBuilder()
684 .setName("MyEnum") 608 .setName("MyEnum")
(...skipping 28 matching lines...) Expand all
713 assertNotNull(desc.getFields()); 637 assertNotNull(desc.getFields());
714 List<FieldDescriptor> fieldlist = desc.getFields(); 638 List<FieldDescriptor> fieldlist = desc.getFields();
715 assertNotNull(fieldlist); 639 assertNotNull(fieldlist);
716 assertTrue(fieldlist.size() == 1); 640 assertTrue(fieldlist.size() == 1);
717 FieldDescriptor field = fieldlist.get(0); 641 FieldDescriptor field = fieldlist.get(0);
718 assertTrue(field.getType() == FieldDescriptor.Type.ENUM); 642 assertTrue(field.getType() == FieldDescriptor.Type.ENUM);
719 assertTrue(field.getEnumType().getName().equals("MyEnum")); 643 assertTrue(field.getEnumType().getName().equals("MyEnum"));
720 assertTrue(field.getEnumType().getFile().getName().equals("bar.proto")); 644 assertTrue(field.getEnumType().getFile().getName().equals("bar.proto"));
721 assertTrue(field.getEnumType().getFile().getPackage().equals( 645 assertTrue(field.getEnumType().getFile().getPackage().equals(
722 "a.b.c.d.bar.shared")); 646 "a.b.c.d.bar.shared"));
723 } 647 }
724 }
725
726 public void testOneofDescriptor() throws Exception {
727 Descriptor messageType = TestAllTypes.getDescriptor();
728 FieldDescriptor field =
729 messageType.findFieldByName("oneof_nested_message");
730 OneofDescriptor oneofDescriptor = field.getContainingOneof();
731 assertNotNull(oneofDescriptor);
732 assertSame(oneofDescriptor, messageType.getOneofs().get(0));
733 assertEquals("oneof_field", oneofDescriptor.getName());
734
735 assertEquals(4, oneofDescriptor.getFieldCount());
736 assertSame(oneofDescriptor.getField(1), field);
737
738 assertEquals(4, oneofDescriptor.getFields().size());
739 assertEquals(oneofDescriptor.getFields().get(1), field);
740 }
741
742 public void testMessageDescriptorExtensions() throws Exception {
743 assertFalse(TestAllTypes.getDescriptor().isExtendable());
744 assertTrue(TestAllExtensions.getDescriptor().isExtendable());
745 assertTrue(TestMultipleExtensionRanges.getDescriptor().isExtendable());
746
747 assertFalse(TestAllTypes.getDescriptor().isExtensionNumber(3));
748 assertTrue(TestAllExtensions.getDescriptor().isExtensionNumber(3));
749 assertTrue(TestMultipleExtensionRanges.getDescriptor().isExtensionNumber(42) );
750 assertFalse(TestMultipleExtensionRanges.getDescriptor().isExtensionNumber(43 ));
751 assertFalse(TestMultipleExtensionRanges.getDescriptor().isExtensionNumber(41 42));
752 assertTrue(TestMultipleExtensionRanges.getDescriptor().isExtensionNumber(414 3));
753 }
754
755 public void testReservedFields() {
756 Descriptor d = TestReservedFields.getDescriptor();
757 assertTrue(d.isReservedNumber(2));
758 assertFalse(d.isReservedNumber(8));
759 assertTrue(d.isReservedNumber(9));
760 assertTrue(d.isReservedNumber(10));
761 assertTrue(d.isReservedNumber(11));
762 assertFalse(d.isReservedNumber(12));
763 assertFalse(d.isReservedName("foo"));
764 assertTrue(d.isReservedName("bar"));
765 assertTrue(d.isReservedName("baz"));
766 }
767
768 public void testToString() {
769 assertEquals("protobuf_unittest.TestAllTypes.optional_uint64",
770 UnittestProto.TestAllTypes.getDescriptor().findFieldByNumber(
771 UnittestProto.TestAllTypes.OPTIONAL_UINT64_FIELD_NUMBER).toString()) ;
772 }
773
774 public void testPackedEnumField() throws Exception {
775 FileDescriptorProto fileDescriptorProto = FileDescriptorProto.newBuilder()
776 .setName("foo.proto")
777 .addEnumType(EnumDescriptorProto.newBuilder()
778 .setName("Enum")
779 .addValue(EnumValueDescriptorProto.newBuilder()
780 .setName("FOO")
781 .setNumber(1)
782 .build())
783 .build())
784 .addMessageType(DescriptorProto.newBuilder()
785 .setName("Message")
786 .addField(FieldDescriptorProto.newBuilder()
787 .setName("foo")
788 .setTypeName("Enum")
789 .setNumber(1)
790 .setLabel(FieldDescriptorProto.Label.LABEL_REPEATED)
791 .setOptions(DescriptorProtos.FieldOptions.newBuilder()
792 .setPacked(true)
793 .build())
794 .build())
795 .build())
796 .build();
797 Descriptors.FileDescriptor.buildFrom(
798 fileDescriptorProto, new FileDescriptor[0]);
799 } 648 }
800 } 649 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698