aboutsummaryrefslogtreecommitdiffhomepage
path: root/java/core/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'java/core/src/test')
-rw-r--r--java/core/src/test/java/com/google/protobuf/ParseExceptionsTest.java369
1 files changed, 184 insertions, 185 deletions
diff --git a/java/core/src/test/java/com/google/protobuf/ParseExceptionsTest.java b/java/core/src/test/java/com/google/protobuf/ParseExceptionsTest.java
index 03593413..37fa242d 100644
--- a/java/core/src/test/java/com/google/protobuf/ParseExceptionsTest.java
+++ b/java/core/src/test/java/com/google/protobuf/ParseExceptionsTest.java
@@ -24,189 +24,188 @@ import static org.junit.Assert.fail;
*/
public class ParseExceptionsTest {
-// disable for now for update the maven local repo.
-// private interface ParseTester {
-// DescriptorProto parse(InputStream in) throws IOException;
-// }
-//
-// private byte serializedProto[];
-//
-// private void setup() {
-// serializedProto = DescriptorProto.getDescriptor().toProto().toByteArray();
-// }
-//
-// private void setupDelimited() {
-// ByteArrayOutputStream bos = new ByteArrayOutputStream();
-// try {
-// DescriptorProto.getDescriptor().toProto().writeDelimitedTo(bos);
-// } catch (IOException e) {
-// fail("Exception not expected: " + e);
-// }
-// serializedProto = bos.toByteArray();
-// }
-//
-// @Test public void message_parseFrom_InputStream() {
-// setup();
-// verifyExceptions(new ParseTester() {
-// public DescriptorProto parse(InputStream in) throws IOException {
-// return DescriptorProto.parseFrom(in);
-// }
-// });
-// }
-//
-// @Test public void message_parseFrom_InputStreamAndExtensionRegistry() {
-// setup();
-// verifyExceptions(new ParseTester() {
-// public DescriptorProto parse(InputStream in) throws IOException {
-// return DescriptorProto.parseFrom(in, ExtensionRegistry.newInstance());
-// }
-// });
-// }
-//
-// @Test public void message_parseFrom_CodedInputStream() {
-// setup();
-// verifyExceptions(new ParseTester() {
-// public DescriptorProto parse(InputStream in) throws IOException {
-// return DescriptorProto.parseFrom(CodedInputStream.newInstance(in));
-// }
-// });
-// }
-//
-// @Test public void message_parseFrom_CodedInputStreamAndExtensionRegistry() {
-// setup();
-// verifyExceptions(new ParseTester() {
-// public DescriptorProto parse(InputStream in) throws IOException {
-// return DescriptorProto.parseFrom(CodedInputStream.newInstance(in),
-// ExtensionRegistry.newInstance());
-// }
-// });
-// }
-//
-// @Test public void message_parseDelimitedFrom_InputStream() {
-// setupDelimited();
-// verifyExceptions(new ParseTester() {
-// public DescriptorProto parse(InputStream in) throws IOException {
-// return DescriptorProto.parseDelimitedFrom(in);
-// }
-// });
-// }
-//
-// @Test public void message_parseDelimitedFrom_InputStreamAndExtensionRegistry() {
-// setupDelimited();
-// verifyExceptions(new ParseTester() {
-// public DescriptorProto parse(InputStream in) throws IOException {
-// return DescriptorProto.parseDelimitedFrom(in, ExtensionRegistry.newInstance());
-// }
-// });
-// }
-//
-// @Test public void messageBuilder_mergeFrom_InputStream() {
-// setup();
-// verifyExceptions(new ParseTester() {
-// public DescriptorProto parse(InputStream in) throws IOException {
-// return DescriptorProto.newBuilder().mergeFrom(in).build();
-// }
-// });
-// }
-//
-// @Test public void messageBuilder_mergeFrom_InputStreamAndExtensionRegistry() {
-// setup();
-// verifyExceptions(new ParseTester() {
-// public DescriptorProto parse(InputStream in) throws IOException {
-// return DescriptorProto.newBuilder().mergeFrom(in, ExtensionRegistry.newInstance()).build();
-// }
-// });
-// }
-//
-// @Test public void messageBuilder_mergeFrom_CodedInputStream() {
-// setup();
-// verifyExceptions(new ParseTester() {
-// public DescriptorProto parse(InputStream in) throws IOException {
-// return DescriptorProto.newBuilder().mergeFrom(CodedInputStream.newInstance(in)).build();
-// }
-// });
-// }
-//
-// @Test public void messageBuilder_mergeFrom_CodedInputStreamAndExtensionRegistry() {
-// setup();
-// verifyExceptions(new ParseTester() {
-// public DescriptorProto parse(InputStream in) throws IOException {
-// return DescriptorProto.newBuilder()
-// .mergeFrom(CodedInputStream.newInstance(in), ExtensionRegistry.newInstance()).build();
-// }
-// });
-// }
-//
-// @Test public void messageBuilder_mergeDelimitedFrom_InputStream() {
-// setupDelimited();
-// verifyExceptions(new ParseTester() {
-// public DescriptorProto parse(InputStream in) throws IOException {
-// DescriptorProto.Builder builder = DescriptorProto.newBuilder();
-// builder.mergeDelimitedFrom(in);
-// return builder.build();
-// }
-// });
-// }
-//
-// @Test public void messageBuilder_mergeDelimitedFrom_InputStreamAndExtensionRegistry() {
-// setupDelimited();
-// verifyExceptions(new ParseTester() {
-// public DescriptorProto parse(InputStream in) throws IOException {
-// DescriptorProto.Builder builder = DescriptorProto.newBuilder();
-// builder.mergeDelimitedFrom(in, ExtensionRegistry.newInstance());
-// return builder.build();
-// }
-// });
-// }
-//
-// private void verifyExceptions(ParseTester parseTester) {
-// // No exception
-// try {
-// assertEquals(DescriptorProto.getDescriptor().toProto(),
-// parseTester.parse(new ByteArrayInputStream(serializedProto)));
-// } catch (IOException e) {
-// fail("No exception expected: " + e);
-// }
-//
-// // IOException
-// try {
-// // using a "broken" stream that will throw part-way through reading the message
-// parseTester.parse(broken(new ByteArrayInputStream(serializedProto)));
-// fail("IOException expected but not thrown");
-// } catch (IOException e) {
-// assertFalse(e instanceof InvalidProtocolBufferException);
-// }
-//
-// // InvalidProtocolBufferException
-// try {
-// // make the serialized proto invalid
-// for (int i = 0; i < 50; i++) {
-// serializedProto[i] = -1;
-// }
-// parseTester.parse(new ByteArrayInputStream(serializedProto));
-// fail("InvalidProtocolBufferException expected but not thrown");
-// } catch (IOException e) {
-// assertTrue(e instanceof InvalidProtocolBufferException);
-// }
-// }
-//
-// private InputStream broken(InputStream i) {
-// return new FilterInputStream(i) {
-// int count = 0;
-//
-// @Override public int read() throws IOException {
-// if (count++ >= 50) {
-// throw new IOException("I'm broken!");
-// }
-// return super.read();
-// }
-//
-// @Override public int read(byte b[], int off, int len) throws IOException {
-// if ((count += len) >= 50) {
-// throw new IOException("I'm broken!");
-// }
-// return super.read(b, off, len);
-// }
-// };
-// }
+ private interface ParseTester {
+ DescriptorProto parse(InputStream in) throws IOException;
+ }
+
+ private byte serializedProto[];
+
+ private void setup() {
+ serializedProto = DescriptorProto.getDescriptor().toProto().toByteArray();
+ }
+
+ private void setupDelimited() {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ try {
+ DescriptorProto.getDescriptor().toProto().writeDelimitedTo(bos);
+ } catch (IOException e) {
+ fail("Exception not expected: " + e);
+ }
+ serializedProto = bos.toByteArray();
+ }
+
+ @Test public void message_parseFrom_InputStream() {
+ setup();
+ verifyExceptions(new ParseTester() {
+ public DescriptorProto parse(InputStream in) throws IOException {
+ return DescriptorProto.parseFrom(in);
+ }
+ });
+ }
+
+ @Test public void message_parseFrom_InputStreamAndExtensionRegistry() {
+ setup();
+ verifyExceptions(new ParseTester() {
+ public DescriptorProto parse(InputStream in) throws IOException {
+ return DescriptorProto.parseFrom(in, ExtensionRegistry.newInstance());
+ }
+ });
+ }
+
+ @Test public void message_parseFrom_CodedInputStream() {
+ setup();
+ verifyExceptions(new ParseTester() {
+ public DescriptorProto parse(InputStream in) throws IOException {
+ return DescriptorProto.parseFrom(CodedInputStream.newInstance(in));
+ }
+ });
+ }
+
+ @Test public void message_parseFrom_CodedInputStreamAndExtensionRegistry() {
+ setup();
+ verifyExceptions(new ParseTester() {
+ public DescriptorProto parse(InputStream in) throws IOException {
+ return DescriptorProto.parseFrom(CodedInputStream.newInstance(in),
+ ExtensionRegistry.newInstance());
+ }
+ });
+ }
+
+ @Test public void message_parseDelimitedFrom_InputStream() {
+ setupDelimited();
+ verifyExceptions(new ParseTester() {
+ public DescriptorProto parse(InputStream in) throws IOException {
+ return DescriptorProto.parseDelimitedFrom(in);
+ }
+ });
+ }
+
+ @Test public void message_parseDelimitedFrom_InputStreamAndExtensionRegistry() {
+ setupDelimited();
+ verifyExceptions(new ParseTester() {
+ public DescriptorProto parse(InputStream in) throws IOException {
+ return DescriptorProto.parseDelimitedFrom(in, ExtensionRegistry.newInstance());
+ }
+ });
+ }
+
+ @Test public void messageBuilder_mergeFrom_InputStream() {
+ setup();
+ verifyExceptions(new ParseTester() {
+ public DescriptorProto parse(InputStream in) throws IOException {
+ return DescriptorProto.newBuilder().mergeFrom(in).build();
+ }
+ });
+ }
+
+ @Test public void messageBuilder_mergeFrom_InputStreamAndExtensionRegistry() {
+ setup();
+ verifyExceptions(new ParseTester() {
+ public DescriptorProto parse(InputStream in) throws IOException {
+ return DescriptorProto.newBuilder().mergeFrom(in, ExtensionRegistry.newInstance()).build();
+ }
+ });
+ }
+
+ @Test public void messageBuilder_mergeFrom_CodedInputStream() {
+ setup();
+ verifyExceptions(new ParseTester() {
+ public DescriptorProto parse(InputStream in) throws IOException {
+ return DescriptorProto.newBuilder().mergeFrom(CodedInputStream.newInstance(in)).build();
+ }
+ });
+ }
+
+ @Test public void messageBuilder_mergeFrom_CodedInputStreamAndExtensionRegistry() {
+ setup();
+ verifyExceptions(new ParseTester() {
+ public DescriptorProto parse(InputStream in) throws IOException {
+ return DescriptorProto.newBuilder()
+ .mergeFrom(CodedInputStream.newInstance(in), ExtensionRegistry.newInstance()).build();
+ }
+ });
+ }
+
+ @Test public void messageBuilder_mergeDelimitedFrom_InputStream() {
+ setupDelimited();
+ verifyExceptions(new ParseTester() {
+ public DescriptorProto parse(InputStream in) throws IOException {
+ DescriptorProto.Builder builder = DescriptorProto.newBuilder();
+ builder.mergeDelimitedFrom(in);
+ return builder.build();
+ }
+ });
+ }
+
+ @Test public void messageBuilder_mergeDelimitedFrom_InputStreamAndExtensionRegistry() {
+ setupDelimited();
+ verifyExceptions(new ParseTester() {
+ public DescriptorProto parse(InputStream in) throws IOException {
+ DescriptorProto.Builder builder = DescriptorProto.newBuilder();
+ builder.mergeDelimitedFrom(in, ExtensionRegistry.newInstance());
+ return builder.build();
+ }
+ });
+ }
+
+ private void verifyExceptions(ParseTester parseTester) {
+ // No exception
+ try {
+ assertEquals(DescriptorProto.getDescriptor().toProto(),
+ parseTester.parse(new ByteArrayInputStream(serializedProto)));
+ } catch (IOException e) {
+ fail("No exception expected: " + e);
+ }
+
+ // IOException
+ try {
+ // using a "broken" stream that will throw part-way through reading the message
+ parseTester.parse(broken(new ByteArrayInputStream(serializedProto)));
+ fail("IOException expected but not thrown");
+ } catch (IOException e) {
+ assertFalse(e instanceof InvalidProtocolBufferException);
+ }
+
+ // InvalidProtocolBufferException
+ try {
+ // make the serialized proto invalid
+ for (int i = 0; i < 50; i++) {
+ serializedProto[i] = -1;
+ }
+ parseTester.parse(new ByteArrayInputStream(serializedProto));
+ fail("InvalidProtocolBufferException expected but not thrown");
+ } catch (IOException e) {
+ assertTrue(e instanceof InvalidProtocolBufferException);
+ }
+ }
+
+ private InputStream broken(InputStream i) {
+ return new FilterInputStream(i) {
+ int count = 0;
+
+ @Override public int read() throws IOException {
+ if (count++ >= 50) {
+ throw new IOException("I'm broken!");
+ }
+ return super.read();
+ }
+
+ @Override public int read(byte b[], int off, int len) throws IOException {
+ if ((count += len) >= 50) {
+ throw new IOException("I'm broken!");
+ }
+ return super.read(b, off, len);
+ }
+ };
+ }
}