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

Side by Side Diff: third_party/protobuf/java/src/test/java/com/google/protobuf/DynamicMessageTest.java

Issue 556933002: Remove protobuf lite for java. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase before submit Created 6 years, 3 months 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
(Empty)
1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved.
3 // http://code.google.com/p/protobuf/
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the
14 // distribution.
15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
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.
30
31 package com.google.protobuf;
32
33 import protobuf_unittest.UnittestProto.TestAllExtensions;
34 import protobuf_unittest.UnittestProto.TestAllTypes;
35 import protobuf_unittest.UnittestProto.TestEmptyMessage;
36 import protobuf_unittest.UnittestProto.TestPackedTypes;
37
38 import junit.framework.TestCase;
39 import java.util.Arrays;
40
41 /**
42 * Unit test for {@link DynamicMessage}. See also {@link MessageTest}, which
43 * tests some {@link DynamicMessage} functionality.
44 *
45 * @author kenton@google.com Kenton Varda
46 */
47 public class DynamicMessageTest extends TestCase {
48 TestUtil.ReflectionTester reflectionTester =
49 new TestUtil.ReflectionTester(TestAllTypes.getDescriptor(), null);
50
51 TestUtil.ReflectionTester extensionsReflectionTester =
52 new TestUtil.ReflectionTester(TestAllExtensions.getDescriptor(),
53 TestUtil.getExtensionRegistry());
54 TestUtil.ReflectionTester packedReflectionTester =
55 new TestUtil.ReflectionTester(TestPackedTypes.getDescriptor(), null);
56
57 public void testDynamicMessageAccessors() throws Exception {
58 Message.Builder builder =
59 DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
60 reflectionTester.setAllFieldsViaReflection(builder);
61 Message message = builder.build();
62 reflectionTester.assertAllFieldsSetViaReflection(message);
63 }
64
65 public void testSettersAfterBuild() throws Exception {
66 Message.Builder builder =
67 DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
68 Message firstMessage = builder.build();
69 // double build()
70 builder.build();
71 // clear() after build()
72 builder.clear();
73 // setters after build()
74 reflectionTester.setAllFieldsViaReflection(builder);
75 Message message = builder.build();
76 reflectionTester.assertAllFieldsSetViaReflection(message);
77 // repeated setters after build()
78 reflectionTester.modifyRepeatedFieldsViaReflection(builder);
79 message = builder.build();
80 reflectionTester.assertRepeatedFieldsModifiedViaReflection(message);
81 // firstMessage shouldn't have been modified.
82 reflectionTester.assertClearViaReflection(firstMessage);
83 }
84
85 public void testUnknownFields() throws Exception {
86 Message.Builder builder =
87 DynamicMessage.newBuilder(TestEmptyMessage.getDescriptor());
88 builder.setUnknownFields(UnknownFieldSet.newBuilder()
89 .addField(1, UnknownFieldSet.Field.newBuilder().addVarint(1).build())
90 .addField(2, UnknownFieldSet.Field.newBuilder().addFixed32(1).build())
91 .build());
92 Message message = builder.build();
93 assertEquals(2, message.getUnknownFields().asMap().size());
94 // clone() with unknown fields
95 Message.Builder newBuilder = builder.clone();
96 assertEquals(2, newBuilder.getUnknownFields().asMap().size());
97 // clear() with unknown fields
98 newBuilder.clear();
99 assertTrue(newBuilder.getUnknownFields().asMap().isEmpty());
100 // serialize/parse with unknown fields
101 newBuilder.mergeFrom(message.toByteString());
102 assertEquals(2, newBuilder.getUnknownFields().asMap().size());
103 }
104
105 public void testDynamicMessageSettersRejectNull() throws Exception {
106 Message.Builder builder =
107 DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
108 reflectionTester.assertReflectionSettersRejectNull(builder);
109 }
110
111 public void testDynamicMessageExtensionAccessors() throws Exception {
112 // We don't need to extensively test DynamicMessage's handling of
113 // extensions because, frankly, it doesn't do anything special with them.
114 // It treats them just like any other fields.
115 Message.Builder builder =
116 DynamicMessage.newBuilder(TestAllExtensions.getDescriptor());
117 extensionsReflectionTester.setAllFieldsViaReflection(builder);
118 Message message = builder.build();
119 extensionsReflectionTester.assertAllFieldsSetViaReflection(message);
120 }
121
122 public void testDynamicMessageExtensionSettersRejectNull() throws Exception {
123 Message.Builder builder =
124 DynamicMessage.newBuilder(TestAllExtensions.getDescriptor());
125 extensionsReflectionTester.assertReflectionSettersRejectNull(builder);
126 }
127
128 public void testDynamicMessageRepeatedSetters() throws Exception {
129 Message.Builder builder =
130 DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
131 reflectionTester.setAllFieldsViaReflection(builder);
132 reflectionTester.modifyRepeatedFieldsViaReflection(builder);
133 Message message = builder.build();
134 reflectionTester.assertRepeatedFieldsModifiedViaReflection(message);
135 }
136
137 public void testDynamicMessageRepeatedSettersRejectNull() throws Exception {
138 Message.Builder builder =
139 DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
140 reflectionTester.assertReflectionRepeatedSettersRejectNull(builder);
141 }
142
143 public void testDynamicMessageDefaults() throws Exception {
144 reflectionTester.assertClearViaReflection(
145 DynamicMessage.getDefaultInstance(TestAllTypes.getDescriptor()));
146 reflectionTester.assertClearViaReflection(
147 DynamicMessage.newBuilder(TestAllTypes.getDescriptor()).build());
148 }
149
150 public void testDynamicMessageSerializedSize() throws Exception {
151 TestAllTypes message = TestUtil.getAllSet();
152
153 Message.Builder dynamicBuilder =
154 DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
155 reflectionTester.setAllFieldsViaReflection(dynamicBuilder);
156 Message dynamicMessage = dynamicBuilder.build();
157
158 assertEquals(message.getSerializedSize(),
159 dynamicMessage.getSerializedSize());
160 }
161
162 public void testDynamicMessageSerialization() throws Exception {
163 Message.Builder builder =
164 DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
165 reflectionTester.setAllFieldsViaReflection(builder);
166 Message message = builder.build();
167
168 ByteString rawBytes = message.toByteString();
169 TestAllTypes message2 = TestAllTypes.parseFrom(rawBytes);
170
171 TestUtil.assertAllFieldsSet(message2);
172
173 // In fact, the serialized forms should be exactly the same, byte-for-byte.
174 assertEquals(TestUtil.getAllSet().toByteString(), rawBytes);
175 }
176
177 public void testDynamicMessageParsing() throws Exception {
178 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
179 TestUtil.setAllFields(builder);
180 TestAllTypes message = builder.build();
181
182 ByteString rawBytes = message.toByteString();
183
184 Message message2 =
185 DynamicMessage.parseFrom(TestAllTypes.getDescriptor(), rawBytes);
186 reflectionTester.assertAllFieldsSetViaReflection(message2);
187
188 // Test Parser interface.
189 Message message3 = message2.getParserForType().parseFrom(rawBytes);
190 reflectionTester.assertAllFieldsSetViaReflection(message3);
191 }
192
193 public void testDynamicMessageExtensionParsing() throws Exception {
194 ByteString rawBytes = TestUtil.getAllExtensionsSet().toByteString();
195 Message message = DynamicMessage.parseFrom(
196 TestAllExtensions.getDescriptor(), rawBytes,
197 TestUtil.getExtensionRegistry());
198 extensionsReflectionTester.assertAllFieldsSetViaReflection(message);
199
200 // Test Parser interface.
201 Message message2 = message.getParserForType().parseFrom(
202 rawBytes, TestUtil.getExtensionRegistry());
203 extensionsReflectionTester.assertAllFieldsSetViaReflection(message2);
204 }
205
206 public void testDynamicMessagePackedSerialization() throws Exception {
207 Message.Builder builder =
208 DynamicMessage.newBuilder(TestPackedTypes.getDescriptor());
209 packedReflectionTester.setPackedFieldsViaReflection(builder);
210 Message message = builder.build();
211
212 ByteString rawBytes = message.toByteString();
213 TestPackedTypes message2 = TestPackedTypes.parseFrom(rawBytes);
214
215 TestUtil.assertPackedFieldsSet(message2);
216
217 // In fact, the serialized forms should be exactly the same, byte-for-byte.
218 assertEquals(TestUtil.getPackedSet().toByteString(), rawBytes);
219 }
220
221 public void testDynamicMessagePackedParsing() throws Exception {
222 TestPackedTypes.Builder builder = TestPackedTypes.newBuilder();
223 TestUtil.setPackedFields(builder);
224 TestPackedTypes message = builder.build();
225
226 ByteString rawBytes = message.toByteString();
227
228 Message message2 =
229 DynamicMessage.parseFrom(TestPackedTypes.getDescriptor(), rawBytes);
230 packedReflectionTester.assertPackedFieldsSetViaReflection(message2);
231
232 // Test Parser interface.
233 Message message3 = message2.getParserForType().parseFrom(rawBytes);
234 packedReflectionTester.assertPackedFieldsSetViaReflection(message3);
235 }
236
237 public void testDynamicMessageCopy() throws Exception {
238 TestAllTypes.Builder builder = TestAllTypes.newBuilder();
239 TestUtil.setAllFields(builder);
240 TestAllTypes message = builder.build();
241
242 DynamicMessage copy = DynamicMessage.newBuilder(message).build();
243 reflectionTester.assertAllFieldsSetViaReflection(copy);
244 }
245
246 public void testToBuilder() throws Exception {
247 DynamicMessage.Builder builder =
248 DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
249 reflectionTester.setAllFieldsViaReflection(builder);
250 int unknownFieldNum = 9;
251 long unknownFieldVal = 90;
252 builder.setUnknownFields(UnknownFieldSet.newBuilder()
253 .addField(unknownFieldNum,
254 UnknownFieldSet.Field.newBuilder()
255 .addVarint(unknownFieldVal).build())
256 .build());
257 DynamicMessage message = builder.build();
258
259 DynamicMessage derived = message.toBuilder().build();
260 reflectionTester.assertAllFieldsSetViaReflection(derived);
261 assertEquals(Arrays.asList(unknownFieldVal),
262 derived.getUnknownFields().getField(unknownFieldNum).getVarintList());
263 }
264 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698