| Index: third_party/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/GeneratedMessageTest.java
|
| diff --git a/third_party/protobuf/java/core/src/test/java/com/google/protobuf/GeneratedMessageTest.java b/third_party/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/GeneratedMessageTest.java
|
| similarity index 57%
|
| copy from third_party/protobuf/java/core/src/test/java/com/google/protobuf/GeneratedMessageTest.java
|
| copy to third_party/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/GeneratedMessageTest.java
|
| index a9b8b6381a490e242177b70e8ef0a4948d4cc105..49f114643cea852005e2d06089d8e14bc89f5491 100644
|
| --- a/third_party/protobuf/java/core/src/test/java/com/google/protobuf/GeneratedMessageTest.java
|
| +++ b/third_party/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/GeneratedMessageTest.java
|
| @@ -1,6 +1,6 @@
|
| // Protocol Buffers - Google's data interchange format
|
| // Copyright 2008 Google Inc. All rights reserved.
|
| -// https://developers.google.com/protocol-buffers/
|
| +// http://code.google.com/p/protobuf/
|
| //
|
| // Redistribution and use in source and binary forms, with or without
|
| // modification, are permitted provided that the following conditions are
|
| @@ -28,26 +28,19 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -package com.google.protobuf;
|
| +package com.google.protobuf.test;
|
| +import com.google.protobuf.*;
|
|
|
| import com.google.protobuf.Descriptors.Descriptor;
|
| import com.google.protobuf.Descriptors.FieldDescriptor;
|
| -import com.google.protobuf.UnittestLite.TestAllExtensionsLite;
|
| import com.google.protobuf.test.UnittestImport;
|
| import protobuf_unittest.EnumWithNoOuter;
|
| import protobuf_unittest.MessageWithNoOuter;
|
| import protobuf_unittest.MultipleFilesTestProto;
|
| import protobuf_unittest.NestedExtension.MyNestedExtension;
|
| -import protobuf_unittest.NestedExtensionLite.MyNestedExtensionLite;
|
| import protobuf_unittest.NonNestedExtension;
|
| import protobuf_unittest.NonNestedExtension.MessageToBeExtended;
|
| import protobuf_unittest.NonNestedExtension.MyNonNestedExtension;
|
| -import protobuf_unittest.NonNestedExtensionLite;
|
| -import protobuf_unittest.NonNestedExtensionLite.MessageLiteToBeExtended;
|
| -import protobuf_unittest.NonNestedExtensionLite.MyNonNestedExtensionLite;
|
| -import protobuf_unittest.OuterClassNameTest2OuterClass;
|
| -import protobuf_unittest.OuterClassNameTest3OuterClass;
|
| -import protobuf_unittest.OuterClassNameTestOuterClass;
|
| import protobuf_unittest.ServiceWithNoOuter;
|
| import protobuf_unittest.UnittestOptimizeFor.TestOptimizedForSize;
|
| import protobuf_unittest.UnittestOptimizeFor.TestOptionalOptimizedForSize;
|
| @@ -56,13 +49,11 @@ import protobuf_unittest.UnittestProto;
|
| import protobuf_unittest.UnittestProto.ForeignEnum;
|
| import protobuf_unittest.UnittestProto.ForeignMessage;
|
| import protobuf_unittest.UnittestProto.ForeignMessageOrBuilder;
|
| -import protobuf_unittest.UnittestProto.NestedTestAllTypes;
|
| import protobuf_unittest.UnittestProto.TestAllExtensions;
|
| import protobuf_unittest.UnittestProto.TestAllTypes;
|
| import protobuf_unittest.UnittestProto.TestAllTypes.NestedMessage;
|
| import protobuf_unittest.UnittestProto.TestAllTypesOrBuilder;
|
| import protobuf_unittest.UnittestProto.TestExtremeDefaultValues;
|
| -import protobuf_unittest.UnittestProto.TestOneof2;
|
| import protobuf_unittest.UnittestProto.TestPackedTypes;
|
| import protobuf_unittest.UnittestProto.TestUnpackedTypes;
|
|
|
| @@ -74,7 +65,6 @@ import java.io.ObjectInputStream;
|
| import java.io.ObjectOutputStream;
|
| import java.util.Arrays;
|
| import java.util.Collections;
|
| -import java.util.Iterator;
|
| import java.util.List;
|
|
|
| /**
|
| @@ -155,19 +145,6 @@ public class GeneratedMessageTest extends TestCase {
|
| assertEquals(2, value2.getRepeatedForeignMessage(0).getC());
|
| }
|
|
|
| - public void testProtosShareRepeatedArraysIfDidntChange() throws Exception {
|
| - TestAllTypes.Builder builder = TestAllTypes.newBuilder();
|
| - builder.addRepeatedInt32(100);
|
| - builder.addRepeatedForeignMessage(ForeignMessage.getDefaultInstance());
|
| -
|
| - TestAllTypes value1 = builder.build();
|
| - TestAllTypes value2 = value1.toBuilder().build();
|
| -
|
| - assertSame(value1.getRepeatedInt32List(), value2.getRepeatedInt32List());
|
| - assertSame(value1.getRepeatedForeignMessageList(),
|
| - value2.getRepeatedForeignMessageList());
|
| - }
|
| -
|
| public void testRepeatedArraysAreImmutable() throws Exception {
|
| TestAllTypes.Builder builder = TestAllTypes.newBuilder();
|
| builder.addRepeatedInt32(100);
|
| @@ -187,7 +164,8 @@ public class GeneratedMessageTest extends TestCase {
|
| }
|
|
|
| public void testParsedMessagesAreImmutable() throws Exception {
|
| - TestAllTypes value = TestAllTypes.parser().parseFrom(TestUtil.getAllSet().toByteString());
|
| + TestAllTypes value = TestAllTypes.PARSER.parseFrom(
|
| + TestUtil.getAllSet().toByteString());
|
| assertIsUnmodifiable(value.getRepeatedInt32List());
|
| assertIsUnmodifiable(value.getRepeatedInt64List());
|
| assertIsUnmodifiable(value.getRepeatedUint32List());
|
| @@ -401,44 +379,6 @@ public class GeneratedMessageTest extends TestCase {
|
| // We expect this exception.
|
| }
|
| }
|
| -
|
| - public void testRepeatedAppendIterateOnlyOnce() throws Exception {
|
| - // Create a Iterable that can only be iterated once.
|
| - Iterable<String> stringIterable = new Iterable<String>() {
|
| - private boolean called = false;
|
| - @Override
|
| - public Iterator<String> iterator() {
|
| - if (called) {
|
| - throw new IllegalStateException();
|
| - }
|
| - called = true;
|
| - return Arrays.asList("one", "two", "three").iterator();
|
| - }
|
| - };
|
| - TestAllTypes.Builder builder = TestAllTypes.newBuilder();
|
| - builder.addAllRepeatedString(stringIterable);
|
| - assertEquals(3, builder.getRepeatedStringCount());
|
| - assertEquals("one", builder.getRepeatedString(0));
|
| - assertEquals("two", builder.getRepeatedString(1));
|
| - assertEquals("three", builder.getRepeatedString(2));
|
| -
|
| - try {
|
| - builder.addAllRepeatedString(stringIterable);
|
| - fail("Exception was not thrown");
|
| - } catch (IllegalStateException e) {
|
| - // We expect this exception.
|
| - }
|
| - }
|
| -
|
| - public void testMergeFromOtherRejectsNull() throws Exception {
|
| - try {
|
| - TestAllTypes.Builder builder = TestAllTypes.newBuilder();
|
| - builder.mergeFrom((TestAllTypes) null);
|
| - fail("Exception was not thrown");
|
| - } catch (NullPointerException e) {
|
| - // We expect this exception.
|
| - }
|
| - }
|
|
|
| public void testSettingForeignMessageUsingBuilder() throws Exception {
|
| TestAllTypes message = TestAllTypes.newBuilder()
|
| @@ -536,34 +476,6 @@ public class GeneratedMessageTest extends TestCase {
|
| TestAllTypes.newBuilder().build());
|
| }
|
|
|
| - public void testReflectionGetOneof() throws Exception {
|
| - TestAllTypes.Builder builder = TestAllTypes.newBuilder();
|
| - reflectionTester.setAllFieldsViaReflection(builder);
|
| - Descriptors.OneofDescriptor oneof =
|
| - TestAllTypes.getDescriptor().getOneofs().get(0);
|
| - Descriptors.FieldDescriptor field =
|
| - TestAllTypes.getDescriptor().findFieldByName("oneof_bytes");
|
| - assertSame(field, builder.getOneofFieldDescriptor(oneof));
|
| -
|
| - TestAllTypes message = builder.build();
|
| - assertSame(field, message.getOneofFieldDescriptor(oneof));
|
| - }
|
| -
|
| - public void testReflectionClearOneof() throws Exception {
|
| - TestAllTypes.Builder builder = TestAllTypes.newBuilder();
|
| - reflectionTester.setAllFieldsViaReflection(builder);
|
| - Descriptors.OneofDescriptor oneof =
|
| - TestAllTypes.getDescriptor().getOneofs().get(0);
|
| - Descriptors.FieldDescriptor field =
|
| - TestAllTypes.getDescriptor().findFieldByName("oneof_bytes");
|
| -
|
| - assertTrue(builder.hasOneof(oneof));
|
| - assertTrue(builder.hasField(field));
|
| - builder.clearOneof(oneof);
|
| - assertFalse(builder.hasOneof(oneof));
|
| - assertFalse(builder.hasField(field));
|
| - }
|
| -
|
| public void testEnumInterface() throws Exception {
|
| assertTrue(TestAllTypes.getDefaultInstance().getDefaultNestedEnum()
|
| instanceof ProtocolMessageEnum);
|
| @@ -620,21 +532,6 @@ public class GeneratedMessageTest extends TestCase {
|
| TestUtil.assertExtensionsClear(TestAllExtensions.newBuilder().build());
|
| }
|
|
|
| - public void testUnsetRepeatedExtensionGetField() {
|
| - TestAllExtensions message = TestAllExtensions.getDefaultInstance();
|
| - Object value;
|
| -
|
| - value = message.getField(UnittestProto.repeatedStringExtension.getDescriptor());
|
| - assertTrue(value instanceof List);
|
| - assertTrue(((List<?>) value).isEmpty());
|
| - assertIsUnmodifiable((List<?>) value);
|
| -
|
| - value = message.getField(UnittestProto.repeatedNestedMessageExtension.getDescriptor());
|
| - assertTrue(value instanceof List);
|
| - assertTrue(((List<?>) value).isEmpty());
|
| - assertIsUnmodifiable((List<?>) value);
|
| - }
|
| -
|
| public void testExtensionReflectionGetters() throws Exception {
|
| TestAllExtensions.Builder builder = TestAllExtensions.newBuilder();
|
| TestUtil.setAllExtensions(builder);
|
| @@ -714,81 +611,8 @@ public class GeneratedMessageTest extends TestCase {
|
| }
|
|
|
| // =================================================================
|
| - // Lite Extensions.
|
| -
|
| - // We test lite extensions directly because they have a separate
|
| - // implementation from full extensions. In contrast, we do not test
|
| - // lite fields directly since they are implemented exactly the same as
|
| - // regular fields.
|
| -
|
| - public void testLiteExtensionMessageOrBuilder() throws Exception {
|
| - TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.newBuilder();
|
| - TestUtilLite.setAllExtensions(builder);
|
| - TestUtil.assertAllExtensionsSet(builder);
|
| -
|
| - TestAllExtensionsLite message = builder.build();
|
| - TestUtil.assertAllExtensionsSet(message);
|
| - }
|
| -
|
| - public void testLiteExtensionRepeatedSetters() throws Exception {
|
| - TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.newBuilder();
|
| - TestUtilLite.setAllExtensions(builder);
|
| - TestUtilLite.modifyRepeatedExtensions(builder);
|
| - TestUtil.assertRepeatedExtensionsModified(builder);
|
| -
|
| - TestAllExtensionsLite message = builder.build();
|
| - TestUtil.assertRepeatedExtensionsModified(message);
|
| - }
|
| -
|
| - public void testLiteExtensionDefaults() throws Exception {
|
| - TestUtil.assertExtensionsClear(TestAllExtensionsLite.getDefaultInstance());
|
| - TestUtil.assertExtensionsClear(TestAllExtensionsLite.newBuilder().build());
|
| - }
|
| -
|
| - public void testClearLiteExtension() throws Exception {
|
| - // clearExtension() is not actually used in TestUtil, so try it manually.
|
| - assertFalse(
|
| - TestAllExtensionsLite.newBuilder()
|
| - .setExtension(UnittestLite.optionalInt32ExtensionLite, 1)
|
| - .clearExtension(UnittestLite.optionalInt32ExtensionLite)
|
| - .hasExtension(UnittestLite.optionalInt32ExtensionLite));
|
| - assertEquals(0,
|
| - TestAllExtensionsLite.newBuilder()
|
| - .addExtension(UnittestLite.repeatedInt32ExtensionLite, 1)
|
| - .clearExtension(UnittestLite.repeatedInt32ExtensionLite)
|
| - .getExtensionCount(UnittestLite.repeatedInt32ExtensionLite));
|
| - }
|
| -
|
| - public void testLiteExtensionCopy() throws Exception {
|
| - TestAllExtensionsLite original = TestUtilLite.getAllLiteExtensionsSet();
|
| - TestAllExtensionsLite copy =
|
| - TestAllExtensionsLite.newBuilder(original).build();
|
| - TestUtil.assertAllExtensionsSet(copy);
|
| - }
|
| -
|
| - public void testLiteExtensionMergeFrom() throws Exception {
|
| - TestAllExtensionsLite original =
|
| - TestAllExtensionsLite.newBuilder()
|
| - .setExtension(UnittestLite.optionalInt32ExtensionLite, 1).build();
|
| - TestAllExtensionsLite merged =
|
| - TestAllExtensionsLite.newBuilder().mergeFrom(original).build();
|
| - assertTrue(merged.hasExtension(UnittestLite.optionalInt32ExtensionLite));
|
| - assertEquals(
|
| - 1, (int) merged.getExtension(UnittestLite.optionalInt32ExtensionLite));
|
| - }
|
| -
|
| - // =================================================================
|
| // multiple_files_test
|
|
|
| - // Test that custom options of an file level enum are properly initialized.
|
| - // This test needs to be put before any other access to MultipleFilesTestProto
|
| - // or messages defined in multiple_files_test.proto because the class loading
|
| - // order affects initialization process of custom options.
|
| - public void testEnumValueOptionsInMultipleFilesMode() throws Exception {
|
| - assertEquals(12345, EnumWithNoOuter.FOO.getValueDescriptor().getOptions()
|
| - .getExtension(MultipleFilesTestProto.enumValueOption).intValue());
|
| - }
|
| -
|
| public void testMultipleFilesOption() throws Exception {
|
| // We mostly just want to check that things compile.
|
| MessageWithNoOuter message =
|
| @@ -887,7 +711,7 @@ public class GeneratedMessageTest extends TestCase {
|
| UnittestProto.TestRecursiveMessage message =
|
| UnittestProto.TestRecursiveMessage.getDefaultInstance();
|
| assertTrue(message != null);
|
| - assertNotNull(message.getA());
|
| + assertTrue(message.getA() != null);
|
| assertTrue(message.getA() == message);
|
| }
|
|
|
| @@ -950,107 +774,6 @@ public class GeneratedMessageTest extends TestCase {
|
| MyNestedExtension.recursiveExtension.getDescriptor().getName());
|
| }
|
|
|
| - public void testNonNestedExtensionLiteInitialization() {
|
| - assertTrue(NonNestedExtensionLite.nonNestedExtensionLite
|
| - .getMessageDefaultInstance() instanceof MyNonNestedExtensionLite);
|
| - }
|
| -
|
| - public void testNestedExtensionLiteInitialization() {
|
| - assertTrue(MyNestedExtensionLite.recursiveExtensionLite
|
| - .getMessageDefaultInstance() instanceof MessageLiteToBeExtended);
|
| - }
|
| -
|
| - public void testInvalidations() throws Exception {
|
| - GeneratedMessage.enableAlwaysUseFieldBuildersForTesting();
|
| - TestAllTypes.NestedMessage nestedMessage1 =
|
| - TestAllTypes.NestedMessage.newBuilder().build();
|
| - TestAllTypes.NestedMessage nestedMessage2 =
|
| - TestAllTypes.NestedMessage.newBuilder().build();
|
| -
|
| - // Set all three flavors (enum, primitive, message and singular/repeated)
|
| - // and verify no invalidations fired
|
| - TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent();
|
| -
|
| - TestAllTypes.Builder builder = (TestAllTypes.Builder)
|
| - ((GeneratedMessage) TestAllTypes.getDefaultInstance()).
|
| - newBuilderForType(mockParent);
|
| - builder.setOptionalInt32(1);
|
| - builder.setOptionalNestedEnum(TestAllTypes.NestedEnum.BAR);
|
| - builder.setOptionalNestedMessage(nestedMessage1);
|
| - builder.addRepeatedInt32(1);
|
| - builder.addRepeatedNestedEnum(TestAllTypes.NestedEnum.BAR);
|
| - builder.addRepeatedNestedMessage(nestedMessage1);
|
| - assertEquals(0, mockParent.getInvalidationCount());
|
| -
|
| - // Now tell it we want changes and make sure it's only fired once
|
| - // And do this for each flavor
|
| -
|
| - // primitive single
|
| - builder.buildPartial();
|
| - builder.setOptionalInt32(2);
|
| - builder.setOptionalInt32(3);
|
| - assertEquals(1, mockParent.getInvalidationCount());
|
| -
|
| - // enum single
|
| - builder.buildPartial();
|
| - builder.setOptionalNestedEnum(TestAllTypes.NestedEnum.BAZ);
|
| - builder.setOptionalNestedEnum(TestAllTypes.NestedEnum.BAR);
|
| - assertEquals(2, mockParent.getInvalidationCount());
|
| -
|
| - // message single
|
| - builder.buildPartial();
|
| - builder.setOptionalNestedMessage(nestedMessage2);
|
| - builder.setOptionalNestedMessage(nestedMessage1);
|
| - assertEquals(3, mockParent.getInvalidationCount());
|
| -
|
| - // primitive repeated
|
| - builder.buildPartial();
|
| - builder.addRepeatedInt32(2);
|
| - builder.addRepeatedInt32(3);
|
| - assertEquals(4, mockParent.getInvalidationCount());
|
| -
|
| - // enum repeated
|
| - builder.buildPartial();
|
| - builder.addRepeatedNestedEnum(TestAllTypes.NestedEnum.BAZ);
|
| - builder.addRepeatedNestedEnum(TestAllTypes.NestedEnum.BAZ);
|
| - assertEquals(5, mockParent.getInvalidationCount());
|
| -
|
| - // message repeated
|
| - builder.buildPartial();
|
| - builder.addRepeatedNestedMessage(nestedMessage2);
|
| - builder.addRepeatedNestedMessage(nestedMessage1);
|
| - assertEquals(6, mockParent.getInvalidationCount());
|
| -
|
| - }
|
| -
|
| - public void testInvalidations_Extensions() throws Exception {
|
| - TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent();
|
| -
|
| - TestAllExtensions.Builder builder = (TestAllExtensions.Builder)
|
| - ((GeneratedMessage) TestAllExtensions.getDefaultInstance()).
|
| - newBuilderForType(mockParent);
|
| -
|
| - builder.addExtension(UnittestProto.repeatedInt32Extension, 1);
|
| - builder.setExtension(UnittestProto.repeatedInt32Extension, 0, 2);
|
| - builder.clearExtension(UnittestProto.repeatedInt32Extension);
|
| - assertEquals(0, mockParent.getInvalidationCount());
|
| -
|
| - // Now tell it we want changes and make sure it's only fired once
|
| - builder.buildPartial();
|
| - builder.addExtension(UnittestProto.repeatedInt32Extension, 2);
|
| - builder.addExtension(UnittestProto.repeatedInt32Extension, 3);
|
| - assertEquals(1, mockParent.getInvalidationCount());
|
| -
|
| - builder.buildPartial();
|
| - builder.setExtension(UnittestProto.repeatedInt32Extension, 0, 4);
|
| - builder.setExtension(UnittestProto.repeatedInt32Extension, 1, 5);
|
| - assertEquals(2, mockParent.getInvalidationCount());
|
| -
|
| - builder.buildPartial();
|
| - builder.clearExtension(UnittestProto.repeatedInt32Extension);
|
| - builder.clearExtension(UnittestProto.repeatedInt32Extension);
|
| - assertEquals(3, mockParent.getInvalidationCount());
|
| - }
|
|
|
| public void testBaseMessageOrBuilder() {
|
| // Mostly just makes sure the base interface exists and has some methods.
|
| @@ -1235,442 +958,4 @@ public class GeneratedMessageTest extends TestCase {
|
| // We expect this exception.
|
| }
|
| }
|
| -
|
| - // Test that when the default outer class name conflicts with another type
|
| - // defined in the proto the compiler will append a suffix to avoid the
|
| - // conflict.
|
| - public void testConflictingOuterClassName() {
|
| - // We just need to make sure we can refer to the outer class with the
|
| - // expected name. There is nothing else to test.
|
| - OuterClassNameTestOuterClass.OuterClassNameTest message =
|
| - OuterClassNameTestOuterClass.OuterClassNameTest.newBuilder().build();
|
| - assertTrue(message.getDescriptorForType() ==
|
| - OuterClassNameTestOuterClass.OuterClassNameTest.getDescriptor());
|
| -
|
| - OuterClassNameTest2OuterClass.TestMessage2.NestedMessage.OuterClassNameTest2
|
| - message2 = OuterClassNameTest2OuterClass.TestMessage2.NestedMessage
|
| - .OuterClassNameTest2.newBuilder().build();
|
| - assertEquals(0, message2.getSerializedSize());
|
| -
|
| - OuterClassNameTest3OuterClass.TestMessage3.NestedMessage.OuterClassNameTest3
|
| - enumValue = OuterClassNameTest3OuterClass.TestMessage3.NestedMessage
|
| - .OuterClassNameTest3.DUMMY_VALUE;
|
| - assertEquals(1, enumValue.getNumber());
|
| - }
|
| -
|
| - // =================================================================
|
| - // oneof generated code test
|
| - public void testOneofEnumCase() throws Exception {
|
| - TestOneof2 message = TestOneof2.newBuilder()
|
| - .setFooInt(123).setFooString("foo").setFooCord("bar").build();
|
| - TestUtil.assertAtMostOneFieldSetOneof(message);
|
| - }
|
| -
|
| - public void testClearOneof() throws Exception {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder().setFooInt(123);
|
| - assertEquals(TestOneof2.FooCase.FOO_INT, builder.getFooCase());
|
| - builder.clearFoo();
|
| - assertEquals(TestOneof2.FooCase.FOO_NOT_SET, builder.getFooCase());
|
| - }
|
| -
|
| - public void testSetOneofClearsOthers() throws Exception {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - TestOneof2 message =
|
| - builder.setFooInt(123).setFooString("foo").buildPartial();
|
| - assertTrue(message.hasFooString());
|
| - TestUtil.assertAtMostOneFieldSetOneof(message);
|
| -
|
| - message = builder.setFooCord("bar").buildPartial();
|
| - assertTrue(message.hasFooCord());
|
| - TestUtil.assertAtMostOneFieldSetOneof(message);
|
| -
|
| - message = builder.setFooStringPiece("baz").buildPartial();
|
| - assertTrue(message.hasFooStringPiece());
|
| - TestUtil.assertAtMostOneFieldSetOneof(message);
|
| -
|
| - message = builder.setFooBytes(TestUtil.toBytes("qux")).buildPartial();
|
| - assertTrue(message.hasFooBytes());
|
| - TestUtil.assertAtMostOneFieldSetOneof(message);
|
| -
|
| - message = builder.setFooEnum(TestOneof2.NestedEnum.FOO).buildPartial();
|
| - assertTrue(message.hasFooEnum());
|
| - TestUtil.assertAtMostOneFieldSetOneof(message);
|
| -
|
| - message = builder.setFooMessage(
|
| - TestOneof2.NestedMessage.newBuilder().setQuxInt(234).build()).buildPartial();
|
| - assertTrue(message.hasFooMessage());
|
| - TestUtil.assertAtMostOneFieldSetOneof(message);
|
| -
|
| - message = builder.setFooInt(123).buildPartial();
|
| - assertTrue(message.hasFooInt());
|
| - TestUtil.assertAtMostOneFieldSetOneof(message);
|
| - }
|
| -
|
| - public void testOneofTypes() throws Exception {
|
| - // Primitive
|
| - {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - assertEquals(builder.getFooInt(), 0);
|
| - assertFalse(builder.hasFooInt());
|
| - assertTrue(builder.setFooInt(123).hasFooInt());
|
| - assertEquals(builder.getFooInt(), 123);
|
| - TestOneof2 message = builder.buildPartial();
|
| - assertTrue(message.hasFooInt());
|
| - assertEquals(message.getFooInt(), 123);
|
| -
|
| - assertFalse(builder.clearFooInt().hasFooInt());
|
| - TestOneof2 message2 = builder.build();
|
| - assertFalse(message2.hasFooInt());
|
| - assertEquals(message2.getFooInt(), 0);
|
| - }
|
| -
|
| - // Enum
|
| - {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - assertEquals(builder.getFooEnum(), TestOneof2.NestedEnum.FOO);
|
| - assertTrue(builder.setFooEnum(TestOneof2.NestedEnum.BAR).hasFooEnum());
|
| - assertEquals(builder.getFooEnum(), TestOneof2.NestedEnum.BAR);
|
| - TestOneof2 message = builder.buildPartial();
|
| - assertTrue(message.hasFooEnum());
|
| - assertEquals(message.getFooEnum(), TestOneof2.NestedEnum.BAR);
|
| -
|
| - assertFalse(builder.clearFooEnum().hasFooEnum());
|
| - TestOneof2 message2 = builder.build();
|
| - assertFalse(message2.hasFooEnum());
|
| - assertEquals(message2.getFooEnum(), TestOneof2.NestedEnum.FOO);
|
| - }
|
| -
|
| - // String
|
| - {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - assertEquals(builder.getFooString(), "");
|
| - builder.setFooString("foo");
|
| - assertTrue(builder.hasFooString());
|
| - assertEquals(builder.getFooString(), "foo");
|
| - TestOneof2 message = builder.buildPartial();
|
| - assertTrue(message.hasFooString());
|
| - assertEquals(message.getFooString(), "foo");
|
| - assertEquals(message.getFooStringBytes(), TestUtil.toBytes("foo"));
|
| -
|
| - assertFalse(builder.clearFooString().hasFooString());
|
| - TestOneof2 message2 = builder.buildPartial();
|
| - assertFalse(message2.hasFooString());
|
| - assertEquals(message2.getFooString(), "");
|
| - assertEquals(message2.getFooStringBytes(), TestUtil.toBytes(""));
|
| -
|
| - // Get method should not change the oneof value.
|
| - builder.setFooInt(123);
|
| - assertEquals(builder.getFooString(), "");
|
| - assertEquals(builder.getFooStringBytes(), TestUtil.toBytes(""));
|
| - assertEquals(123, builder.getFooInt());
|
| -
|
| - message = builder.build();
|
| - assertEquals(message.getFooString(), "");
|
| - assertEquals(message.getFooStringBytes(), TestUtil.toBytes(""));
|
| - assertEquals(123, message.getFooInt());
|
| - }
|
| -
|
| - // Cord
|
| - {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - assertEquals(builder.getFooCord(), "");
|
| - builder.setFooCord("foo");
|
| - assertTrue(builder.hasFooCord());
|
| - assertEquals(builder.getFooCord(), "foo");
|
| - TestOneof2 message = builder.buildPartial();
|
| - assertTrue(message.hasFooCord());
|
| - assertEquals(message.getFooCord(), "foo");
|
| - assertEquals(message.getFooCordBytes(), TestUtil.toBytes("foo"));
|
| -
|
| - assertFalse(builder.clearFooCord().hasFooCord());
|
| - TestOneof2 message2 = builder.build();
|
| - assertFalse(message2.hasFooCord());
|
| - assertEquals(message2.getFooCord(), "");
|
| - assertEquals(message2.getFooCordBytes(), TestUtil.toBytes(""));
|
| - }
|
| -
|
| - // StringPiece
|
| - {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - assertEquals(builder.getFooStringPiece(), "");
|
| - builder.setFooStringPiece("foo");
|
| - assertTrue(builder.hasFooStringPiece());
|
| - assertEquals(builder.getFooStringPiece(), "foo");
|
| - TestOneof2 message = builder.buildPartial();
|
| - assertTrue(message.hasFooStringPiece());
|
| - assertEquals(message.getFooStringPiece(), "foo");
|
| - assertEquals(message.getFooStringPieceBytes(), TestUtil.toBytes("foo"));
|
| -
|
| - assertFalse(builder.clearFooStringPiece().hasFooStringPiece());
|
| - TestOneof2 message2 = builder.build();
|
| - assertFalse(message2.hasFooStringPiece());
|
| - assertEquals(message2.getFooStringPiece(), "");
|
| - assertEquals(message2.getFooStringPieceBytes(), TestUtil.toBytes(""));
|
| - }
|
| -
|
| - // Message
|
| - {
|
| - // set
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - assertEquals(builder.getFooMessage().getQuxInt(), 0);
|
| - builder.setFooMessage(
|
| - TestOneof2.NestedMessage.newBuilder().setQuxInt(234).build());
|
| - assertTrue(builder.hasFooMessage());
|
| - assertEquals(builder.getFooMessage().getQuxInt(), 234);
|
| - TestOneof2 message = builder.buildPartial();
|
| - assertTrue(message.hasFooMessage());
|
| - assertEquals(message.getFooMessage().getQuxInt(), 234);
|
| -
|
| - // clear
|
| - assertFalse(builder.clearFooMessage().hasFooString());
|
| - message = builder.build();
|
| - assertFalse(message.hasFooMessage());
|
| - assertEquals(message.getFooMessage().getQuxInt(), 0);
|
| -
|
| - // nested builder
|
| - builder = TestOneof2.newBuilder();
|
| - assertSame(builder.getFooMessageOrBuilder(),
|
| - TestOneof2.NestedMessage.getDefaultInstance());
|
| - assertFalse(builder.hasFooMessage());
|
| - builder.getFooMessageBuilder().setQuxInt(123);
|
| - assertTrue(builder.hasFooMessage());
|
| - assertEquals(builder.getFooMessage().getQuxInt(), 123);
|
| - message = builder.build();
|
| - assertTrue(message.hasFooMessage());
|
| - assertEquals(message.getFooMessage().getQuxInt(), 123);
|
| - }
|
| -
|
| - // LazyMessage is tested in LazyMessageLiteTest.java
|
| - }
|
| -
|
| - public void testOneofMerge() throws Exception {
|
| - // Primitive Type
|
| - {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - TestOneof2 message = builder.setFooInt(123).build();
|
| - TestOneof2 message2 = TestOneof2.newBuilder().mergeFrom(message).build();
|
| - assertTrue(message2.hasFooInt());
|
| - assertEquals(message2.getFooInt(), 123);
|
| - }
|
| -
|
| - // String
|
| - {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - TestOneof2 message = builder.setFooString("foo").build();
|
| - TestOneof2 message2 = TestOneof2.newBuilder().mergeFrom(message).build();
|
| - assertTrue(message2.hasFooString());
|
| - assertEquals(message2.getFooString(), "foo");
|
| - }
|
| -
|
| - // Enum
|
| - {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - TestOneof2 message = builder.setFooEnum(TestOneof2.NestedEnum.BAR).build();
|
| - TestOneof2 message2 = TestOneof2.newBuilder().mergeFrom(message).build();
|
| - assertTrue(message2.hasFooEnum());
|
| - assertEquals(message2.getFooEnum(), TestOneof2.NestedEnum.BAR);
|
| - }
|
| -
|
| - // Message
|
| - {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - TestOneof2 message = builder.setFooMessage(
|
| - TestOneof2.NestedMessage.newBuilder().setQuxInt(234).build()).build();
|
| - TestOneof2 message2 = TestOneof2.newBuilder().mergeFrom(message).build();
|
| - assertTrue(message2.hasFooMessage());
|
| - assertEquals(message2.getFooMessage().getQuxInt(), 234);
|
| - }
|
| - }
|
| -
|
| - public void testOneofSerialization() throws Exception {
|
| - // Primitive Type
|
| - {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - TestOneof2 message = builder.setFooInt(123).build();
|
| - ByteString serialized = message.toByteString();
|
| - TestOneof2 message2 = TestOneof2.parseFrom(serialized);
|
| - assertTrue(message2.hasFooInt());
|
| - assertEquals(message2.getFooInt(), 123);
|
| - }
|
| -
|
| - // String
|
| - {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - TestOneof2 message = builder.setFooString("foo").build();
|
| - ByteString serialized = message.toByteString();
|
| - TestOneof2 message2 = TestOneof2.parseFrom(serialized);
|
| - assertTrue(message2.hasFooString());
|
| - assertEquals(message2.getFooString(), "foo");
|
| - }
|
| -
|
| - // Enum
|
| - {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - TestOneof2 message = builder.setFooEnum(TestOneof2.NestedEnum.BAR).build();
|
| - ByteString serialized = message.toByteString();
|
| - TestOneof2 message2 = TestOneof2.parseFrom(serialized);
|
| - assertTrue(message2.hasFooEnum());
|
| - assertEquals(message2.getFooEnum(), TestOneof2.NestedEnum.BAR);
|
| - }
|
| -
|
| - // Message
|
| - {
|
| - TestOneof2.Builder builder = TestOneof2.newBuilder();
|
| - TestOneof2 message = builder.setFooMessage(
|
| - TestOneof2.NestedMessage.newBuilder().setQuxInt(234).build()).build();
|
| - ByteString serialized = message.toByteString();
|
| - TestOneof2 message2 = TestOneof2.parseFrom(serialized);
|
| - assertTrue(message2.hasFooMessage());
|
| - assertEquals(message2.getFooMessage().getQuxInt(), 234);
|
| - }
|
| - }
|
| -
|
| - public void testOneofNestedBuilderOnChangePropagation() {
|
| - NestedTestAllTypes.Builder parentBuilder = NestedTestAllTypes.newBuilder();
|
| - TestAllTypes.Builder builder = parentBuilder.getPayloadBuilder();
|
| - builder.getOneofNestedMessageBuilder();
|
| - assertTrue(builder.hasOneofNestedMessage());
|
| - assertTrue(parentBuilder.hasPayload());
|
| - NestedTestAllTypes message = parentBuilder.build();
|
| - assertTrue(message.hasPayload());
|
| - assertTrue(message.getPayload().hasOneofNestedMessage());
|
| - }
|
| -
|
| - public void testGetRepeatedFieldBuilder() {
|
| - Descriptor descriptor = TestAllTypes.getDescriptor();
|
| -
|
| - FieldDescriptor fieldDescriptor =
|
| - descriptor.findFieldByName("repeated_nested_message");
|
| - FieldDescriptor foreignFieldDescriptor =
|
| - descriptor.findFieldByName("repeated_foreign_message");
|
| - FieldDescriptor importFieldDescriptor =
|
| - descriptor.findFieldByName("repeated_import_message");
|
| -
|
| - // Mutate the message with new field builder
|
| - // Mutate nested message
|
| - TestAllTypes.Builder builder1 = TestAllTypes.newBuilder();
|
| - Message.Builder fieldBuilder1 = builder1.newBuilderForField(
|
| - fieldDescriptor);
|
| - FieldDescriptor subFieldDescriptor1 =
|
| - fieldBuilder1.getDescriptorForType().findFieldByName("bb");
|
| - fieldBuilder1.setField(subFieldDescriptor1, 1);
|
| - builder1.addRepeatedField(fieldDescriptor, fieldBuilder1.build());
|
| -
|
| - // Mutate foreign message
|
| - Message.Builder foreignFieldBuilder1 = builder1.newBuilderForField(
|
| - foreignFieldDescriptor);
|
| - FieldDescriptor subForeignFieldDescriptor1 =
|
| - foreignFieldBuilder1.getDescriptorForType().findFieldByName("c");
|
| - foreignFieldBuilder1.setField(subForeignFieldDescriptor1, 2);
|
| - builder1.addRepeatedField(foreignFieldDescriptor,
|
| - foreignFieldBuilder1.build());
|
| -
|
| - // Mutate import message
|
| - Message.Builder importFieldBuilder1 = builder1.newBuilderForField(
|
| - importFieldDescriptor);
|
| - FieldDescriptor subImportFieldDescriptor1 =
|
| - importFieldBuilder1.getDescriptorForType().findFieldByName("d");
|
| - importFieldBuilder1.setField(subImportFieldDescriptor1, 3);
|
| - builder1.addRepeatedField(importFieldDescriptor,
|
| - importFieldBuilder1.build());
|
| -
|
| - Message newMessage1 = builder1.build();
|
| -
|
| - // Mutate the message with existing field builder
|
| - // Mutate nested message
|
| - TestAllTypes.Builder builder2 = TestAllTypes.newBuilder();
|
| - builder2.addRepeatedNestedMessageBuilder();
|
| - Message.Builder fieldBuilder2 = builder2.getRepeatedFieldBuilder(
|
| - fieldDescriptor, 0);
|
| - FieldDescriptor subFieldDescriptor2 =
|
| - fieldBuilder2.getDescriptorForType().findFieldByName("bb");
|
| - fieldBuilder2.setField(subFieldDescriptor2, 1);
|
| -
|
| - // Mutate foreign message
|
| - Message.Builder foreignFieldBuilder2 = builder2.newBuilderForField(
|
| - foreignFieldDescriptor);
|
| - FieldDescriptor subForeignFieldDescriptor2 =
|
| - foreignFieldBuilder2.getDescriptorForType().findFieldByName("c");
|
| - foreignFieldBuilder2.setField(subForeignFieldDescriptor2, 2);
|
| - builder2.addRepeatedField(foreignFieldDescriptor,
|
| - foreignFieldBuilder2.build());
|
| -
|
| - // Mutate import message
|
| - Message.Builder importFieldBuilder2 = builder2.newBuilderForField(
|
| - importFieldDescriptor);
|
| - FieldDescriptor subImportFieldDescriptor2 =
|
| - importFieldBuilder2.getDescriptorForType().findFieldByName("d");
|
| - importFieldBuilder2.setField(subImportFieldDescriptor2, 3);
|
| - builder2.addRepeatedField(importFieldDescriptor,
|
| - importFieldBuilder2.build());
|
| -
|
| - Message newMessage2 = builder2.build();
|
| -
|
| - // These two messages should be equal.
|
| - assertEquals(newMessage1, newMessage2);
|
| - }
|
| -
|
| - public void testGetRepeatedFieldBuilderWithInitializedValue() {
|
| - Descriptor descriptor = TestAllTypes.getDescriptor();
|
| - FieldDescriptor fieldDescriptor =
|
| - descriptor.findFieldByName("repeated_nested_message");
|
| -
|
| - // Before setting field, builder is initialized by default value.
|
| - TestAllTypes.Builder builder = TestAllTypes.newBuilder();
|
| - builder.addRepeatedNestedMessageBuilder();
|
| - NestedMessage.Builder fieldBuilder =
|
| - (NestedMessage.Builder) builder.getRepeatedFieldBuilder(fieldDescriptor, 0);
|
| - assertEquals(0, fieldBuilder.getBb());
|
| -
|
| - // Setting field value with new field builder instance.
|
| - builder = TestAllTypes.newBuilder();
|
| - NestedMessage.Builder newFieldBuilder =
|
| - builder.addRepeatedNestedMessageBuilder();
|
| - newFieldBuilder.setBb(2);
|
| - // Then get the field builder instance by getRepeatedFieldBuilder().
|
| - fieldBuilder =
|
| - (NestedMessage.Builder) builder.getRepeatedFieldBuilder(fieldDescriptor, 0);
|
| - // It should contain new value.
|
| - assertEquals(2, fieldBuilder.getBb());
|
| - // These two builder should be equal.
|
| - assertSame(fieldBuilder, newFieldBuilder);
|
| - }
|
| -
|
| - public void testGetRepeatedFieldBuilderNotSupportedException() {
|
| - Descriptor descriptor = TestAllTypes.getDescriptor();
|
| - TestAllTypes.Builder builder = TestAllTypes.newBuilder();
|
| - try {
|
| - builder.getRepeatedFieldBuilder(descriptor.findFieldByName("repeated_int32"), 0);
|
| - fail("Exception was not thrown");
|
| - } catch (UnsupportedOperationException e) {
|
| - // We expect this exception.
|
| - }
|
| - try {
|
| - builder.getRepeatedFieldBuilder(
|
| - descriptor.findFieldByName("repeated_nested_enum"), 0);
|
| - fail("Exception was not thrown");
|
| - } catch (UnsupportedOperationException e) {
|
| - // We expect this exception.
|
| - }
|
| - try {
|
| - builder.getRepeatedFieldBuilder(descriptor.findFieldByName("optional_int32"), 0);
|
| - fail("Exception was not thrown");
|
| - } catch (UnsupportedOperationException e) {
|
| - // We expect this exception.
|
| - }
|
| - try {
|
| - builder.getRepeatedFieldBuilder(
|
| - descriptor.findFieldByName("optional_nested_enum"), 0);
|
| - fail("Exception was not thrown");
|
| - } catch (UnsupportedOperationException e) {
|
| - // We expect this exception.
|
| - }
|
| - try {
|
| - builder.getRepeatedFieldBuilder(
|
| - descriptor.findFieldByName("optional_nested_message"), 0);
|
| - fail("Exception was not thrown");
|
| - } catch (UnsupportedOperationException e) {
|
| - // We expect this exception.
|
| - }
|
| - }
|
| }
|
|
|