| Index: third_party/protobuf/java/core/src/test/java/com/google/protobuf/CodedInputStreamTest.java
|
| diff --git a/third_party/protobuf/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java b/third_party/protobuf/java/core/src/test/java/com/google/protobuf/CodedInputStreamTest.java
|
| similarity index 93%
|
| rename from third_party/protobuf/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java
|
| rename to third_party/protobuf/java/core/src/test/java/com/google/protobuf/CodedInputStreamTest.java
|
| index 18d8142c90277ab839cdd5f4003c1088a60e89f1..ca940cedb24535ede3794c36b17cd463f40f1a51 100644
|
| --- a/third_party/protobuf/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java
|
| +++ b/third_party/protobuf/java/core/src/test/java/com/google/protobuf/CodedInputStreamTest.java
|
| @@ -81,10 +81,12 @@ public class CodedInputStreamTest extends TestCase {
|
| this.blockSize = blockSize;
|
| }
|
|
|
| + @Override
|
| public int read(byte[] b) throws IOException {
|
| return super.read(b, 0, Math.min(b.length, blockSize));
|
| }
|
|
|
| + @Override
|
| public int read(byte[] b, int off, int len) throws IOException {
|
| return super.read(b, off, Math.min(len, blockSize));
|
| }
|
| @@ -547,6 +549,56 @@ public class CodedInputStreamTest extends TestCase {
|
| }
|
| }
|
|
|
| + public void testReadString() throws Exception {
|
| + String lorem = "Lorem ipsum dolor sit amet ";
|
| + StringBuilder builder = new StringBuilder();
|
| + for (int i = 0; i < 4096; i += lorem.length()) {
|
| + builder.append(lorem);
|
| + }
|
| + lorem = builder.toString().substring(0, 4096);
|
| + byte[] bytes = lorem.getBytes("UTF-8");
|
| + ByteString.Output rawOutput = ByteString.newOutput();
|
| + CodedOutputStream output = CodedOutputStream.newInstance(rawOutput, bytes.length);
|
| +
|
| + int tag = WireFormat.makeTag(1, WireFormat.WIRETYPE_LENGTH_DELIMITED);
|
| + output.writeRawVarint32(tag);
|
| + output.writeRawVarint32(bytes.length);
|
| + output.writeRawBytes(bytes);
|
| + output.flush();
|
| +
|
| + CodedInputStream input =
|
| + CodedInputStream.newInstance(
|
| + new ByteArrayInputStream(rawOutput.toByteString().toByteArray()));
|
| + assertEquals(tag, input.readTag());
|
| + String text = input.readString();
|
| + assertEquals(lorem, text);
|
| + }
|
| +
|
| + public void testReadStringRequireUtf8() throws Exception {
|
| + String lorem = "Lorem ipsum dolor sit amet ";
|
| + StringBuilder builder = new StringBuilder();
|
| + for (int i = 0; i < 4096; i += lorem.length()) {
|
| + builder.append(lorem);
|
| + }
|
| + lorem = builder.toString().substring(0, 4096);
|
| + byte[] bytes = lorem.getBytes("UTF-8");
|
| + ByteString.Output rawOutput = ByteString.newOutput();
|
| + CodedOutputStream output = CodedOutputStream.newInstance(rawOutput, bytes.length);
|
| +
|
| + int tag = WireFormat.makeTag(1, WireFormat.WIRETYPE_LENGTH_DELIMITED);
|
| + output.writeRawVarint32(tag);
|
| + output.writeRawVarint32(bytes.length);
|
| + output.writeRawBytes(bytes);
|
| + output.flush();
|
| +
|
| + CodedInputStream input =
|
| + CodedInputStream.newInstance(
|
| + new ByteArrayInputStream(rawOutput.toByteString().toByteArray()));
|
| + assertEquals(tag, input.readTag());
|
| + String text = input.readStringRequireUtf8();
|
| + assertEquals(lorem, text);
|
| + }
|
| +
|
| /**
|
| * Tests that if we readString invalid UTF-8 bytes, no exception
|
| * is thrown. Instead, the invalid bytes are replaced with the Unicode
|
|
|