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

Side by Side Diff: third_party/protobuf/java/core/src/test/java/com/google/protobuf/LiteTest.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 // 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 17 matching lines...) Expand all
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;
32 32
33 import static java.util.Collections.emptyList; 33 import static java.util.Collections.emptyList;
34 import static java.util.Collections.singletonList; 34 import static java.util.Collections.singletonList;
35 35
36 import com.google.protobuf.UnittestImportLite.ImportEnumLite; 36 import com.google.protobuf.UnittestImportLite.ImportEnumLite;
37 import com.google.protobuf.UnittestImportPublicLite.PublicImportMessageLite; 37 import com.google.protobuf.UnittestImportPublicLite.PublicImportMessageLite;
38 import com.google.protobuf.UnittestLite;
39 import com.google.protobuf.UnittestLite.ForeignEnumLite; 38 import com.google.protobuf.UnittestLite.ForeignEnumLite;
40 import com.google.protobuf.UnittestLite.ForeignMessageLite; 39 import com.google.protobuf.UnittestLite.ForeignMessageLite;
41 import com.google.protobuf.UnittestLite.TestAllExtensionsLite; 40 import com.google.protobuf.UnittestLite.TestAllExtensionsLite;
42 import com.google.protobuf.UnittestLite.TestAllTypesLite; 41 import com.google.protobuf.UnittestLite.TestAllTypesLite;
43 import com.google.protobuf.UnittestLite.TestAllTypesLite.NestedEnum; 42 import com.google.protobuf.UnittestLite.TestAllTypesLite.NestedEnum;
44 import com.google.protobuf.UnittestLite.TestAllTypesLite.NestedMessage; 43 import com.google.protobuf.UnittestLite.TestAllTypesLite.NestedMessage;
45 import com.google.protobuf.UnittestLite.TestAllTypesLite.OneofFieldCase; 44 import com.google.protobuf.UnittestLite.TestAllTypesLite.OneofFieldCase;
46 import com.google.protobuf.UnittestLite.TestAllTypesLite.OptionalGroup; 45 import com.google.protobuf.UnittestLite.TestAllTypesLite.OptionalGroup;
47 import com.google.protobuf.UnittestLite.TestAllTypesLite.RepeatedGroup; 46 import com.google.protobuf.UnittestLite.TestAllTypesLite.RepeatedGroup;
48 import com.google.protobuf.UnittestLite.TestAllTypesLiteOrBuilder; 47 import com.google.protobuf.UnittestLite.TestAllTypesLiteOrBuilder;
48 import com.google.protobuf.UnittestLite.TestHugeFieldNumbersLite;
49 import com.google.protobuf.UnittestLite.TestNestedExtensionLite; 49 import com.google.protobuf.UnittestLite.TestNestedExtensionLite;
50 import protobuf_unittest.lite_equals_and_hash.LiteEqualsAndHash.Bar; 50 import protobuf_unittest.lite_equals_and_hash.LiteEqualsAndHash.Bar;
51 import protobuf_unittest.lite_equals_and_hash.LiteEqualsAndHash.BarPrime; 51 import protobuf_unittest.lite_equals_and_hash.LiteEqualsAndHash.BarPrime;
52 import protobuf_unittest.lite_equals_and_hash.LiteEqualsAndHash.Foo; 52 import protobuf_unittest.lite_equals_and_hash.LiteEqualsAndHash.Foo;
53 import protobuf_unittest.lite_equals_and_hash.LiteEqualsAndHash.TestOneofEquals; 53 import protobuf_unittest.lite_equals_and_hash.LiteEqualsAndHash.TestOneofEquals;
54 import protobuf_unittest.lite_equals_and_hash.LiteEqualsAndHash.TestRecursiveOne of; 54 import protobuf_unittest.lite_equals_and_hash.LiteEqualsAndHash.TestRecursiveOne of;
55
56 import junit.framework.TestCase; 55 import junit.framework.TestCase;
57 56
58 import java.io.ByteArrayInputStream;
59 import java.io.ByteArrayOutputStream;
60 import java.io.NotSerializableException;
61 import java.io.ObjectInputStream;
62 import java.io.ObjectOutputStream;
63
64 /** 57 /**
65 * Test lite runtime. 58 * Test lite runtime.
66 * 59 *
67 * @author kenton@google.com Kenton Varda 60 * @author kenton@google.com Kenton Varda
68 */ 61 */
69 public class LiteTest extends TestCase { 62 public class LiteTest extends TestCase {
70 @Override 63 @Override
71 public void setUp() throws Exception { 64 public void setUp() throws Exception {
72 // Test that nested extensions are initialized correctly even if the outer 65 // Test that nested extensions are initialized correctly even if the outer
73 // class has not been accessed directly. This was once a bug with lite 66 // class has not been accessed directly. This was once a bug with lite
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 assertEquals(1, message2.getExtension( 125 assertEquals(1, message2.getExtension(
133 UnittestLite.repeatedStringExtensionLite).size()); 126 UnittestLite.repeatedStringExtensionLite).size());
134 assertEquals("hello", message2.getExtension( 127 assertEquals("hello", message2.getExtension(
135 UnittestLite.repeatedStringExtensionLite, 0)); 128 UnittestLite.repeatedStringExtensionLite, 0));
136 assertEquals(TestAllTypesLite.NestedEnum.BAZ, message2.getExtension( 129 assertEquals(TestAllTypesLite.NestedEnum.BAZ, message2.getExtension(
137 UnittestLite.optionalNestedEnumExtensionLite)); 130 UnittestLite.optionalNestedEnumExtensionLite));
138 assertEquals(7, message2.getExtension( 131 assertEquals(7, message2.getExtension(
139 UnittestLite.optionalNestedMessageExtensionLite).getBb()); 132 UnittestLite.optionalNestedMessageExtensionLite).getBb());
140 } 133 }
141 134
142
143 public void testClone() { 135 public void testClone() {
144 TestAllTypesLite.Builder expected = TestAllTypesLite.newBuilder() 136 TestAllTypesLite.Builder expected = TestAllTypesLite.newBuilder()
145 .setOptionalInt32(123); 137 .setOptionalInt32(123);
146 assertEquals( 138 assertEquals(
147 expected.getOptionalInt32(), expected.clone().getOptionalInt32()); 139 expected.getOptionalInt32(), expected.clone().getOptionalInt32());
148 140
149 TestAllExtensionsLite.Builder expected2 = TestAllExtensionsLite.newBuilder() 141 TestAllExtensionsLite.Builder expected2 = TestAllExtensionsLite.newBuilder()
150 .setExtension(UnittestLite.optionalInt32ExtensionLite, 123); 142 .setExtension(UnittestLite.optionalInt32ExtensionLite, 123);
151 assertEquals( 143 assertEquals(
152 expected2.getExtension(UnittestLite.optionalInt32ExtensionLite), 144 expected2.getExtension(UnittestLite.optionalInt32ExtensionLite),
(...skipping 1273 matching lines...) Expand 10 before | Expand all | Expand 10 after
1426 UnittestLite.optionalInt32ExtensionLite)); 1418 UnittestLite.optionalInt32ExtensionLite));
1427 assertEquals( 1419 assertEquals(
1428 11, (int) extendableMessage.getExtension( 1420 11, (int) extendableMessage.getExtension(
1429 UnittestLite.optionalFixed32ExtensionLite)); 1421 UnittestLite.optionalFixed32ExtensionLite));
1430 } 1422 }
1431 1423
1432 public void testToStringDefaultInstance() throws Exception { 1424 public void testToStringDefaultInstance() throws Exception {
1433 assertToStringEquals("", TestAllTypesLite.getDefaultInstance()); 1425 assertToStringEquals("", TestAllTypesLite.getDefaultInstance());
1434 } 1426 }
1435 1427
1428 public void testToStringScalarFieldsSuffixedWithList() throws Exception {
1429 assertToStringEquals("deceptively_named_list: 7", TestAllTypesLite.newBuilde r()
1430 .setDeceptivelyNamedList(7)
1431 .build());
1432 }
1433
1436 public void testToStringPrimitives() throws Exception { 1434 public void testToStringPrimitives() throws Exception {
1437 TestAllTypesLite proto = TestAllTypesLite.newBuilder() 1435 TestAllTypesLite proto = TestAllTypesLite.newBuilder()
1438 .setOptionalInt32(1) 1436 .setOptionalInt32(1)
1439 .setOptionalInt64(9223372036854775807L) 1437 .setOptionalInt64(9223372036854775807L)
1440 .build(); 1438 .build();
1441 assertToStringEquals("optional_int32: 1\noptional_int64: 9223372036854775807 ", proto); 1439 assertToStringEquals("optional_int32: 1\noptional_int64: 9223372036854775807 ", proto);
1442 1440
1443 proto = TestAllTypesLite.newBuilder() 1441 proto = TestAllTypesLite.newBuilder()
1444 .setOptionalBool(true) 1442 .setOptionalBool(true)
1445 .setOptionalNestedEnum(TestAllTypesLite.NestedEnum.BAZ) 1443 .setOptionalNestedEnum(TestAllTypesLite.NestedEnum.BAZ)
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
1623 } 1621 }
1624 1622
1625 public void testMergeFromStream_invalidBytes() throws Exception { 1623 public void testMergeFromStream_invalidBytes() throws Exception {
1626 TestAllTypesLite.Builder builder = TestAllTypesLite.newBuilder() 1624 TestAllTypesLite.Builder builder = TestAllTypesLite.newBuilder()
1627 .setDefaultBool(true); 1625 .setDefaultBool(true);
1628 try { 1626 try {
1629 builder.mergeFrom(CodedInputStream.newInstance("Invalid bytes".getBytes(In ternal.UTF_8))); 1627 builder.mergeFrom(CodedInputStream.newInstance("Invalid bytes".getBytes(In ternal.UTF_8)));
1630 fail(); 1628 fail();
1631 } catch (InvalidProtocolBufferException expected) {} 1629 } catch (InvalidProtocolBufferException expected) {}
1632 } 1630 }
1633 1631
1634 public void testMergeFrom_sanity() throws Exception { 1632 public void testMergeFrom_sanity() throws Exception {
1635 TestAllTypesLite one = TestUtilLite.getAllLiteSetBuilder().build(); 1633 TestAllTypesLite one = TestUtilLite.getAllLiteSetBuilder().build();
1636 byte[] bytes = one.toByteArray(); 1634 byte[] bytes = one.toByteArray();
1637 TestAllTypesLite two = TestAllTypesLite.parseFrom(bytes); 1635 TestAllTypesLite two = TestAllTypesLite.parseFrom(bytes);
1638 1636
1639 one = one.toBuilder().mergeFrom(one).build(); 1637 one = one.toBuilder().mergeFrom(one).build();
1640 two = two.toBuilder().mergeFrom(bytes).build(); 1638 two = two.toBuilder().mergeFrom(bytes).build();
1641 assertEquals(one, two); 1639 assertEquals(one, two);
1642 assertEquals(two, one); 1640 assertEquals(two, one);
1643 assertEquals(one.hashCode(), two.hashCode()); 1641 assertEquals(one.hashCode(), two.hashCode());
1644 } 1642 }
1645 1643
1644 public void testMergeFromNoLazyFieldSharing() throws Exception {
1645 TestAllTypesLite.Builder sourceBuilder = TestAllTypesLite.newBuilder().setOp tionalLazyMessage(
1646 TestAllTypesLite.NestedMessage.newBuilder().setBb(1));
1647 TestAllTypesLite.Builder targetBuilder =
1648 TestAllTypesLite.newBuilder().mergeFrom(sourceBuilder.build());
1649 assertEquals(1, sourceBuilder.getOptionalLazyMessage().getBb());
1650 // now change the sourceBuilder, and target value shouldn't be affected.
1651 sourceBuilder.setOptionalLazyMessage(
1652 TestAllTypesLite.NestedMessage.newBuilder().setBb(2));
1653 assertEquals(1, targetBuilder.getOptionalLazyMessage().getBb());
1654 }
1655
1646 public void testEquals_notEqual() throws Exception { 1656 public void testEquals_notEqual() throws Exception {
1647 TestAllTypesLite one = TestUtilLite.getAllLiteSetBuilder().build(); 1657 TestAllTypesLite one = TestUtilLite.getAllLiteSetBuilder().build();
1648 byte[] bytes = one.toByteArray(); 1658 byte[] bytes = one.toByteArray();
1649 TestAllTypesLite two = one.toBuilder().mergeFrom(one).mergeFrom(bytes).build (); 1659 TestAllTypesLite two = one.toBuilder().mergeFrom(one).mergeFrom(bytes).build ();
1650 1660
1651 assertFalse(one.equals(two)); 1661 assertFalse(one.equals(two));
1652 assertFalse(two.equals(one)); 1662 assertFalse(two.equals(one));
1653 1663
1654 assertFalse(one.equals(TestAllTypesLite.getDefaultInstance())); 1664 assertFalse(one.equals(TestAllTypesLite.getDefaultInstance()));
1655 assertFalse(TestAllTypesLite.getDefaultInstance().equals(one)); 1665 assertFalse(TestAllTypesLite.getDefaultInstance().equals(one));
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
2195 .setExtension(Bar.fooExt, Bar.newBuilder() 2205 .setExtension(Bar.fooExt, Bar.newBuilder()
2196 .setName("name") 2206 .setName("name")
2197 .build()) 2207 .build())
2198 .build(); 2208 .build();
2199 2209
2200 Foo fooWithValueAndUnknownFields = Foo.parseFrom(fooWithValueAndExtension.to ByteArray()); 2210 Foo fooWithValueAndUnknownFields = Foo.parseFrom(fooWithValueAndExtension.to ByteArray());
2201 2211
2202 assertEqualsAndHashCodeAreFalse(fooWithOnlyValue, fooWithValueAndUnknownFiel ds); 2212 assertEqualsAndHashCodeAreFalse(fooWithOnlyValue, fooWithValueAndUnknownFiel ds);
2203 assertEqualsAndHashCodeAreFalse(fooWithValueAndExtension, fooWithValueAndUnk nownFields); 2213 assertEqualsAndHashCodeAreFalse(fooWithValueAndExtension, fooWithValueAndUnk nownFields);
2204 } 2214 }
2215
2216 public void testEqualsAndHashCodeWithExtensions() throws InvalidProtocolBuffer Exception {
2217 Foo fooWithOnlyValue = Foo.newBuilder()
2218 .setValue(1)
2219 .build();
2220
2221 Foo fooWithValueAndExtension = fooWithOnlyValue.toBuilder()
2222 .setValue(1)
2223 .setExtension(Bar.fooExt, Bar.newBuilder()
2224 .setName("name")
2225 .build())
2226 .build();
2227
2228 assertEqualsAndHashCodeAreFalse(fooWithOnlyValue, fooWithValueAndExtension);
2229 }
2205 2230
2206 // Test to ensure we avoid a class cast exception with oneofs. 2231 // Test to ensure we avoid a class cast exception with oneofs.
2207 public void testEquals_oneOfMessages() { 2232 public void testEquals_oneOfMessages() {
2208 TestAllTypesLite mine = TestAllTypesLite.newBuilder() 2233 TestAllTypesLite mine = TestAllTypesLite.newBuilder()
2209 .setOneofString("Hello") 2234 .setOneofString("Hello")
2210 .build(); 2235 .build();
2211 2236
2212 TestAllTypesLite other = TestAllTypesLite.newBuilder() 2237 TestAllTypesLite other = TestAllTypesLite.newBuilder()
2213 .setOneofNestedMessage(NestedMessage.getDefaultInstance()) 2238 .setOneofNestedMessage(NestedMessage.getDefaultInstance())
2214 .build(); 2239 .build();
2215 2240
2216 assertFalse(mine.equals(other)); 2241 assertFalse(mine.equals(other));
2217 assertFalse(other.equals(mine)); 2242 assertFalse(other.equals(mine));
2218 } 2243 }
2219 2244
2245 public void testHugeFieldNumbers() throws InvalidProtocolBufferException {
2246 TestHugeFieldNumbersLite message =
2247 TestHugeFieldNumbersLite.newBuilder()
2248 .setOptionalInt32(1)
2249 .addRepeatedInt32(2)
2250 .setOptionalEnum(ForeignEnumLite.FOREIGN_LITE_FOO)
2251 .setOptionalString("xyz")
2252 .setOptionalMessage(ForeignMessageLite.newBuilder().setC(3).build())
2253 .build();
2254
2255 TestHugeFieldNumbersLite parsedMessage =
2256 TestHugeFieldNumbersLite.parseFrom(message.toByteArray());
2257 assertEquals(1, parsedMessage.getOptionalInt32());
2258 assertEquals(2, parsedMessage.getRepeatedInt32(0));
2259 assertEquals(ForeignEnumLite.FOREIGN_LITE_FOO, parsedMessage.getOptionalEnum ());
2260 assertEquals("xyz", parsedMessage.getOptionalString());
2261 assertEquals(3, parsedMessage.getOptionalMessage().getC());
2262 }
2263
2220 private void assertEqualsAndHashCodeAreFalse(Object o1, Object o2) { 2264 private void assertEqualsAndHashCodeAreFalse(Object o1, Object o2) {
2221 assertFalse(o1.equals(o2)); 2265 assertFalse(o1.equals(o2));
2222 assertFalse(o1.hashCode() == o2.hashCode()); 2266 assertFalse(o1.hashCode() == o2.hashCode());
2223 } 2267 }
2224 2268
2225 public void testRecursiveHashcode() { 2269 public void testRecursiveHashcode() {
2226 // This tests that we don't infinite loop. 2270 // This tests that we don't infinite loop.
2227 TestRecursiveOneof.getDefaultInstance().hashCode(); 2271 TestRecursiveOneof.getDefaultInstance().hashCode();
2228 } 2272 }
2229 } 2273 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698