31
31
package com.google.protobuf;
33
33
import com.google.protobuf.Descriptors.FieldDescriptor;
34
import protobuf_unittest.UnittestMset.TestMessageSet;
35
import protobuf_unittest.UnittestMset.TestMessageSetExtension1;
36
import protobuf_unittest.UnittestMset.TestMessageSetExtension2;
34
37
import protobuf_unittest.UnittestProto.OneString;
38
import protobuf_unittest.UnittestProto.TestAllExtensions;
35
39
import protobuf_unittest.UnittestProto.TestAllTypes;
36
import protobuf_unittest.UnittestProto.TestAllExtensions;
40
import protobuf_unittest.UnittestProto.TestAllTypes.NestedMessage;
37
41
import protobuf_unittest.UnittestProto.TestEmptyMessage;
38
import protobuf_unittest.UnittestProto.TestAllTypes.NestedMessage;
39
import protobuf_unittest.UnittestMset.TestMessageSet;
40
import protobuf_unittest.UnittestMset.TestMessageSetExtension1;
41
import protobuf_unittest.UnittestMset.TestMessageSetExtension2;
43
43
import junit.framework.TestCase;
133
133
assertEquals(allExtensionsSetText, javaText);
136
// Creates an example unknown field set.
137
private UnknownFieldSet makeUnknownFieldSet() {
138
return UnknownFieldSet.newBuilder()
140
UnknownFieldSet.Field.newBuilder()
144
.addLengthDelimited(ByteString.copyFromUtf8("4"))
146
UnknownFieldSet.newBuilder()
148
UnknownFieldSet.Field.newBuilder()
154
UnknownFieldSet.Field.newBuilder()
160
UnknownFieldSet.Field.newBuilder()
161
.addVarint(0xABCDEF1234567890L)
162
.addFixed32(0xABCD1234)
163
.addFixed64(0xABCDEF1234567890L)
136
168
public void testPrintUnknownFields() throws Exception {
137
169
// Test printing of unknown fields in a message.
139
171
TestEmptyMessage message =
140
172
TestEmptyMessage.newBuilder()
142
UnknownFieldSet.newBuilder()
144
UnknownFieldSet.Field.newBuilder()
148
.addLengthDelimited(ByteString.copyFromUtf8("4"))
150
UnknownFieldSet.newBuilder()
152
UnknownFieldSet.Field.newBuilder()
158
UnknownFieldSet.Field.newBuilder()
164
UnknownFieldSet.Field.newBuilder()
165
.addVarint(0xABCDEF1234567890L)
166
.addFixed32(0xABCD1234)
167
.addFixed64(0xABCDEF1234567890L)
173
.setUnknownFields(makeUnknownFieldSet())
469
476
TextFormat.unescapeBytes("\\000\\001\\a\\b\\f\\n\\r\\t\\v\\\\\\'\\\""));
470
477
assertEquals("\0\001\007\b\f\n\r\t\013\\\'\"",
471
478
TextFormat.unescapeText("\\000\\001\\a\\b\\f\\n\\r\\t\\v\\\\\\'\\\""));
479
assertEquals(kEscapeTestStringEscaped,
480
TextFormat.escapeText(kEscapeTestString));
481
assertEquals(kEscapeTestString,
482
TextFormat.unescapeText(kEscapeTestStringEscaped));
473
484
// Unicode handling.
474
485
assertEquals("\\341\\210\\264", TextFormat.escapeText("\u1234"));
650
673
assertEquals(longText, builder.getOptionalString());
676
public void testParseBoolean() throws Exception {
678
"repeated_bool: t repeated_bool : 0\n" +
679
"repeated_bool :f repeated_bool:1";
680
String goodTextCanonical =
681
"repeated_bool: true\n" +
682
"repeated_bool: false\n" +
683
"repeated_bool: false\n" +
684
"repeated_bool: true\n";
685
TestAllTypes.Builder builder = TestAllTypes.newBuilder();
686
TextFormat.merge(goodText, builder);
687
assertEquals(goodTextCanonical, builder.build().toString());
690
TestAllTypes.Builder badBuilder = TestAllTypes.newBuilder();
691
TextFormat.merge("optional_bool:2", badBuilder);
692
fail("Should have thrown an exception.");
693
} catch (TextFormat.ParseException e) {
697
TestAllTypes.Builder badBuilder = TestAllTypes.newBuilder();
698
TextFormat.merge("optional_bool: foo", badBuilder);
699
fail("Should have thrown an exception.");
700
} catch (TextFormat.ParseException e) {
653
705
public void testParseAdjacentStringLiterals() throws Exception {
654
706
TestAllTypes.Builder builder = TestAllTypes.newBuilder();
655
707
TextFormat.merge("optional_string: \"foo\" 'corge' \"grault\"", builder);
656
708
assertEquals("foocorgegrault", builder.getOptionalString());
711
public void testPrintFieldValue() throws Exception {
712
assertPrintFieldValue("\"Hello\"", "Hello", "repeated_string");
713
assertPrintFieldValue("123.0", 123f, "repeated_float");
714
assertPrintFieldValue("123.0", 123d, "repeated_double");
715
assertPrintFieldValue("123", 123, "repeated_int32");
716
assertPrintFieldValue("123", 123L, "repeated_int64");
717
assertPrintFieldValue("true", true, "repeated_bool");
718
assertPrintFieldValue("4294967295", 0xFFFFFFFF, "repeated_uint32");
719
assertPrintFieldValue("18446744073709551615", 0xFFFFFFFFFFFFFFFFL,
721
assertPrintFieldValue("\"\\001\\002\\003\"",
722
ByteString.copyFrom(new byte[] {1, 2, 3}), "repeated_bytes");
725
private void assertPrintFieldValue(String expect, Object value,
726
String fieldName) throws Exception {
727
TestAllTypes.Builder builder = TestAllTypes.newBuilder();
728
StringBuilder sb = new StringBuilder();
729
TextFormat.printFieldValue(
730
TestAllTypes.getDescriptor().findFieldByName(fieldName),
732
assertEquals(expect, sb.toString());
735
public void testShortDebugString() {
736
assertEquals("optional_nested_message { bb: 42 } repeated_int32: 1"
737
+ " repeated_uint32: 2",
738
TextFormat.shortDebugString(TestAllTypes.newBuilder()
740
.addRepeatedUint32(2)
741
.setOptionalNestedMessage(
742
NestedMessage.newBuilder().setBb(42).build())
746
public void testShortDebugString_unknown() {
747
assertEquals("5: 1 5: 0x00000002 5: 0x0000000000000003 5: \"4\" 5 { 10: 5 }"
748
+ " 8: 1 8: 2 8: 3 15: 12379813812177893520 15: 0xabcd1234 15:"
749
+ " 0xabcdef1234567890",
750
TextFormat.shortDebugString(makeUnknownFieldSet()));