LazyMessageLiteTest.java
Go to the documentation of this file.
1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/
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.LazyFieldsLite.LazyExtension;
34 import protobuf_unittest.LazyFieldsLite.LazyInnerMessageLite;
35 import protobuf_unittest.LazyFieldsLite.LazyMessageLite;
36 import protobuf_unittest.LazyFieldsLite.LazyNestedInnerMessageLite;
37 import java.util.ArrayList;
38 import junit.framework.TestCase;
39 
45 public class LazyMessageLiteTest extends TestCase {
46 
47  @Override
48  protected void setUp() throws Exception {
49  super.setUp();
50  }
51 
52  @Override
53  protected void tearDown() throws Exception {
54  super.tearDown();
55  }
56 
57  public void testSetValues() {
58  LazyNestedInnerMessageLite nested = LazyNestedInnerMessageLite.newBuilder().setNum(3).build();
59  LazyInnerMessageLite inner =
60  LazyInnerMessageLite.newBuilder().setNum(2).setNested(nested).build();
61  LazyMessageLite outer =
62  LazyMessageLite.newBuilder()
63  .setNum(1)
64  .setInner(inner)
65  .setOneofNum(123)
66  .setOneofInner(inner)
67  .build();
68 
69  assertEquals(1, outer.getNum());
70  assertEquals(421, outer.getNumWithDefault());
71 
72  assertEquals(2, outer.getInner().getNum());
73  assertEquals(42, outer.getInner().getNumWithDefault());
74 
75  assertEquals(3, outer.getInner().getNested().getNum());
76  assertEquals(4, outer.getInner().getNested().getNumWithDefault());
77 
78  assertFalse(outer.hasOneofNum());
79  assertTrue(outer.hasOneofInner());
80 
81  assertEquals(2, outer.getOneofInner().getNum());
82  assertEquals(42, outer.getOneofInner().getNumWithDefault());
83  assertEquals(3, outer.getOneofInner().getNested().getNum());
84  assertEquals(4, outer.getOneofInner().getNested().getNumWithDefault());
85  }
86 
87  public void testSetRepeatedValues() {
88  LazyMessageLite outer =
89  LazyMessageLite.newBuilder()
90  .setNum(1)
91  .addRepeatedInner(LazyInnerMessageLite.newBuilder().setNum(119))
92  .addRepeatedInner(LazyInnerMessageLite.newBuilder().setNum(122))
93  .build();
94 
95  assertEquals(1, outer.getNum());
96  assertEquals(2, outer.getRepeatedInnerCount());
97  assertEquals(119, outer.getRepeatedInner(0).getNum());
98  assertEquals(122, outer.getRepeatedInner(1).getNum());
99  }
100 
101  public void testRepeatedMutability() throws Exception {
102  LazyMessageLite outer =
103  LazyMessageLite.newBuilder()
104  .addRepeatedInner(LazyInnerMessageLite.newBuilder().setNum(119))
105  .addRepeatedInner(LazyInnerMessageLite.newBuilder().setNum(122))
106  .build();
107 
108  outer = LazyMessageLite.parseFrom(outer.toByteArray());
109  try {
110  outer.getRepeatedInnerList().set(1, null);
111  fail();
112  } catch (UnsupportedOperationException expected) {
113  }
114  }
115 
116  public void testAddAll() {
117  ArrayList<LazyInnerMessageLite> inners = new ArrayList<>();
118  int count = 4;
119  for (int i = 0; i < count; i++) {
120  LazyInnerMessageLite inner = LazyInnerMessageLite.newBuilder().setNum(i).build();
121  inners.add(inner);
122  }
123 
124  LazyMessageLite outer = LazyMessageLite.newBuilder().addAllRepeatedInner(inners).build();
125  assertEquals(count, outer.getRepeatedInnerCount());
126  for (int i = 0; i < count; i++) {
127  assertEquals(i, outer.getRepeatedInner(i).getNum());
128  }
129  }
130 
131  public void testGetDefaultValues() {
132  LazyMessageLite outer = LazyMessageLite.getDefaultInstance();
133 
134  assertEquals(0, outer.getNum());
135  assertEquals(421, outer.getNumWithDefault());
136 
137  assertEquals(0, outer.getInner().getNum());
138  assertEquals(42, outer.getInner().getNumWithDefault());
139 
140  assertEquals(0, outer.getInner().getNested().getNum());
141  assertEquals(4, outer.getInner().getNested().getNumWithDefault());
142 
143  assertEquals(0, outer.getOneofNum());
144 
145  assertEquals(0, outer.getOneofInner().getNum());
146  assertEquals(42, outer.getOneofInner().getNumWithDefault());
147  assertEquals(0, outer.getOneofInner().getNested().getNum());
148  assertEquals(4, outer.getOneofInner().getNested().getNumWithDefault());
149  }
150 
151  public void testClearValues() {
152  LazyInnerMessageLite inner = LazyInnerMessageLite.newBuilder().setNum(115).build();
153 
154  LazyMessageLite.Builder outerBuilder = LazyMessageLite.newBuilder();
155 
156  assertEquals(0, outerBuilder.build().getNum());
157 
158  // Set/Clear num
159  outerBuilder.setNum(100);
160 
161  assertEquals(100, outerBuilder.build().getNum());
162  assertEquals(421, outerBuilder.build().getNumWithDefault());
163  assertFalse(outerBuilder.build().hasInner());
164 
165  outerBuilder.clearNum();
166 
167  assertEquals(0, outerBuilder.build().getNum());
168  assertEquals(421, outerBuilder.build().getNumWithDefault());
169  assertFalse(outerBuilder.build().hasInner());
170 
171  // Set/Clear all
172  outerBuilder
173  .setNum(100)
174  .setInner(inner)
175  .addRepeatedInner(LazyInnerMessageLite.newBuilder().setNum(119))
176  .addRepeatedInner(LazyInnerMessageLite.newBuilder().setNum(122))
177  .setOneofInner(LazyInnerMessageLite.newBuilder().setNum(123));
178 
179  LazyMessageLite outer = outerBuilder.build();
180  assertEquals(100, outer.getNum());
181  assertEquals(421, outer.getNumWithDefault());
182  assertTrue(outer.hasInner());
183  assertEquals(115, outer.getInner().getNum());
184  assertEquals(2, outer.getRepeatedInnerCount());
185  assertEquals(119, outer.getRepeatedInner(0).getNum());
186  assertEquals(122, outer.getRepeatedInner(1).getNum());
187  assertTrue(outer.hasOneofInner());
188  assertEquals(123, outer.getOneofInner().getNum());
189 
190  outerBuilder.clear();
191 
192  outer = outerBuilder.build();
193 
194  assertEquals(0, outer.getNum());
195  assertEquals(421, outer.getNumWithDefault());
196  assertFalse(outer.hasInner());
197  assertEquals(0, outer.getRepeatedInnerCount());
198  assertFalse(outer.hasOneofInner());
199  assertEquals(0, outer.getOneofInner().getNum());
200  }
201 
202  public void testMergeValues() {
203  LazyMessageLite outerBase = LazyMessageLite.newBuilder().setNumWithDefault(122).build();
204 
205  LazyInnerMessageLite innerMerging = LazyInnerMessageLite.newBuilder().setNum(115).build();
206  LazyMessageLite outerMerging =
207  LazyMessageLite.newBuilder()
208  .setNum(119)
209  .setInner(innerMerging)
210  .setOneofInner(innerMerging)
211  .build();
212 
213  LazyMessageLite merged = LazyMessageLite.newBuilder(outerBase).mergeFrom(outerMerging).build();
214  assertEquals(119, merged.getNum());
215  assertEquals(122, merged.getNumWithDefault());
216  assertEquals(115, merged.getInner().getNum());
217  assertEquals(42, merged.getInner().getNumWithDefault());
218  assertEquals(115, merged.getOneofInner().getNum());
219  assertEquals(42, merged.getOneofInner().getNumWithDefault());
220  }
221 
222  public void testMergeDefaultValues() {
223  LazyInnerMessageLite innerBase = LazyInnerMessageLite.newBuilder().setNum(115).build();
224  LazyMessageLite outerBase =
225  LazyMessageLite.newBuilder()
226  .setNum(119)
227  .setNumWithDefault(122)
228  .setInner(innerBase)
229  .setOneofInner(innerBase)
230  .build();
231 
232  LazyMessageLite outerMerging = LazyMessageLite.getDefaultInstance();
233 
234  LazyMessageLite merged = LazyMessageLite.newBuilder(outerBase).mergeFrom(outerMerging).build();
235  // Merging default-instance shouldn't overwrite values in the base message.
236  assertEquals(119, merged.getNum());
237  assertEquals(122, merged.getNumWithDefault());
238  assertEquals(115, merged.getInner().getNum());
239  assertEquals(42, merged.getInner().getNumWithDefault());
240  assertEquals(115, merged.getOneofInner().getNum());
241  assertEquals(42, merged.getOneofInner().getNumWithDefault());
242  }
243 
244  // Regression test for b/28198805.
245  public void testMergeOneofMessages() throws Exception {
246  LazyInnerMessageLite inner = LazyInnerMessageLite.getDefaultInstance();
247  LazyMessageLite outer = LazyMessageLite.newBuilder().setOneofInner(inner).build();
248  ByteString data1 = outer.toByteString();
249 
250  // The following should not alter the content of the 'outer' message.
251  LazyMessageLite.Builder merged = LazyMessageLite.newBuilder().mergeFrom(outer);
252  LazyInnerMessageLite anotherInner = LazyInnerMessageLite.newBuilder().setNum(12345).build();
253  merged.setOneofInner(anotherInner);
254 
255  // Check that the 'outer' stays the same.
256  ByteString data2 = outer.toByteString();
257  assertEquals(data1, data2);
258  assertEquals(0, outer.getOneofInner().getNum());
259  }
260 
262  LazyNestedInnerMessageLite nested = LazyNestedInnerMessageLite.newBuilder().setNum(3).build();
263  LazyInnerMessageLite inner =
264  LazyInnerMessageLite.newBuilder().setNum(2).setNested(nested).build();
265  LazyMessageLite outer =
266  LazyMessageLite.newBuilder().setNum(1).setInner(inner).setOneofInner(inner).build();
267 
268  ByteString bytes = outer.toByteString();
269  assertEquals(bytes.size(), outer.getSerializedSize());
270 
271  LazyMessageLite deserialized = LazyMessageLite.parseFrom(bytes);
272 
273  assertEquals(1, deserialized.getNum());
274  assertEquals(421, deserialized.getNumWithDefault());
275 
276  assertEquals(2, deserialized.getInner().getNum());
277  assertEquals(42, deserialized.getInner().getNumWithDefault());
278 
279  assertEquals(3, deserialized.getInner().getNested().getNum());
280  assertEquals(4, deserialized.getInner().getNested().getNumWithDefault());
281 
282  assertEquals(2, deserialized.getOneofInner().getNum());
283  assertEquals(42, deserialized.getOneofInner().getNumWithDefault());
284  assertEquals(3, deserialized.getOneofInner().getNested().getNum());
285  assertEquals(4, deserialized.getOneofInner().getNested().getNumWithDefault());
286 
287  assertEquals(bytes, deserialized.toByteString());
288  }
289 
290  public void testExtensions() throws Exception {
291  LazyInnerMessageLite.Builder innerBuilder = LazyInnerMessageLite.newBuilder();
292  innerBuilder.setExtension(
293  LazyExtension.extension, LazyExtension.newBuilder().setName("name").build());
294  assertTrue(innerBuilder.hasExtension(LazyExtension.extension));
295  assertEquals("name", innerBuilder.getExtension(LazyExtension.extension).getName());
296 
297  LazyInnerMessageLite innerMessage = innerBuilder.build();
298  assertTrue(innerMessage.hasExtension(LazyExtension.extension));
299  assertEquals("name", innerMessage.getExtension(LazyExtension.extension).getName());
300 
301  LazyMessageLite lite = LazyMessageLite.newBuilder().setInner(innerMessage).build();
302  assertTrue(lite.getInner().hasExtension(LazyExtension.extension));
303  assertEquals("name", lite.getInner().getExtension(LazyExtension.extension).getName());
304  }
305 }
com.google.protobuf.LazyMessageLiteTest
Definition: LazyMessageLiteTest.java:45
merged
static bool merged(const upb_refcounted *r, const upb_refcounted *r2)
Definition: ruby/ext/google/protobuf_c/upb.c:6184
bytes
uint8 bytes[10]
Definition: coded_stream_unittest.cc:153
com.google.protobuf.LazyMessageLiteTest.testExtensions
void testExtensions()
Definition: LazyMessageLiteTest.java:290
com.google.protobuf.LazyMessageLiteTest.testSetValues
void testSetValues()
Definition: LazyMessageLiteTest.java:57
i
int i
Definition: gmock-matchers_test.cc:764
java
protobuf_unittest
Definition: map_test_util_impl.h:39
com.google.protobuf.LazyMessageLiteTest.testSerialize
void testSerialize()
Definition: LazyMessageLiteTest.java:261
com.google.protobuf.LazyMessageLiteTest.testMergeOneofMessages
void testMergeOneofMessages()
Definition: LazyMessageLiteTest.java:245
com.google.protobuf.LazyMessageLiteTest.testClearValues
void testClearValues()
Definition: LazyMessageLiteTest.java:151
com.google.protobuf.LazyMessageLiteTest.testRepeatedMutability
void testRepeatedMutability()
Definition: LazyMessageLiteTest.java:101
com.google.protobuf.InvalidProtocolBufferException
Definition: InvalidProtocolBufferException.java:41
com.google.protobuf.LazyMessageLiteTest.tearDown
void tearDown()
Definition: LazyMessageLiteTest.java:53
com.google.protobuf.LazyMessageLiteTest.testGetDefaultValues
void testGetDefaultValues()
Definition: LazyMessageLiteTest.java:131
gmock_test_utils.TestCase
TestCase
Definition: gmock_test_utils.py:97
count
GLint GLsizei count
Definition: glcorearb.h:2830
com.google.protobuf.LazyMessageLiteTest.testMergeDefaultValues
void testMergeDefaultValues()
Definition: LazyMessageLiteTest.java:222
com.google.protobuf.LazyMessageLiteTest.testAddAll
void testAddAll()
Definition: LazyMessageLiteTest.java:116
com.google.protobuf.LazyMessageLiteTest.setUp
void setUp()
Definition: LazyMessageLiteTest.java:48
com.google.protobuf.LazyMessageLiteTest.testMergeValues
void testMergeValues()
Definition: LazyMessageLiteTest.java:202
com.google.protobuf.LazyMessageLiteTest.testSetRepeatedValues
void testSetRepeatedValues()
Definition: LazyMessageLiteTest.java:87
com.google.protobuf.ByteString
Definition: ByteString.java:67


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:55