/** Tests reading and parsing a whole message with every field type. */ public void testReadWholeMessage() throws Exception { TestAllTypes message = TestUtil.getAllSet(); byte[] rawBytes = message.toByteArray(); assertEquals(rawBytes.length, message.getSerializedSize()); TestAllTypes message2 = TestAllTypes.parseFrom(rawBytes); TestUtil.assertAllFieldsSet(message2); // Try different block sizes. for (int blockSize = 1; blockSize < 256; blockSize *= 2) { message2 = TestAllTypes.parseFrom(new SmallBlockInputStream(rawBytes, blockSize)); TestUtil.assertAllFieldsSet(message2); } }
public void testSerialization() throws Exception { Message abstractMessage = new AbstractMessageWrapper(TestUtil.getAllSet()); TestUtil.assertAllFieldsSet(TestAllTypes.parseFrom(abstractMessage.toByteString())); assertEquals(TestUtil.getAllSet().toByteString(), abstractMessage.toByteString()); }
public void testReadHugeBlob() throws Exception { // Allocate and initialize a 1MB blob. byte[] blob = new byte[1 << 20]; for (int i = 0; i < blob.length; i++) { blob[i] = (byte) i; } // Make a message containing it. TestAllTypes.Builder builder = TestAllTypes.newBuilder(); TestUtil.setAllFields(builder); builder.setOptionalBytes(ByteString.copyFrom(blob)); TestAllTypes message = builder.build(); // Serialize and parse it. Make sure to parse from an InputStream, not // directly from a ByteString, so that CodedInputStream uses buffered // reading. TestAllTypes message2 = TestAllTypes.parseFrom(message.toByteString().newInput()); assertEquals(message.getOptionalBytes(), message2.getOptionalBytes()); // Make sure all the other fields were parsed correctly. TestAllTypes message3 = TestAllTypes.newBuilder(message2) .setOptionalBytes(TestUtil.getAllSet().getOptionalBytes()) .build(); TestUtil.assertAllFieldsSet(message3); }
public void testSerialization() throws Exception { TestAllTypes message = TestUtil.getAllSet(); ByteString rawBytes = message.toByteString(); assertEquals(rawBytes.size(), message.getSerializedSize()); TestAllTypes message2 = TestAllTypes.parseFrom(rawBytes); TestUtil.assertAllFieldsSet(message2); }
public void testSizeLimit() throws Exception { CodedInputStream input = CodedInputStream.newInstance( new SmallBlockInputStream(TestUtil.getAllSet().toByteString().newInput(), 16)); input.setSizeLimit(16); try { TestAllTypes.parseFrom(input); fail("Should have thrown an exception!"); } catch (InvalidProtocolBufferException expected) { checkSizeLimitExceeded(expected); } }
public void testSerializeExtensions() throws Exception { // TestAllTypes and TestAllExtensions should have compatible wire formats, // so if we serealize a TestAllExtensions then parse it as TestAllTypes // it should work. TestAllExtensions message = TestUtil.getAllExtensionsSet(); ByteString rawBytes = message.toByteString(); assertEquals(rawBytes.size(), message.getSerializedSize()); TestAllTypes message2 = TestAllTypes.parseFrom(rawBytes); TestUtil.assertAllFieldsSet(message2); }