| Index: third_party/protobuf/java/src/test/java/com/google/protobuf/DynamicMessageTest.java
|
| ===================================================================
|
| --- third_party/protobuf/java/src/test/java/com/google/protobuf/DynamicMessageTest.java (revision 216642)
|
| +++ third_party/protobuf/java/src/test/java/com/google/protobuf/DynamicMessageTest.java (working copy)
|
| @@ -30,8 +30,9 @@
|
|
|
| package com.google.protobuf;
|
|
|
| +import protobuf_unittest.UnittestProto.TestAllExtensions;
|
| import protobuf_unittest.UnittestProto.TestAllTypes;
|
| -import protobuf_unittest.UnittestProto.TestAllExtensions;
|
| +import protobuf_unittest.UnittestProto.TestEmptyMessage;
|
| import protobuf_unittest.UnittestProto.TestPackedTypes;
|
|
|
| import junit.framework.TestCase;
|
| @@ -61,28 +62,44 @@
|
| reflectionTester.assertAllFieldsSetViaReflection(message);
|
| }
|
|
|
| - public void testDoubleBuildError() throws Exception {
|
| + public void testSettersAfterBuild() throws Exception {
|
| Message.Builder builder =
|
| DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
|
| + Message firstMessage = builder.build();
|
| + // double build()
|
| builder.build();
|
| - try {
|
| - builder.build();
|
| - fail("Should have thrown exception.");
|
| - } catch (IllegalStateException e) {
|
| - // Success.
|
| - }
|
| + // clear() after build()
|
| + builder.clear();
|
| + // setters after build()
|
| + reflectionTester.setAllFieldsViaReflection(builder);
|
| + Message message = builder.build();
|
| + reflectionTester.assertAllFieldsSetViaReflection(message);
|
| + // repeated setters after build()
|
| + reflectionTester.modifyRepeatedFieldsViaReflection(builder);
|
| + message = builder.build();
|
| + reflectionTester.assertRepeatedFieldsModifiedViaReflection(message);
|
| + // firstMessage shouldn't have been modified.
|
| + reflectionTester.assertClearViaReflection(firstMessage);
|
| }
|
|
|
| - public void testClearAfterBuildError() throws Exception {
|
| + public void testUnknownFields() throws Exception {
|
| Message.Builder builder =
|
| - DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
|
| - builder.build();
|
| - try {
|
| - builder.clear();
|
| - fail("Should have thrown exception.");
|
| - } catch (IllegalStateException e) {
|
| - // Success.
|
| - }
|
| + DynamicMessage.newBuilder(TestEmptyMessage.getDescriptor());
|
| + builder.setUnknownFields(UnknownFieldSet.newBuilder()
|
| + .addField(1, UnknownFieldSet.Field.newBuilder().addVarint(1).build())
|
| + .addField(2, UnknownFieldSet.Field.newBuilder().addFixed32(1).build())
|
| + .build());
|
| + Message message = builder.build();
|
| + assertEquals(2, message.getUnknownFields().asMap().size());
|
| + // clone() with unknown fields
|
| + Message.Builder newBuilder = builder.clone();
|
| + assertEquals(2, newBuilder.getUnknownFields().asMap().size());
|
| + // clear() with unknown fields
|
| + newBuilder.clear();
|
| + assertTrue(newBuilder.getUnknownFields().asMap().isEmpty());
|
| + // serialize/parse with unknown fields
|
| + newBuilder.mergeFrom(message.toByteString());
|
| + assertEquals(2, newBuilder.getUnknownFields().asMap().size());
|
| }
|
|
|
| public void testDynamicMessageSettersRejectNull() throws Exception {
|
| @@ -167,8 +184,25 @@
|
| Message message2 =
|
| DynamicMessage.parseFrom(TestAllTypes.getDescriptor(), rawBytes);
|
| reflectionTester.assertAllFieldsSetViaReflection(message2);
|
| +
|
| + // Test Parser interface.
|
| + Message message3 = message2.getParserForType().parseFrom(rawBytes);
|
| + reflectionTester.assertAllFieldsSetViaReflection(message3);
|
| }
|
|
|
| + public void testDynamicMessageExtensionParsing() throws Exception {
|
| + ByteString rawBytes = TestUtil.getAllExtensionsSet().toByteString();
|
| + Message message = DynamicMessage.parseFrom(
|
| + TestAllExtensions.getDescriptor(), rawBytes,
|
| + TestUtil.getExtensionRegistry());
|
| + extensionsReflectionTester.assertAllFieldsSetViaReflection(message);
|
| +
|
| + // Test Parser interface.
|
| + Message message2 = message.getParserForType().parseFrom(
|
| + rawBytes, TestUtil.getExtensionRegistry());
|
| + extensionsReflectionTester.assertAllFieldsSetViaReflection(message2);
|
| + }
|
| +
|
| public void testDynamicMessagePackedSerialization() throws Exception {
|
| Message.Builder builder =
|
| DynamicMessage.newBuilder(TestPackedTypes.getDescriptor());
|
| @@ -194,6 +228,10 @@
|
| Message message2 =
|
| DynamicMessage.parseFrom(TestPackedTypes.getDescriptor(), rawBytes);
|
| packedReflectionTester.assertPackedFieldsSetViaReflection(message2);
|
| +
|
| + // Test Parser interface.
|
| + Message message3 = message2.getParserForType().parseFrom(rawBytes);
|
| + packedReflectionTester.assertPackedFieldsSetViaReflection(message3);
|
| }
|
|
|
| public void testDynamicMessageCopy() throws Exception {
|
|
|