Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(282)

Side by Side Diff: third_party/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/ParserTest.java

Issue 2495533002: third_party/protobuf: Update to HEAD (83d681ee2c) (Closed)
Patch Set: Make chrome settings proto generated file a component Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 // http://code.google.com/p/protobuf/
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.
11 // * Redistributions in binary form must reproduce the above 11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer 12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the 13 // in the documentation and/or other materials provided with the
14 // distribution. 14 // distribution.
15 // * Neither the name of Google Inc. nor the names of its 15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from 16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission. 17 // this software without specific prior written permission.
18 // 18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 30
31 package com.google.protobuf; 31 package com.google.protobuf.test;
32 import com.google.protobuf.*;
32 33
33 import com.google.protobuf.UnittestLite.TestAllTypesLite;
34 import com.google.protobuf.UnittestLite.TestPackedExtensionsLite;
35 import com.google.protobuf.UnittestLite.TestParsingMergeLite;
36 import protobuf_unittest.UnittestOptimizeFor;
37 import protobuf_unittest.UnittestOptimizeFor.TestOptimizedForSize; 34 import protobuf_unittest.UnittestOptimizeFor.TestOptimizedForSize;
38 import protobuf_unittest.UnittestOptimizeFor.TestRequiredOptimizedForSize; 35 import protobuf_unittest.UnittestOptimizeFor.TestRequiredOptimizedForSize;
39 import protobuf_unittest.UnittestProto; 36 import protobuf_unittest.UnittestOptimizeFor;
40 import protobuf_unittest.UnittestProto.ForeignMessage; 37 import protobuf_unittest.UnittestProto.ForeignMessage;
41 import protobuf_unittest.UnittestProto.TestAllTypes; 38 import protobuf_unittest.UnittestProto.TestAllTypes;
42 import protobuf_unittest.UnittestProto.TestEmptyMessage; 39 import protobuf_unittest.UnittestProto.TestEmptyMessage;
40 import protobuf_unittest.UnittestProto.TestRequired;
43 import protobuf_unittest.UnittestProto.TestParsingMerge; 41 import protobuf_unittest.UnittestProto.TestParsingMerge;
44 import protobuf_unittest.UnittestProto.TestRequired; 42 import protobuf_unittest.UnittestProto;
45 43
46 import junit.framework.TestCase; 44 import junit.framework.TestCase;
47 45
48 import java.io.ByteArrayInputStream; 46 import java.io.ByteArrayInputStream;
49 import java.io.ByteArrayOutputStream; 47 import java.io.ByteArrayOutputStream;
50 import java.io.IOException; 48 import java.io.IOException;
51 import java.io.InputStream; 49 import java.io.InputStream;
52 50
53 /** 51 /**
54 * Unit test for {@link Parser}. 52 * Unit test for {@link Parser}.
55 * 53 *
56 * @author liujisi@google.com (Pherl Liu) 54 * @author liujisi@google.com (Pherl Liu)
57 */ 55 */
58 public class ParserTest extends TestCase { 56 public class ParserTest extends TestCase {
59 public void testGeneratedMessageParserSingleton() throws Exception { 57 public void testGeneratedMessageParserSingleton() throws Exception {
60 for (int i = 0; i < 10; i++) { 58 for (int i = 0; i < 10; i++) {
61 assertEquals(TestAllTypes.parser(), TestUtil.getAllSet().getParserForType( )); 59 assertEquals(TestAllTypes.PARSER,
60 TestUtil.getAllSet().getParserForType());
62 } 61 }
63 } 62 }
64 63
65 private void assertRoundTripEquals(MessageLite message, 64 private void assertRoundTripEquals(MessageLite message,
66 ExtensionRegistryLite registry) 65 ExtensionRegistryLite registry)
67 throws Exception { 66 throws Exception {
68 final byte[] data = message.toByteArray(); 67 final byte[] data = message.toByteArray();
69 final int offset = 20; 68 final int offset = 20;
70 final int length = data.length; 69 final int length = data.length;
71 final int padding = 30; 70 final int padding = 30;
72 Parser<? extends MessageLite> parser = message.getParserForType(); 71 Parser<? extends MessageLite> parser = message.getParserForType();
73 assertMessageEquals(message, parser.parseFrom(data, registry)); 72 assertMessageEquals(message, parser.parseFrom(data, registry));
74 assertMessageEquals(message, parser.parseFrom( 73 assertMessageEquals(message, parser.parseFrom(
75 generatePaddingArray(data, offset, padding), 74 generatePaddingArray(data, offset, padding),
76 offset, length, registry)); 75 offset, length, registry));
77 assertMessageEquals(message, parser.parseFrom( 76 assertMessageEquals(message, parser.parseFrom(
78 message.toByteString(), registry)); 77 message.toByteString(), registry));
79 assertMessageEquals(message, parser.parseFrom( 78 assertMessageEquals(message, parser.parseFrom(
80 new ByteArrayInputStream(data), registry)); 79 new ByteArrayInputStream(data), registry));
81 assertMessageEquals(message, parser.parseFrom( 80 assertMessageEquals(message, parser.parseFrom(
82 CodedInputStream.newInstance(data), registry)); 81 CodedInputStream.newInstance(data), registry));
83 } 82 }
84 83
85 @SuppressWarnings("unchecked")
86 private void assertRoundTripEquals(MessageLite message) throws Exception { 84 private void assertRoundTripEquals(MessageLite message) throws Exception {
87 final byte[] data = message.toByteArray(); 85 final byte[] data = message.toByteArray();
88 final int offset = 20; 86 final int offset = 20;
89 final int length = data.length; 87 final int length = data.length;
90 final int padding = 30; 88 final int padding = 30;
91 89 Parser<? extends MessageLite> parser = message.getParserForType();
92 Parser<MessageLite> parser =
93 (Parser<MessageLite>) message.getParserForType();
94 assertMessageEquals(message, parser.parseFrom(data)); 90 assertMessageEquals(message, parser.parseFrom(data));
95 assertMessageEquals(message, parser.parseFrom( 91 assertMessageEquals(message, parser.parseFrom(
96 generatePaddingArray(data, offset, padding), 92 generatePaddingArray(data, offset, padding),
97 offset, length)); 93 offset, length));
98 assertMessageEquals(message, parser.parseFrom(message.toByteString())); 94 assertMessageEquals(message, parser.parseFrom(message.toByteString()));
99 assertMessageEquals(message, parser.parseFrom( 95 assertMessageEquals(message, parser.parseFrom(
100 new ByteArrayInputStream(data))); 96 new ByteArrayInputStream(data)));
101 assertMessageEquals(message, parser.parseFrom( 97 assertMessageEquals(message, parser.parseFrom(
102 CodedInputStream.newInstance(data))); 98 CodedInputStream.newInstance(data)));
103 } 99 }
104 100
105 private void assertMessageEquals( 101 private void assertMessageEquals(MessageLite expected, MessageLite actual)
106 MessageLite expected, MessageLite actual)
107 throws Exception { 102 throws Exception {
108 if (expected instanceof Message) { 103 if (expected instanceof Message) {
109 assertEquals(expected, actual); 104 assertEquals(expected, actual);
110 } else { 105 } else {
111 assertEquals(expected.toByteString(), actual.toByteString()); 106 assertEquals(expected.toByteString(), actual.toByteString());
112 } 107 }
113 } 108 }
114 109
115 private byte[] generatePaddingArray(byte[] data, int offset, int padding) { 110 private byte[] generatePaddingArray(byte[] data, int offset, int padding) {
116 byte[] result = new byte[offset + data.length + padding]; 111 byte[] result = new byte[offset + data.length + padding];
117 System.arraycopy(data, 0, result, offset, data.length); 112 System.arraycopy(data, 0, result, offset, data.length);
118 return result; 113 return result;
119 } 114 }
120 115
121 public void testNormalMessage() throws Exception { 116 public void testNormalMessage() throws Exception {
122 assertRoundTripEquals(TestUtil.getAllSet()); 117 assertRoundTripEquals(TestUtil.getAllSet());
123 } 118 }
124 119
125
126 public void testParsePartial() throws Exception { 120 public void testParsePartial() throws Exception {
127 assertParsePartial(TestRequired.parser(), TestRequired.newBuilder().setA(1). buildPartial()); 121 Parser<TestRequired> parser = TestRequired.PARSER;
128 }
129
130 private <T extends MessageLite> void assertParsePartial(
131 Parser<T> parser, T partialMessage) throws Exception {
132 final String errorString = 122 final String errorString =
133 "Should throw exceptions when the parsed message isn't initialized."; 123 "Should throw exceptions when the parsed message isn't initialized.";
134 124
125 // TestRequired.b and TestRequired.c are not set.
126 TestRequired partialMessage = TestRequired.newBuilder()
127 .setA(1).buildPartial();
128
135 // parsePartialFrom should pass. 129 // parsePartialFrom should pass.
136 byte[] data = partialMessage.toByteArray(); 130 byte[] data = partialMessage.toByteArray();
137 assertEquals(partialMessage, parser.parsePartialFrom(data)); 131 assertEquals(partialMessage, parser.parsePartialFrom(data));
138 assertEquals(partialMessage, parser.parsePartialFrom( 132 assertEquals(partialMessage, parser.parsePartialFrom(
139 partialMessage.toByteString())); 133 partialMessage.toByteString()));
140 assertEquals(partialMessage, parser.parsePartialFrom( 134 assertEquals(partialMessage, parser.parsePartialFrom(
141 new ByteArrayInputStream(data))); 135 new ByteArrayInputStream(data)));
142 assertEquals(partialMessage, parser.parsePartialFrom( 136 assertEquals(partialMessage, parser.parsePartialFrom(
143 CodedInputStream.newInstance(data))); 137 CodedInputStream.newInstance(data)));
144 138
(...skipping 24 matching lines...) Expand all
169 // parseFrom(CodedInputStream) 163 // parseFrom(CodedInputStream)
170 try { 164 try {
171 parser.parseFrom(CodedInputStream.newInstance( 165 parser.parseFrom(CodedInputStream.newInstance(
172 partialMessage.toByteArray())); 166 partialMessage.toByteArray()));
173 fail(errorString); 167 fail(errorString);
174 } catch (IOException e) { 168 } catch (IOException e) {
175 // pass. 169 // pass.
176 } 170 }
177 } 171 }
178 172
179 public void testParseExtensions() throws Exception {
180 assertRoundTripEquals(TestUtil.getAllExtensionsSet(),
181 TestUtil.getExtensionRegistry());
182 assertRoundTripEquals(
183 TestUtilLite.getAllLiteExtensionsSet(), TestUtilLite.getExtensionRegistr yLite());
184 }
185
186 public void testParsePacked() throws Exception {
187 assertRoundTripEquals(TestUtil.getPackedSet());
188 assertRoundTripEquals(TestUtil.getPackedExtensionsSet(),
189 TestUtil.getExtensionRegistry());
190 assertRoundTripEquals(
191 TestUtilLite.getLitePackedExtensionsSet(), TestUtilLite.getExtensionRegi stryLite());
192 }
193
194 public void testParseDelimitedTo() throws Exception { 173 public void testParseDelimitedTo() throws Exception {
195 // Write normal Message. 174 // Write normal Message.
196 TestAllTypes normalMessage = TestUtil.getAllSet(); 175 TestAllTypes normalMessage = TestUtil.getAllSet();
197 ByteArrayOutputStream output = new ByteArrayOutputStream(); 176 ByteArrayOutputStream output = new ByteArrayOutputStream();
198 normalMessage.writeDelimitedTo(output); 177 normalMessage.writeDelimitedTo(output);
199 178
200 // Write MessageLite with packed extension fields.
201 TestPackedExtensionsLite packedMessage = TestUtilLite.getLitePackedExtension sSet();
202 packedMessage.writeDelimitedTo(output);
203
204 InputStream input = new ByteArrayInputStream(output.toByteArray()); 179 InputStream input = new ByteArrayInputStream(output.toByteArray());
205 assertMessageEquals( 180 assertMessageEquals(
206 normalMessage, 181 normalMessage,
207 normalMessage.getParserForType().parseDelimitedFrom(input)); 182 normalMessage.getParserForType().parseDelimitedFrom(input));
208 assertMessageEquals(
209 packedMessage,
210 packedMessage
211 .getParserForType()
212 .parseDelimitedFrom(input, TestUtilLite.getExtensionRegistryLite())) ;
213 } 183 }
214 184
215 public void testParseUnknownFields() throws Exception { 185 public void testParseUnknownFields() throws Exception {
216 // All fields will be treated as unknown fields in emptyMessage. 186 // All fields will be treated as unknown fields in emptyMessage.
217 TestEmptyMessage emptyMessage = 187 TestEmptyMessage emptyMessage = TestEmptyMessage.PARSER.parseFrom(
218 TestEmptyMessage.parser().parseFrom(TestUtil.getAllSet().toByteString()) ; 188 TestUtil.getAllSet().toByteString());
219 assertEquals( 189 assertEquals(
220 TestUtil.getAllSet().toByteString(), 190 TestUtil.getAllSet().toByteString(),
221 emptyMessage.toByteString()); 191 emptyMessage.toByteString());
222 } 192 }
223 193
224
225 public void testOptimizeForSize() throws Exception { 194 public void testOptimizeForSize() throws Exception {
226 TestOptimizedForSize.Builder builder = TestOptimizedForSize.newBuilder(); 195 TestOptimizedForSize.Builder builder = TestOptimizedForSize.newBuilder();
227 builder.setI(12).setMsg(ForeignMessage.newBuilder().setC(34).build()); 196 builder.setI(12).setMsg(ForeignMessage.newBuilder().setC(34).build());
228 builder.setExtension(TestOptimizedForSize.testExtension, 56); 197 builder.setExtension(TestOptimizedForSize.testExtension, 56);
229 builder.setExtension(TestOptimizedForSize.testExtension2, 198 builder.setExtension(TestOptimizedForSize.testExtension2,
230 TestRequiredOptimizedForSize.newBuilder().setX(78).build()); 199 TestRequiredOptimizedForSize.newBuilder().setX(78).build());
231 200
232 TestOptimizedForSize message = builder.build(); 201 TestOptimizedForSize message = builder.build();
233 ExtensionRegistry registry = ExtensionRegistry.newInstance(); 202 ExtensionRegistry registry = ExtensionRegistry.newInstance();
234 UnittestOptimizeFor.registerAllExtensions(registry); 203 UnittestOptimizeFor.registerAllExtensions(registry);
235 204
236 assertRoundTripEquals(message, registry); 205 assertRoundTripEquals(message, registry);
237 } 206 }
238 207
239 /** Helper method for {@link #testParsingMerge()}.*/ 208 /** Helper method for {@link #testParsingMerge()}.*/
240 private void assertMessageMerged(TestAllTypes allTypes) 209 private void assertMessageMerged(TestAllTypes allTypes)
241 throws Exception { 210 throws Exception {
242 assertEquals(3, allTypes.getOptionalInt32()); 211 assertEquals(3, allTypes.getOptionalInt32());
243 assertEquals(2, allTypes.getOptionalInt64()); 212 assertEquals(2, allTypes.getOptionalInt64());
244 assertEquals("hello", allTypes.getOptionalString()); 213 assertEquals("hello", allTypes.getOptionalString());
245 } 214 }
246 215
247 /** Helper method for {@link #testParsingMergeLite()}.*/
248 private void assertMessageMerged(TestAllTypesLite allTypes)
249 throws Exception {
250 assertEquals(3, allTypes.getOptionalInt32());
251 assertEquals(2, allTypes.getOptionalInt64());
252 assertEquals("hello", allTypes.getOptionalString());
253 }
254
255 public void testParsingMerge() throws Exception { 216 public void testParsingMerge() throws Exception {
256 // Build messages. 217 // Build messages.
257 TestAllTypes.Builder builder = TestAllTypes.newBuilder(); 218 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
258 TestAllTypes msg1 = builder.setOptionalInt32(1).build(); 219 TestAllTypes msg1 = builder.setOptionalInt32(1).build();
259 builder.clear(); 220 builder.clear();
260 TestAllTypes msg2 = builder.setOptionalInt64(2).build(); 221 TestAllTypes msg2 = builder.setOptionalInt64(2).build();
261 builder.clear(); 222 builder.clear();
262 TestAllTypes msg3 = builder.setOptionalInt32(3) 223 TestAllTypes msg3 = builder.setOptionalInt32(3)
263 .setOptionalString("hello").build(); 224 .setOptionalString("hello").build();
264 225
(...skipping 24 matching lines...) Expand all
289 .addField3(msg1).addField3(msg2).addField3(msg3) 250 .addField3(msg1).addField3(msg2).addField3(msg3)
290 .addGroup1(optionalG1).addGroup1(optionalG2).addGroup1(optionalG3) 251 .addGroup1(optionalG1).addGroup1(optionalG2).addGroup1(optionalG3)
291 .addGroup2(repeatedG1).addGroup2(repeatedG2).addGroup2(repeatedG3) 252 .addGroup2(repeatedG1).addGroup2(repeatedG2).addGroup2(repeatedG3)
292 .addExt1(msg1).addExt1(msg2).addExt1(msg3) 253 .addExt1(msg1).addExt1(msg2).addExt1(msg3)
293 .addExt2(msg1).addExt2(msg2).addExt2(msg3) 254 .addExt2(msg1).addExt2(msg2).addExt2(msg3)
294 .build().toByteString(); 255 .build().toByteString();
295 256
296 // Parse TestParsingMerge. 257 // Parse TestParsingMerge.
297 ExtensionRegistry registry = ExtensionRegistry.newInstance(); 258 ExtensionRegistry registry = ExtensionRegistry.newInstance();
298 UnittestProto.registerAllExtensions(registry); 259 UnittestProto.registerAllExtensions(registry);
299 TestParsingMerge parsingMerge = TestParsingMerge.parser().parseFrom(data, re gistry); 260 TestParsingMerge parsingMerge =
261 TestParsingMerge.PARSER.parseFrom(data, registry);
300 262
301 // Required and optional fields should be merged. 263 // Required and optional fields should be merged.
302 assertMessageMerged(parsingMerge.getRequiredAllTypes()); 264 assertMessageMerged(parsingMerge.getRequiredAllTypes());
303 assertMessageMerged(parsingMerge.getOptionalAllTypes()); 265 assertMessageMerged(parsingMerge.getOptionalAllTypes());
304 assertMessageMerged( 266 assertMessageMerged(
305 parsingMerge.getOptionalGroup().getOptionalGroupAllTypes()); 267 parsingMerge.getOptionalGroup().getOptionalGroupAllTypes());
306 assertMessageMerged(parsingMerge.getExtension( 268 assertMessageMerged(parsingMerge.getExtension(
307 TestParsingMerge.optionalExt)); 269 TestParsingMerge.optionalExt));
308 270
309 // Repeated fields should not be merged. 271 // Repeated fields should not be merged.
310 assertEquals(3, parsingMerge.getRepeatedAllTypesCount()); 272 assertEquals(3, parsingMerge.getRepeatedAllTypesCount());
311 assertEquals(3, parsingMerge.getRepeatedGroupCount()); 273 assertEquals(3, parsingMerge.getRepeatedGroupCount());
312 assertEquals(3, parsingMerge.getExtensionCount( 274 assertEquals(3, parsingMerge.getExtensionCount(
313 TestParsingMerge.repeatedExt)); 275 TestParsingMerge.repeatedExt));
314 } 276 }
315 277
316 public void testParsingMergeLite() throws Exception {
317 // Build messages.
318 TestAllTypesLite.Builder builder =
319 TestAllTypesLite.newBuilder();
320 TestAllTypesLite msg1 = builder.setOptionalInt32(1).build();
321 builder.clear();
322 TestAllTypesLite msg2 = builder.setOptionalInt64(2).build();
323 builder.clear();
324 TestAllTypesLite msg3 = builder.setOptionalInt32(3)
325 .setOptionalString("hello").build();
326
327 // Build groups.
328 TestParsingMergeLite.RepeatedFieldsGenerator.Group1 optionalG1 =
329 TestParsingMergeLite.RepeatedFieldsGenerator.Group1.newBuilder()
330 .setField1(msg1).build();
331 TestParsingMergeLite.RepeatedFieldsGenerator.Group1 optionalG2 =
332 TestParsingMergeLite.RepeatedFieldsGenerator.Group1.newBuilder()
333 .setField1(msg2).build();
334 TestParsingMergeLite.RepeatedFieldsGenerator.Group1 optionalG3 =
335 TestParsingMergeLite.RepeatedFieldsGenerator.Group1.newBuilder()
336 .setField1(msg3).build();
337 TestParsingMergeLite.RepeatedFieldsGenerator.Group2 repeatedG1 =
338 TestParsingMergeLite.RepeatedFieldsGenerator.Group2.newBuilder()
339 .setField1(msg1).build();
340 TestParsingMergeLite.RepeatedFieldsGenerator.Group2 repeatedG2 =
341 TestParsingMergeLite.RepeatedFieldsGenerator.Group2.newBuilder()
342 .setField1(msg2).build();
343 TestParsingMergeLite.RepeatedFieldsGenerator.Group2 repeatedG3 =
344 TestParsingMergeLite.RepeatedFieldsGenerator.Group2.newBuilder()
345 .setField1(msg3).build();
346
347 // Assign and serialize RepeatedFieldsGenerator.
348 ByteString data = TestParsingMergeLite.RepeatedFieldsGenerator.newBuilder()
349 .addField1(msg1).addField1(msg2).addField1(msg3)
350 .addField2(msg1).addField2(msg2).addField2(msg3)
351 .addField3(msg1).addField3(msg2).addField3(msg3)
352 .addGroup1(optionalG1).addGroup1(optionalG2).addGroup1(optionalG3)
353 .addGroup2(repeatedG1).addGroup2(repeatedG2).addGroup2(repeatedG3)
354 .addExt1(msg1).addExt1(msg2).addExt1(msg3)
355 .addExt2(msg1).addExt2(msg2).addExt2(msg3)
356 .build().toByteString();
357
358 // Parse TestParsingMergeLite.
359 ExtensionRegistry registry = ExtensionRegistry.newInstance();
360 UnittestLite.registerAllExtensions(registry);
361 TestParsingMergeLite parsingMerge = TestParsingMergeLite.parser().parseFrom( data, registry);
362
363 // Required and optional fields should be merged.
364 assertMessageMerged(parsingMerge.getRequiredAllTypes());
365 assertMessageMerged(parsingMerge.getOptionalAllTypes());
366 assertMessageMerged(
367 parsingMerge.getOptionalGroup().getOptionalGroupAllTypes());
368 assertMessageMerged(parsingMerge.getExtension(
369 TestParsingMergeLite.optionalExt));
370
371 // Repeated fields should not be merged.
372 assertEquals(3, parsingMerge.getRepeatedAllTypesCount());
373 assertEquals(3, parsingMerge.getRepeatedGroupCount());
374 assertEquals(3, parsingMerge.getExtensionCount(
375 TestParsingMergeLite.repeatedExt));
376 }
377 } 278 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698