diff options
author | kenton@google.com <kenton@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2010-02-01 17:41:59 +0000 |
---|---|---|
committer | kenton@google.com <kenton@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2010-02-01 17:41:59 +0000 |
commit | daee05168eb0f2cf102b7ef80c0af87c80729612 (patch) | |
tree | 9315d4071b5a7c9dc8501efb8ddb1f1d0bf09b3b /java/src/test | |
parent | ab6950d75d6bae6a1574726ee1e7060e001ed23a (diff) | |
download | protobuf-daee05168eb0f2cf102b7ef80c0af87c80729612.tar.gz protobuf-daee05168eb0f2cf102b7ef80c0af87c80729612.tar.bz2 protobuf-daee05168eb0f2cf102b7ef80c0af87c80729612.zip |
Optimize Java string serialization. Patch from Evan Jones.
Diffstat (limited to 'java/src/test')
-rw-r--r-- | java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java b/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java index 48e54657..85691d60 100644 --- a/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java +++ b/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java @@ -36,6 +36,7 @@ import protobuf_unittest.UnittestProto.TestPackedTypes; import junit.framework.TestCase; import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -211,6 +212,29 @@ public class CodedOutputStreamTest extends TestCase { 0x9abcdef012345678L); } + /** Test writing cached strings. */ + public void testWriteStringCached() throws IOException { + final ByteArrayOutputStream output = new ByteArrayOutputStream(); + final CodedOutputStream stream = CodedOutputStream.newInstance(output); + + // Test writing a string that is not cached + stream.writeStringCached(5, "hello", null); + stream.flush(); + CodedInputStream in = CodedInputStream.newInstance(output.toByteArray()); + assertEquals(WireFormat.makeTag(5, WireFormat.WIRETYPE_LENGTH_DELIMITED), + in.readTag()); + assertEquals("hello", in.readString()); + + // Write a cached string: the real string is ignored + output.reset(); + stream.writeStringCached(5, "ignored", ByteString.copyFromUtf8("hello")); + stream.flush(); + in = CodedInputStream.newInstance(output.toByteArray()); + assertEquals(WireFormat.makeTag(5, WireFormat.WIRETYPE_LENGTH_DELIMITED), + in.readTag()); + assertEquals("hello", in.readString()); + } + /** Test encodeZigZag32() and encodeZigZag64(). */ public void testEncodeZigZag() throws Exception { assertEquals(0, CodedOutputStream.encodeZigZag32( 0)); |