| Index: third_party/protobuf/java/core/src/test/java/com/google/protobuf/LazyMessageLiteTest.java
|
| diff --git a/third_party/protobuf/java/core/src/test/java/com/google/protobuf/LazyMessageLiteTest.java b/third_party/protobuf/java/core/src/test/java/com/google/protobuf/LazyMessageLiteTest.java
|
| index afe0fffd5164ab6924c1b3a94e443b31c70a85d2..968ca2065cdabde138e066b0696f7d84be5c753b 100644
|
| --- a/third_party/protobuf/java/core/src/test/java/com/google/protobuf/LazyMessageLiteTest.java
|
| +++ b/third_party/protobuf/java/core/src/test/java/com/google/protobuf/LazyMessageLiteTest.java
|
| @@ -34,10 +34,8 @@ import protobuf_unittest.LazyFieldsLite.LazyExtension;
|
| import protobuf_unittest.LazyFieldsLite.LazyInnerMessageLite;
|
| import protobuf_unittest.LazyFieldsLite.LazyMessageLite;
|
| import protobuf_unittest.LazyFieldsLite.LazyNestedInnerMessageLite;
|
| -
|
| -import junit.framework.TestCase;
|
| -
|
| import java.util.ArrayList;
|
| +import junit.framework.TestCase;
|
|
|
| /**
|
| * Unit test for messages with lazy fields.
|
| @@ -103,6 +101,19 @@ public class LazyMessageLiteTest extends TestCase {
|
| assertEquals(119, outer.getRepeatedInner(0).getNum());
|
| assertEquals(122, outer.getRepeatedInner(1).getNum());
|
| }
|
| +
|
| + public void testRepeatedMutability() throws Exception {
|
| + LazyMessageLite outer = LazyMessageLite.newBuilder()
|
| + .addRepeatedInner(LazyInnerMessageLite.newBuilder().setNum(119))
|
| + .addRepeatedInner(LazyInnerMessageLite.newBuilder().setNum(122))
|
| + .build();
|
| +
|
| + outer = LazyMessageLite.parseFrom(outer.toByteArray());
|
| + try {
|
| + outer.getRepeatedInnerList().set(1, null);
|
| + fail();
|
| + } catch (UnsupportedOperationException expected) {}
|
| + }
|
|
|
| public void testAddAll() {
|
| ArrayList<LazyInnerMessageLite> inners = new ArrayList<LazyInnerMessageLite>();
|
| @@ -251,6 +262,23 @@ public class LazyMessageLiteTest extends TestCase {
|
| assertEquals(42, merged.getOneofInner().getNumWithDefault());
|
| }
|
|
|
| + // Regression test for b/28198805.
|
| + public void testMergeOneofMessages() throws Exception {
|
| + LazyInnerMessageLite inner = LazyInnerMessageLite.newBuilder().build();
|
| + LazyMessageLite outer = LazyMessageLite.newBuilder().setOneofInner(inner).build();
|
| + ByteString data1 = outer.toByteString();
|
| +
|
| + // The following should not alter the content of the 'outer' message.
|
| + LazyMessageLite.Builder merged = LazyMessageLite.newBuilder().mergeFrom(outer);
|
| + LazyInnerMessageLite anotherInner = LazyInnerMessageLite.newBuilder().setNum(12345).build();
|
| + merged.setOneofInner(anotherInner);
|
| +
|
| + // Check that the 'outer' stays the same.
|
| + ByteString data2 = outer.toByteString();
|
| + assertEquals(data1, data2);
|
| + assertEquals(0, outer.getOneofInner().getNum());
|
| + }
|
| +
|
| public void testSerialize() throws InvalidProtocolBufferException {
|
| LazyNestedInnerMessageLite nested = LazyNestedInnerMessageLite.newBuilder()
|
| .setNum(3)
|
|
|