From 90f2f50233fc42a9e6f551ac8454c46a5df00454 Mon Sep 17 00:00:00 2001 From: Feng Xiao Date: Tue, 25 Nov 2014 17:09:07 -0800 Subject: Make Java TextFormat.printToUnicodeString() escape newlines. Fix issue #77 --- .../test/java/com/google/protobuf/TextFormatTest.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'java/src/test') diff --git a/java/src/test/java/com/google/protobuf/TextFormatTest.java b/java/src/test/java/com/google/protobuf/TextFormatTest.java index 82f9582f..eba06ca0 100644 --- a/java/src/test/java/com/google/protobuf/TextFormatTest.java +++ b/java/src/test/java/com/google/protobuf/TextFormatTest.java @@ -864,15 +864,15 @@ public class TextFormatTest extends TestCase { assertEquals(message.getOptionalString(), builder.getOptionalString()); } - public void testPrintToUnicodeStringWithNewlines() { + public void testPrintToUnicodeStringWithNewlines() throws Exception { // No newlines at start and end - assertEquals("optional_string: \"test newlines\n\nin\nstring\"\n", + assertEquals("optional_string: \"test newlines\\n\\nin\\nstring\"\n", TextFormat.printToUnicodeString(TestAllTypes.newBuilder() .setOptionalString("test newlines\n\nin\nstring") .build())); // Newlines at start and end - assertEquals("optional_string: \"\ntest\nnewlines\n\nin\nstring\n\"\n", + assertEquals("optional_string: \"\\ntest\\nnewlines\\n\\nin\\nstring\\n\"\n", TextFormat.printToUnicodeString(TestAllTypes.newBuilder() .setOptionalString("\ntest\nnewlines\n\nin\nstring\n") .build())); @@ -882,14 +882,22 @@ public class TextFormatTest extends TestCase { TextFormat.printToUnicodeString(TestAllTypes.newBuilder() .setOptionalString("") .build())); - assertEquals("optional_string: \"\n\"\n", + assertEquals("optional_string: \"\\n\"\n", TextFormat.printToUnicodeString(TestAllTypes.newBuilder() .setOptionalString("\n") .build())); - assertEquals("optional_string: \"\n\n\"\n", + assertEquals("optional_string: \"\\n\\n\"\n", TextFormat.printToUnicodeString(TestAllTypes.newBuilder() .setOptionalString("\n\n") .build())); + + // Test escaping roundtrip + TestAllTypes message = TestAllTypes.newBuilder() + .setOptionalString("\ntest\nnewlines\n\nin\nstring\n") + .build(); + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + TextFormat.merge(TextFormat.printToUnicodeString(message), builder); + assertEquals(message.getOptionalString(), builder.getOptionalString()); } public void testPrintToUnicodeString_unknown() { -- cgit v1.2.3