OLD | NEW |
1 // Protocol Buffers - Google's data interchange format | 1 // Protocol Buffers - Google's data interchange format |
2 // Copyright 2008 Google Inc. All rights reserved. | 2 // Copyright 2008 Google Inc. All rights reserved. |
3 // https://developers.google.com/protocol-buffers/ | 3 // https://developers.google.com/protocol-buffers/ |
4 // | 4 // |
5 // Redistribution and use in source and binary forms, with or without | 5 // Redistribution and use in source and binary forms, with or without |
6 // modification, are permitted provided that the following conditions are | 6 // modification, are permitted provided that the following conditions are |
7 // met: | 7 // met: |
8 // | 8 // |
9 // * Redistributions of source code must retain the above copyright | 9 // * Redistributions of source code must retain the above copyright |
10 // notice, this list of conditions and the following disclaimer. | 10 // notice, this list of conditions and the following disclaimer. |
(...skipping 24 matching lines...) Expand all Loading... |
35 import com.google.protobuf.TextFormat.Parser.SingularOverwritePolicy; | 35 import com.google.protobuf.TextFormat.Parser.SingularOverwritePolicy; |
36 import protobuf_unittest.UnittestMset.TestMessageSetExtension1; | 36 import protobuf_unittest.UnittestMset.TestMessageSetExtension1; |
37 import protobuf_unittest.UnittestMset.TestMessageSetExtension2; | 37 import protobuf_unittest.UnittestMset.TestMessageSetExtension2; |
38 import protobuf_unittest.UnittestProto.OneString; | 38 import protobuf_unittest.UnittestProto.OneString; |
39 import protobuf_unittest.UnittestProto.TestAllExtensions; | 39 import protobuf_unittest.UnittestProto.TestAllExtensions; |
40 import protobuf_unittest.UnittestProto.TestAllTypes; | 40 import protobuf_unittest.UnittestProto.TestAllTypes; |
41 import protobuf_unittest.UnittestProto.TestAllTypes.NestedMessage; | 41 import protobuf_unittest.UnittestProto.TestAllTypes.NestedMessage; |
42 import protobuf_unittest.UnittestProto.TestEmptyMessage; | 42 import protobuf_unittest.UnittestProto.TestEmptyMessage; |
43 import protobuf_unittest.UnittestProto.TestOneof2; | 43 import protobuf_unittest.UnittestProto.TestOneof2; |
44 import proto2_wireformat_unittest.UnittestMsetWireFormat.TestMessageSet; | 44 import proto2_wireformat_unittest.UnittestMsetWireFormat.TestMessageSet; |
45 | |
46 import junit.framework.TestCase; | |
47 | |
48 import java.io.StringReader; | 45 import java.io.StringReader; |
49 import java.util.List; | 46 import java.util.List; |
| 47 import junit.framework.TestCase; |
50 | 48 |
51 /** | 49 /** |
52 * Test case for {@link TextFormat}. | 50 * Test case for {@link TextFormat}. |
53 * | 51 * |
54 * TODO(wenboz): ExtensionTest and rest of text_format_unittest.cc. | 52 * TODO(wenboz): ExtensionTest and rest of text_format_unittest.cc. |
55 * | 53 * |
56 * @author wenboz@google.com (Wenbo Zhu) | 54 * @author wenboz@google.com (Wenbo Zhu) |
57 */ | 55 */ |
58 public class TextFormatTest extends TestCase { | 56 public class TextFormatTest extends TestCase { |
59 | 57 |
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 "optional_string: \"ueoauaoe\n" + | 513 "optional_string: \"ueoauaoe\n" + |
516 "optional_int32: 123"); | 514 "optional_int32: 123"); |
517 assertParseError( | 515 assertParseError( |
518 "1:18: Invalid escape sequence: '\\z'", | 516 "1:18: Invalid escape sequence: '\\z'", |
519 "optional_string: \"\\z\""); | 517 "optional_string: \"\\z\""); |
520 assertParseError( | 518 assertParseError( |
521 "1:18: String missing ending quote.", | 519 "1:18: String missing ending quote.", |
522 "optional_string: \"ueoauaoe\n" + | 520 "optional_string: \"ueoauaoe\n" + |
523 "optional_int32: 123"); | 521 "optional_int32: 123"); |
524 assertParseError( | 522 assertParseError( |
525 "1:2: Extension \"nosuchext\" not found in the ExtensionRegistry.", | 523 "1:2: Input contains unknown fields and/or extensions:\n" + |
| 524 "1:2:\tprotobuf_unittest.TestAllTypes.[nosuchext]", |
526 "[nosuchext]: 123"); | 525 "[nosuchext]: 123"); |
527 assertParseError( | 526 assertParseError( |
528 "1:20: Extension \"protobuf_unittest.optional_int32_extension\" does " + | 527 "1:20: Extension \"protobuf_unittest.optional_int32_extension\" does " + |
529 "not extend message type \"protobuf_unittest.TestAllTypes\".", | 528 "not extend message type \"protobuf_unittest.TestAllTypes\".", |
530 "[protobuf_unittest.optional_int32_extension]: 123"); | 529 "[protobuf_unittest.optional_int32_extension]: 123"); |
531 assertParseError( | 530 assertParseError( |
532 "1:1: Message type \"protobuf_unittest.TestAllTypes\" has no field " + | 531 "1:1: Input contains unknown fields and/or extensions:\n" + |
533 "named \"nosuchfield\".", | 532 "1:1:\tprotobuf_unittest.TestAllTypes.nosuchfield", |
534 "nosuchfield: 123"); | 533 "nosuchfield: 123"); |
535 assertParseError( | 534 assertParseError( |
536 "1:21: Expected \">\".", | 535 "1:21: Expected \">\".", |
537 "OptionalGroup < a: 1"); | 536 "OptionalGroup < a: 1"); |
538 assertParseError( | 537 assertParseError( |
539 "1:23: Enum type \"protobuf_unittest.TestAllTypes.NestedEnum\" has no " + | 538 "1:23: Enum type \"protobuf_unittest.TestAllTypes.NestedEnum\" has no " + |
540 "value named \"NO_SUCH_VALUE\".", | 539 "value named \"NO_SUCH_VALUE\".", |
541 "optional_nested_enum: NO_SUCH_VALUE"); | 540 "optional_nested_enum: NO_SUCH_VALUE"); |
542 assertParseError( | 541 assertParseError( |
543 "1:23: Enum type \"protobuf_unittest.TestAllTypes.NestedEnum\" has no " + | 542 "1:23: Enum type \"protobuf_unittest.TestAllTypes.NestedEnum\" has no " + |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
984 "default_string: \"asdf\"\n"); | 983 "default_string: \"asdf\"\n"); |
985 } | 984 } |
986 | 985 |
987 public void testParseShortRepeatedFormOfRepeatedFields() throws Exception { | 986 public void testParseShortRepeatedFormOfRepeatedFields() throws Exception { |
988 assertParseSuccessWithOverwriteForbidden("repeated_foreign_enum: [FOREIGN_FO
O, FOREIGN_BAR]"); | 987 assertParseSuccessWithOverwriteForbidden("repeated_foreign_enum: [FOREIGN_FO
O, FOREIGN_BAR]"); |
989 assertParseSuccessWithOverwriteForbidden("repeated_int32: [ 1, 2 ]\n"); | 988 assertParseSuccessWithOverwriteForbidden("repeated_int32: [ 1, 2 ]\n"); |
990 assertParseSuccessWithOverwriteForbidden("RepeatedGroup [{ a: 1 },{ a: 2 }]\
n"); | 989 assertParseSuccessWithOverwriteForbidden("RepeatedGroup [{ a: 1 },{ a: 2 }]\
n"); |
991 assertParseSuccessWithOverwriteForbidden("repeated_nested_message [{ bb: 1 }
, { bb: 2 }]\n"); | 990 assertParseSuccessWithOverwriteForbidden("repeated_nested_message [{ bb: 1 }
, { bb: 2 }]\n"); |
992 } | 991 } |
993 | 992 |
| 993 public void testParseShortRepeatedFormOfEmptyRepeatedFields() throws Exception
{ |
| 994 assertParseSuccessWithOverwriteForbidden("repeated_foreign_enum: []"); |
| 995 assertParseSuccessWithOverwriteForbidden("repeated_int32: []\n"); |
| 996 assertParseSuccessWithOverwriteForbidden("RepeatedGroup []\n"); |
| 997 assertParseSuccessWithOverwriteForbidden("repeated_nested_message []\n"); |
| 998 } |
| 999 |
| 1000 public void testParseShortRepeatedFormWithTrailingComma() throws Exception { |
| 1001 assertParseErrorWithOverwriteForbidden( |
| 1002 "1:38: Expected identifier. Found \']\'", |
| 1003 "repeated_foreign_enum: [FOREIGN_FOO, ]\n"); |
| 1004 assertParseErrorWithOverwriteForbidden( |
| 1005 "1:22: Couldn't parse integer: For input string: \"]\"", |
| 1006 "repeated_int32: [ 1, ]\n"); |
| 1007 assertParseErrorWithOverwriteForbidden( |
| 1008 "1:25: Expected \"{\".", |
| 1009 "RepeatedGroup [{ a: 1 },]\n"); |
| 1010 assertParseErrorWithOverwriteForbidden( |
| 1011 "1:37: Expected \"{\".", |
| 1012 "repeated_nested_message [{ bb: 1 }, ]\n"); |
| 1013 } |
| 1014 |
994 public void testParseShortRepeatedFormOfNonRepeatedFields() throws Exception { | 1015 public void testParseShortRepeatedFormOfNonRepeatedFields() throws Exception { |
995 assertParseErrorWithOverwriteForbidden( | 1016 assertParseErrorWithOverwriteForbidden( |
996 "1:17: Couldn't parse integer: For input string: \"[\"", | 1017 "1:17: Couldn't parse integer: For input string: \"[\"", |
997 "optional_int32: [1]\n"); | 1018 "optional_int32: [1]\n"); |
| 1019 assertParseErrorWithOverwriteForbidden( |
| 1020 "1:17: Couldn't parse integer: For input string: \"[\"", |
| 1021 "optional_int32: []\n"); |
998 } | 1022 } |
999 | 1023 |
1000 // ======================================================================= | 1024 // ======================================================================= |
1001 // test oneof | 1025 // test oneof |
1002 | 1026 |
1003 public void testOneofTextFormat() throws Exception { | 1027 public void testOneofTextFormat() throws Exception { |
1004 TestOneof2.Builder builder = TestOneof2.newBuilder(); | 1028 TestOneof2.Builder builder = TestOneof2.newBuilder(); |
1005 TestUtil.setOneof(builder); | 1029 TestUtil.setOneof(builder); |
1006 TestOneof2 message = builder.build(); | 1030 TestOneof2 message = builder.build(); |
1007 TestOneof2.Builder dest = TestOneof2.newBuilder(); | 1031 TestOneof2.Builder dest = TestOneof2.newBuilder(); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1120 } else if (line != -1 && column != -1) { | 1144 } else if (line != -1 && column != -1) { |
1121 fail( | 1145 fail( |
1122 String.format( | 1146 String.format( |
1123 "Tree/descriptor/fieldname did not contain index %d, line %d colum
n %d expected", | 1147 "Tree/descriptor/fieldname did not contain index %d, line %d colum
n %d expected", |
1124 index, | 1148 index, |
1125 line, | 1149 line, |
1126 column)); | 1150 column)); |
1127 } | 1151 } |
1128 } | 1152 } |
1129 } | 1153 } |
OLD | NEW |