| Index: third_party/protobuf/java/src/test/java/com/google/protobuf/AbstractMessageTest.java
|
| ===================================================================
|
| --- third_party/protobuf/java/src/test/java/com/google/protobuf/AbstractMessageTest.java (revision 216642)
|
| +++ third_party/protobuf/java/src/test/java/com/google/protobuf/AbstractMessageTest.java (working copy)
|
| @@ -30,6 +30,7 @@
|
|
|
| package com.google.protobuf;
|
|
|
| +import com.google.protobuf.Descriptors.FieldDescriptor;
|
| import protobuf_unittest.UnittestOptimizeFor.TestOptimizedForSize;
|
| import protobuf_unittest.UnittestProto;
|
| import protobuf_unittest.UnittestProto.ForeignMessage;
|
| @@ -167,7 +168,14 @@
|
| wrappedBuilder.setUnknownFields(unknownFields);
|
| return this;
|
| }
|
| + @Override
|
| + public Message.Builder getFieldBuilder(FieldDescriptor field) {
|
| + return wrappedBuilder.getFieldBuilder(field);
|
| + }
|
| }
|
| + public Parser<? extends Message> getParserForType() {
|
| + return wrappedMessage.getParserForType();
|
| + }
|
| }
|
|
|
| // =================================================================
|
| @@ -220,6 +228,34 @@
|
| TestUtil.assertAllFieldsSet((TestAllTypes) message.wrappedMessage);
|
| }
|
|
|
| + public void testParsingUninitialized() throws Exception {
|
| + TestRequiredForeign.Builder builder = TestRequiredForeign.newBuilder();
|
| + builder.getOptionalMessageBuilder().setDummy2(10);
|
| + ByteString bytes = builder.buildPartial().toByteString();
|
| + Message.Builder abstractMessageBuilder =
|
| + new AbstractMessageWrapper.Builder(TestRequiredForeign.newBuilder());
|
| + // mergeFrom() should not throw initialization error.
|
| + abstractMessageBuilder.mergeFrom(bytes).buildPartial();
|
| + try {
|
| + abstractMessageBuilder.mergeFrom(bytes).build();
|
| + fail();
|
| + } catch (UninitializedMessageException ex) {
|
| + // pass
|
| + }
|
| +
|
| + // test DynamicMessage directly.
|
| + Message.Builder dynamicMessageBuilder = DynamicMessage.newBuilder(
|
| + TestRequiredForeign.getDescriptor());
|
| + // mergeFrom() should not throw initialization error.
|
| + dynamicMessageBuilder.mergeFrom(bytes).buildPartial();
|
| + try {
|
| + dynamicMessageBuilder.mergeFrom(bytes).build();
|
| + fail();
|
| + } catch (UninitializedMessageException ex) {
|
| + // pass
|
| + }
|
| + }
|
| +
|
| public void testPackedSerialization() throws Exception {
|
| Message abstractMessage =
|
| new AbstractMessageWrapper(TestUtil.getPackedSet());
|
| @@ -298,12 +334,16 @@
|
| new AbstractMessageWrapper.Builder(builder);
|
|
|
| assertFalse(abstractBuilder.isInitialized());
|
| + assertEquals("a, b, c", abstractBuilder.getInitializationErrorString());
|
| builder.setA(1);
|
| assertFalse(abstractBuilder.isInitialized());
|
| + assertEquals("b, c", abstractBuilder.getInitializationErrorString());
|
| builder.setB(1);
|
| assertFalse(abstractBuilder.isInitialized());
|
| + assertEquals("c", abstractBuilder.getInitializationErrorString());
|
| builder.setC(1);
|
| assertTrue(abstractBuilder.isInitialized());
|
| + assertEquals("", abstractBuilder.getInitializationErrorString());
|
| }
|
|
|
| public void testForeignIsInitialized() throws Exception {
|
| @@ -312,18 +352,27 @@
|
| new AbstractMessageWrapper.Builder(builder);
|
|
|
| assertTrue(abstractBuilder.isInitialized());
|
| + assertEquals("", abstractBuilder.getInitializationErrorString());
|
|
|
| builder.setOptionalMessage(TEST_REQUIRED_UNINITIALIZED);
|
| assertFalse(abstractBuilder.isInitialized());
|
| + assertEquals(
|
| + "optional_message.a, optional_message.b, optional_message.c",
|
| + abstractBuilder.getInitializationErrorString());
|
|
|
| builder.setOptionalMessage(TEST_REQUIRED_INITIALIZED);
|
| assertTrue(abstractBuilder.isInitialized());
|
| + assertEquals("", abstractBuilder.getInitializationErrorString());
|
|
|
| builder.addRepeatedMessage(TEST_REQUIRED_UNINITIALIZED);
|
| assertFalse(abstractBuilder.isInitialized());
|
| + assertEquals(
|
| + "repeated_message[0].a, repeated_message[0].b, repeated_message[0].c",
|
| + abstractBuilder.getInitializationErrorString());
|
|
|
| builder.setRepeatedMessage(0, TEST_REQUIRED_INITIALIZED);
|
| assertTrue(abstractBuilder.isInitialized());
|
| + assertEquals("", abstractBuilder.getInitializationErrorString());
|
| }
|
|
|
| // -----------------------------------------------------------------
|
| @@ -421,7 +470,7 @@
|
|
|
|
|
| /**
|
| - * Asserts that the given proto has symetric equals and hashCode methods.
|
| + * Asserts that the given proto has symmetric equals and hashCode methods.
|
| */
|
| private void checkEqualsIsConsistent(Message message) {
|
| // Object should be equal to itself.
|
|
|