diff options
Diffstat (limited to 'java/src/test/java/com/google/protobuf/ParserTest.java')
-rw-r--r-- | java/src/test/java/com/google/protobuf/ParserTest.java | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/java/src/test/java/com/google/protobuf/ParserTest.java b/java/src/test/java/com/google/protobuf/ParserTest.java index 396902cf..8cc4693e 100644 --- a/java/src/test/java/com/google/protobuf/ParserTest.java +++ b/java/src/test/java/com/google/protobuf/ParserTest.java @@ -33,15 +33,14 @@ package com.google.protobuf; import com.google.protobuf.UnittestLite.TestAllTypesLite; import com.google.protobuf.UnittestLite.TestPackedExtensionsLite; import com.google.protobuf.UnittestLite.TestParsingMergeLite; -import com.google.protobuf.UnittestLite; import protobuf_unittest.UnittestOptimizeFor.TestOptimizedForSize; import protobuf_unittest.UnittestOptimizeFor.TestRequiredOptimizedForSize; import protobuf_unittest.UnittestOptimizeFor; import protobuf_unittest.UnittestProto.ForeignMessage; import protobuf_unittest.UnittestProto.TestAllTypes; import protobuf_unittest.UnittestProto.TestEmptyMessage; -import protobuf_unittest.UnittestProto.TestRequired; import protobuf_unittest.UnittestProto.TestParsingMerge; +import protobuf_unittest.UnittestProto.TestRequired; import protobuf_unittest.UnittestProto; import junit.framework.TestCase; @@ -84,12 +83,15 @@ public class ParserTest extends TestCase { CodedInputStream.newInstance(data), registry)); } + @SuppressWarnings("unchecked") private void assertRoundTripEquals(MessageLite message) throws Exception { final byte[] data = message.toByteArray(); final int offset = 20; final int length = data.length; final int padding = 30; - Parser<? extends MessageLite> parser = message.getParserForType(); + + Parser<MessageLite> parser = + (Parser<MessageLite>) message.getParserForType(); assertMessageEquals(message, parser.parseFrom(data)); assertMessageEquals(message, parser.parseFrom( generatePaddingArray(data, offset, padding), @@ -101,7 +103,8 @@ public class ParserTest extends TestCase { CodedInputStream.newInstance(data))); } - private void assertMessageEquals(MessageLite expected, MessageLite actual) + private void assertMessageEquals( + MessageLite expected, MessageLite actual) throws Exception { if (expected instanceof Message) { assertEquals(expected, actual); @@ -120,15 +123,17 @@ public class ParserTest extends TestCase { assertRoundTripEquals(TestUtil.getAllSet()); } + public void testParsePartial() throws Exception { - Parser<TestRequired> parser = TestRequired.PARSER; + assertParsePartial(TestRequired.PARSER, + TestRequired.newBuilder().setA(1).buildPartial()); + } + + private <T extends MessageLite> void assertParsePartial( + Parser<T> parser, T partialMessage) throws Exception { final String errorString = "Should throw exceptions when the parsed message isn't initialized."; - // TestRequired.b and TestRequired.c are not set. - TestRequired partialMessage = TestRequired.newBuilder() - .setA(1).buildPartial(); - // parsePartialFrom should pass. byte[] data = partialMessage.toByteArray(); assertEquals(partialMessage, parser.parsePartialFrom(data)); @@ -218,6 +223,7 @@ public class ParserTest extends TestCase { emptyMessage.toByteString()); } + public void testOptimizeForSize() throws Exception { TestOptimizedForSize.Builder builder = TestOptimizedForSize.newBuilder(); builder.setI(12).setMsg(ForeignMessage.newBuilder().setC(34).build()); |