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. |
- } |
- } |
} |