summaryrefslogtreecommitdiffstats
path: root/java/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/test/java')
-rw-r--r--java/src/test/java/com/google/protobuf/AbstractMessageTest.java84
-rw-r--r--java/src/test/java/com/google/protobuf/BoundedByteStringTest.java68
-rw-r--r--java/src/test/java/com/google/protobuf/ByteStringTest.java759
-rw-r--r--java/src/test/java/com/google/protobuf/CheckUtf8Test.java141
-rw-r--r--java/src/test/java/com/google/protobuf/CodedInputStreamTest.java286
-rw-r--r--java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java101
-rw-r--r--java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java80
-rw-r--r--java/src/test/java/com/google/protobuf/DescriptorsTest.java286
-rw-r--r--java/src/test/java/com/google/protobuf/DynamicMessageTest.java136
-rw-r--r--java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java48
-rw-r--r--java/src/test/java/com/google/protobuf/GeneratedMessageTest.java922
-rw-r--r--java/src/test/java/com/google/protobuf/IsValidUtf8Test.java180
-rw-r--r--java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java421
-rw-r--r--java/src/test/java/com/google/protobuf/LazyFieldLiteTest.java134
-rw-r--r--java/src/test/java/com/google/protobuf/LazyFieldTest.java121
-rw-r--r--java/src/test/java/com/google/protobuf/LazyMessageLiteTest.java319
-rw-r--r--java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java174
-rw-r--r--java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java143
-rw-r--r--java/src/test/java/com/google/protobuf/LiteEqualsAndHashTest.java85
-rw-r--r--java/src/test/java/com/google/protobuf/LiteTest.java34
-rw-r--r--java/src/test/java/com/google/protobuf/LiteralByteStringTest.java396
-rw-r--r--java/src/test/java/com/google/protobuf/MessageTest.java42
-rw-r--r--java/src/test/java/com/google/protobuf/NanoTest.java124
-rw-r--r--java/src/test/java/com/google/protobuf/NestedBuildersTest.java185
-rw-r--r--java/src/test/java/com/google/protobuf/ParserTest.java381
-rw-r--r--java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java190
-rw-r--r--java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java97
-rw-r--r--java/src/test/java/com/google/protobuf/RopeByteStringTest.java115
-rw-r--r--java/src/test/java/com/google/protobuf/ServiceTest.java16
-rw-r--r--java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java155
-rw-r--r--java/src/test/java/com/google/protobuf/SmallSortedMapTest.java420
-rw-r--r--java/src/test/java/com/google/protobuf/TestBadIdentifiers.java96
-rw-r--r--java/src/test/java/com/google/protobuf/TestUtil.java460
-rw-r--r--java/src/test/java/com/google/protobuf/TextFormatTest.java422
-rw-r--r--java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java218
-rw-r--r--java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java227
-rw-r--r--java/src/test/java/com/google/protobuf/WireFormatTest.java189
-rw-r--r--java/src/test/java/com/google/protobuf/lazy_fields_lite.proto61
-rw-r--r--java/src/test/java/com/google/protobuf/lite_equals_and_hash.proto55
-rw-r--r--java/src/test/java/com/google/protobuf/multiple_files_test.proto14
-rw-r--r--java/src/test/java/com/google/protobuf/nested_builders_test.proto53
-rw-r--r--java/src/test/java/com/google/protobuf/nested_extension.proto46
-rw-r--r--java/src/test/java/com/google/protobuf/nested_extension_lite.proto48
-rw-r--r--java/src/test/java/com/google/protobuf/non_nested_extension.proto49
-rw-r--r--java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto50
-rw-r--r--java/src/test/java/com/google/protobuf/outer_class_name_test.proto38
-rw-r--r--java/src/test/java/com/google/protobuf/outer_class_name_test2.proto42
-rw-r--r--java/src/test/java/com/google/protobuf/outer_class_name_test3.proto43
-rw-r--r--java/src/test/java/com/google/protobuf/test_bad_identifiers.proto157
-rw-r--r--java/src/test/java/com/google/protobuf/test_check_utf8.proto50
-rw-r--r--java/src/test/java/com/google/protobuf/test_check_utf8_size.proto51
-rw-r--r--java/src/test/java/com/google/protobuf/test_custom_options.proto43
-rw-r--r--java/src/test/java/com/google/protobuf/test_extra_interfaces.proto60
53 files changed, 206 insertions, 8909 deletions
diff --git a/java/src/test/java/com/google/protobuf/AbstractMessageTest.java b/java/src/test/java/com/google/protobuf/AbstractMessageTest.java
index d964ef5..c44d660 100644
--- a/java/src/test/java/com/google/protobuf/AbstractMessageTest.java
+++ b/java/src/test/java/com/google/protobuf/AbstractMessageTest.java
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -30,7 +30,6 @@
package com.google.protobuf;
-import com.google.protobuf.Descriptors.FieldDescriptor;
import protobuf_unittest.UnittestOptimizeFor.TestOptimizedForSize;
import protobuf_unittest.UnittestProto;
import protobuf_unittest.UnittestProto.ForeignMessage;
@@ -168,13 +167,6 @@ public class AbstractMessageTest extends TestCase {
wrappedBuilder.setUnknownFields(unknownFields);
return this;
}
- @Override
- public Message.Builder getFieldBuilder(FieldDescriptor field) {
- return wrappedBuilder.getFieldBuilder(field);
- }
- }
- public Parser<? extends Message> getParserForType() {
- return wrappedMessage.getParserForType();
}
}
@@ -228,34 +220,6 @@ public class AbstractMessageTest extends TestCase {
TestUtil.assertAllFieldsSet((TestAllTypes) message.wrappedMessage);
}
- public void testParsingUninitialized() throws Exception {
- TestRequiredForeign.Builder builder = TestRequiredForeign.newBuilder();
- builder.getOptionalMessageBuilder().setDummy2(10);
- ByteString bytes = builder.buildPartial().toByteString();
- Message.Builder abstractMessageBuilder =
- new AbstractMessageWrapper.Builder(TestRequiredForeign.newBuilder());
- // mergeFrom() should not throw initialization error.
- abstractMessageBuilder.mergeFrom(bytes).buildPartial();
- try {
- abstractMessageBuilder.mergeFrom(bytes).build();
- fail();
- } catch (UninitializedMessageException ex) {
- // pass
- }
-
- // test DynamicMessage directly.
- Message.Builder dynamicMessageBuilder = DynamicMessage.newBuilder(
- TestRequiredForeign.getDescriptor());
- // mergeFrom() should not throw initialization error.
- dynamicMessageBuilder.mergeFrom(bytes).buildPartial();
- try {
- dynamicMessageBuilder.mergeFrom(bytes).build();
- fail();
- } catch (UninitializedMessageException ex) {
- // pass
- }
- }
-
public void testPackedSerialization() throws Exception {
Message abstractMessage =
new AbstractMessageWrapper(TestUtil.getPackedSet());
@@ -334,16 +298,12 @@ public class AbstractMessageTest extends TestCase {
new AbstractMessageWrapper.Builder(builder);
assertFalse(abstractBuilder.isInitialized());
- assertEquals("a, b, c", abstractBuilder.getInitializationErrorString());
builder.setA(1);
assertFalse(abstractBuilder.isInitialized());
- assertEquals("b, c", abstractBuilder.getInitializationErrorString());
builder.setB(1);
assertFalse(abstractBuilder.isInitialized());
- assertEquals("c", abstractBuilder.getInitializationErrorString());
builder.setC(1);
assertTrue(abstractBuilder.isInitialized());
- assertEquals("", abstractBuilder.getInitializationErrorString());
}
public void testForeignIsInitialized() throws Exception {
@@ -352,27 +312,18 @@ public class AbstractMessageTest extends TestCase {
new AbstractMessageWrapper.Builder(builder);
assertTrue(abstractBuilder.isInitialized());
- assertEquals("", abstractBuilder.getInitializationErrorString());
builder.setOptionalMessage(TEST_REQUIRED_UNINITIALIZED);
assertFalse(abstractBuilder.isInitialized());
- assertEquals(
- "optional_message.a, optional_message.b, optional_message.c",
- abstractBuilder.getInitializationErrorString());
builder.setOptionalMessage(TEST_REQUIRED_INITIALIZED);
assertTrue(abstractBuilder.isInitialized());
- assertEquals("", abstractBuilder.getInitializationErrorString());
builder.addRepeatedMessage(TEST_REQUIRED_UNINITIALIZED);
assertFalse(abstractBuilder.isInitialized());
- assertEquals(
- "repeated_message[0].a, repeated_message[0].b, repeated_message[0].c",
- abstractBuilder.getInitializationErrorString());
builder.setRepeatedMessage(0, TEST_REQUIRED_INITIALIZED);
assertTrue(abstractBuilder.isInitialized());
- assertEquals("", abstractBuilder.getInitializationErrorString());
}
// -----------------------------------------------------------------
@@ -415,7 +366,7 @@ public class AbstractMessageTest extends TestCase {
// -----------------------------------------------------------------
// Tests for equals and hashCode
-
+
public void testEqualsAndHashCode() throws Exception {
TestAllTypes a = TestUtil.getAllSet();
TestAllTypes b = TestAllTypes.newBuilder().build();
@@ -431,7 +382,7 @@ public class AbstractMessageTest extends TestCase {
checkEqualsIsConsistent(d);
checkEqualsIsConsistent(e);
checkEqualsIsConsistent(f);
-
+
checkNotEqual(a, b);
checkNotEqual(a, c);
checkNotEqual(a, d);
@@ -462,20 +413,19 @@ public class AbstractMessageTest extends TestCase {
checkEqualsIsConsistent(eUnknownFields);
checkEqualsIsConsistent(fUnknownFields);
- // Subsequent reconstitutions should be identical
+ // Subseqent reconstitutions should be identical
UnittestProto.TestEmptyMessage eUnknownFields2 =
UnittestProto.TestEmptyMessage.parseFrom(e.toByteArray());
checkEqualsIsConsistent(eUnknownFields, eUnknownFields2);
}
-
-
+
/**
- * Asserts that the given proto has symmetric equals and hashCode methods.
+ * Asserts that the given proto has symetric equals and hashCode methods.
*/
private void checkEqualsIsConsistent(Message message) {
// Object should be equal to itself.
assertEquals(message, message);
-
+
// Object should be equal to a dynamic copy of itself.
DynamicMessage dynamic = DynamicMessage.newBuilder(message).build();
checkEqualsIsConsistent(message, dynamic);
@@ -492,7 +442,7 @@ public class AbstractMessageTest extends TestCase {
/**
* Asserts that the given protos are not equal and have different hash codes.
- *
+ *
* @warning It's valid for non-equal objects to have the same hash code, so
* this test is stricter than it needs to be. However, this should happen
* relatively rarely.
@@ -506,22 +456,4 @@ public class AbstractMessageTest extends TestCase {
String.format("%s should have a different hash code from %s", m1, m2),
m1.hashCode() == m2.hashCode());
}
-
- public void testCheckByteStringIsUtf8OnUtf8() {
- ByteString byteString = ByteString.copyFromUtf8("some text");
- AbstractMessageLite.checkByteStringIsUtf8(byteString);
- // No exception thrown.
- }
-
- public void testCheckByteStringIsUtf8OnNonUtf8() {
- ByteString byteString =
- ByteString.copyFrom(new byte[]{(byte) 0x80}); // A lone continuation byte.
- try {
- AbstractMessageLite.checkByteStringIsUtf8(byteString);
- fail("Expected AbstractMessageLite.checkByteStringIsUtf8 to throw IllegalArgumentException");
- } catch (IllegalArgumentException exception) {
- assertEquals("Byte string is not UTF-8.", exception.getMessage());
- }
- }
-
}
diff --git a/java/src/test/java/com/google/protobuf/BoundedByteStringTest.java b/java/src/test/java/com/google/protobuf/BoundedByteStringTest.java
deleted file mode 100644
index 2b71cfb..0000000
--- a/java/src/test/java/com/google/protobuf/BoundedByteStringTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import java.io.UnsupportedEncodingException;
-
-/**
- * This class tests {@link BoundedByteString}, which extends {@link LiteralByteString},
- * by inheriting the tests from {@link LiteralByteStringTest}. The only method which
- * is strange enough that it needs to be overridden here is {@link #testToString()}.
- *
- * @author carlanton@google.com (Carl Haverl)
- */
-public class BoundedByteStringTest extends LiteralByteStringTest {
-
- @Override
- protected void setUp() throws Exception {
- classUnderTest = "BoundedByteString";
- byte[] sourceBytes = ByteStringTest.getTestBytes(2341, 11337766L);
- int from = 100;
- int to = sourceBytes.length - 100;
- stringUnderTest = ByteString.copyFrom(sourceBytes).substring(from, to);
- referenceBytes = new byte[to - from];
- System.arraycopy(sourceBytes, from, referenceBytes, 0, to - from);
- expectedHashCode = 727575887;
- }
-
- @Override
- public void testToString() throws UnsupportedEncodingException {
- String testString = "I love unicode \u1234\u5678 characters";
- LiteralByteString unicode = new LiteralByteString(testString.getBytes(UTF_8));
- ByteString chopped = unicode.substring(2, unicode.size() - 6);
- assertEquals(classUnderTest + ".substring() must have the expected type",
- classUnderTest, getActualClassName(chopped));
-
- String roundTripString = chopped.toString(UTF_8);
- assertEquals(classUnderTest + " unicode bytes must match",
- testString.substring(2, testString.length() - 6), roundTripString);
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/ByteStringTest.java b/java/src/test/java/com/google/protobuf/ByteStringTest.java
deleted file mode 100644
index 15de17c..0000000
--- a/java/src/test/java/com/google/protobuf/ByteStringTest.java
+++ /dev/null
@@ -1,759 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import com.google.protobuf.ByteString.Output;
-
-import junit.framework.TestCase;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Random;
-
-/**
- * Test methods with implementations in {@link ByteString}, plus do some top-level "integration"
- * tests.
- *
- * @author carlanton@google.com (Carl Haverl)
- */
-public class ByteStringTest extends TestCase {
-
- private static final String UTF_16 = "UTF-16";
-
- static byte[] getTestBytes(int size, long seed) {
- Random random = new Random(seed);
- byte[] result = new byte[size];
- random.nextBytes(result);
- return result;
- }
-
- private byte[] getTestBytes(int size) {
- return getTestBytes(size, 445566L);
- }
-
- private byte[] getTestBytes() {
- return getTestBytes(1000);
- }
-
- // Compare the entire left array with a subset of the right array.
- private boolean isArrayRange(byte[] left, byte[] right, int rightOffset, int length) {
- boolean stillEqual = (left.length == length);
- for (int i = 0; (stillEqual && i < length); ++i) {
- stillEqual = (left[i] == right[rightOffset + i]);
- }
- return stillEqual;
- }
-
- // Returns true only if the given two arrays have identical contents.
- private boolean isArray(byte[] left, byte[] right) {
- return left.length == right.length && isArrayRange(left, right, 0, left.length);
- }
-
- public void testSubstring_BeginIndex() {
- byte[] bytes = getTestBytes();
- ByteString substring = ByteString.copyFrom(bytes).substring(500);
- assertTrue("substring must contain the tail of the string",
- isArrayRange(substring.toByteArray(), bytes, 500, bytes.length - 500));
- }
-
- public void testCopyFrom_BytesOffsetSize() {
- byte[] bytes = getTestBytes();
- ByteString byteString = ByteString.copyFrom(bytes, 500, 200);
- assertTrue("copyFrom sub-range must contain the expected bytes",
- isArrayRange(byteString.toByteArray(), bytes, 500, 200));
- }
-
- public void testCopyFrom_Bytes() {
- byte[] bytes = getTestBytes();
- ByteString byteString = ByteString.copyFrom(bytes);
- assertTrue("copyFrom must contain the expected bytes",
- isArray(byteString.toByteArray(), bytes));
- }
-
- public void testCopyFrom_ByteBufferSize() {
- byte[] bytes = getTestBytes();
- ByteBuffer byteBuffer = ByteBuffer.allocate(bytes.length);
- byteBuffer.put(bytes);
- byteBuffer.position(500);
- ByteString byteString = ByteString.copyFrom(byteBuffer, 200);
- assertTrue("copyFrom byteBuffer sub-range must contain the expected bytes",
- isArrayRange(byteString.toByteArray(), bytes, 500, 200));
- }
-
- public void testCopyFrom_ByteBuffer() {
- byte[] bytes = getTestBytes();
- ByteBuffer byteBuffer = ByteBuffer.allocate(bytes.length);
- byteBuffer.put(bytes);
- byteBuffer.position(500);
- ByteString byteString = ByteString.copyFrom(byteBuffer);
- assertTrue("copyFrom byteBuffer sub-range must contain the expected bytes",
- isArrayRange(byteString.toByteArray(), bytes, 500, bytes.length - 500));
- }
-
- public void testCopyFrom_StringEncoding() throws UnsupportedEncodingException {
- String testString = "I love unicode \u1234\u5678 characters";
- ByteString byteString = ByteString.copyFrom(testString, UTF_16);
- byte[] testBytes = testString.getBytes(UTF_16);
- assertTrue("copyFrom string must respect the charset",
- isArrayRange(byteString.toByteArray(), testBytes, 0, testBytes.length));
- }
-
- public void testCopyFrom_Utf8() throws UnsupportedEncodingException {
- String testString = "I love unicode \u1234\u5678 characters";
- ByteString byteString = ByteString.copyFromUtf8(testString);
- byte[] testBytes = testString.getBytes("UTF-8");
- assertTrue("copyFromUtf8 string must respect the charset",
- isArrayRange(byteString.toByteArray(), testBytes, 0, testBytes.length));
- }
-
- public void testCopyFrom_Iterable() {
- byte[] testBytes = getTestBytes(77777, 113344L);
- final List<ByteString> pieces = makeConcretePieces(testBytes);
- // Call copyFrom() on a Collection
- ByteString byteString = ByteString.copyFrom(pieces);
- assertTrue("copyFrom a List must contain the expected bytes",
- isArrayRange(byteString.toByteArray(), testBytes, 0, testBytes.length));
- // Call copyFrom on an iteration that's not a collection
- ByteString byteStringAlt = ByteString.copyFrom(new Iterable<ByteString>() {
- public Iterator<ByteString> iterator() {
- return pieces.iterator();
- }
- });
- assertEquals("copyFrom from an Iteration must contain the expected bytes",
- byteString, byteStringAlt);
- }
-
- public void testCopyTo_TargetOffset() {
- byte[] bytes = getTestBytes();
- ByteString byteString = ByteString.copyFrom(bytes);
- byte[] target = new byte[bytes.length + 1000];
- byteString.copyTo(target, 400);
- assertTrue("copyFrom byteBuffer sub-range must contain the expected bytes",
- isArrayRange(bytes, target, 400, bytes.length));
- }
-
- public void testReadFrom_emptyStream() throws IOException {
- ByteString byteString =
- ByteString.readFrom(new ByteArrayInputStream(new byte[0]));
- assertSame("reading an empty stream must result in the EMPTY constant "
- + "byte string", ByteString.EMPTY, byteString);
- }
-
- public void testReadFrom_smallStream() throws IOException {
- assertReadFrom(getTestBytes(10));
- }
-
- public void testReadFrom_mutating() throws IOException {
- byte[] capturedArray = null;
- EvilInputStream eis = new EvilInputStream();
- ByteString byteString = ByteString.readFrom(eis);
-
- capturedArray = eis.capturedArray;
- byte[] originalValue = byteString.toByteArray();
- for (int x = 0; x < capturedArray.length; ++x) {
- capturedArray[x] = (byte) 0;
- }
-
- byte[] newValue = byteString.toByteArray();
- assertTrue("copyFrom byteBuffer must not grant access to underlying array",
- Arrays.equals(originalValue, newValue));
- }
-
- // Tests sizes that are near the rope copy-out threshold.
- public void testReadFrom_mediumStream() throws IOException {
- assertReadFrom(getTestBytes(ByteString.CONCATENATE_BY_COPY_SIZE - 1));
- assertReadFrom(getTestBytes(ByteString.CONCATENATE_BY_COPY_SIZE));
- assertReadFrom(getTestBytes(ByteString.CONCATENATE_BY_COPY_SIZE + 1));
- assertReadFrom(getTestBytes(200));
- }
-
- // Tests sizes that are over multi-segment rope threshold.
- public void testReadFrom_largeStream() throws IOException {
- assertReadFrom(getTestBytes(0x100));
- assertReadFrom(getTestBytes(0x101));
- assertReadFrom(getTestBytes(0x110));
- assertReadFrom(getTestBytes(0x1000));
- assertReadFrom(getTestBytes(0x1001));
- assertReadFrom(getTestBytes(0x1010));
- assertReadFrom(getTestBytes(0x10000));
- assertReadFrom(getTestBytes(0x10001));
- assertReadFrom(getTestBytes(0x10010));
- }
-
- // Tests sizes that are near the read buffer size.
- public void testReadFrom_byteBoundaries() throws IOException {
- final int min = ByteString.MIN_READ_FROM_CHUNK_SIZE;
- final int max = ByteString.MAX_READ_FROM_CHUNK_SIZE;
-
- assertReadFrom(getTestBytes(min - 1));
- assertReadFrom(getTestBytes(min));
- assertReadFrom(getTestBytes(min + 1));
-
- assertReadFrom(getTestBytes(min * 2 - 1));
- assertReadFrom(getTestBytes(min * 2));
- assertReadFrom(getTestBytes(min * 2 + 1));
-
- assertReadFrom(getTestBytes(min * 4 - 1));
- assertReadFrom(getTestBytes(min * 4));
- assertReadFrom(getTestBytes(min * 4 + 1));
-
- assertReadFrom(getTestBytes(min * 8 - 1));
- assertReadFrom(getTestBytes(min * 8));
- assertReadFrom(getTestBytes(min * 8 + 1));
-
- assertReadFrom(getTestBytes(max - 1));
- assertReadFrom(getTestBytes(max));
- assertReadFrom(getTestBytes(max + 1));
-
- assertReadFrom(getTestBytes(max * 2 - 1));
- assertReadFrom(getTestBytes(max * 2));
- assertReadFrom(getTestBytes(max * 2 + 1));
- }
-
- // Tests that IOExceptions propagate through ByteString.readFrom().
- public void testReadFrom_IOExceptions() {
- try {
- ByteString.readFrom(new FailStream());
- fail("readFrom must throw the underlying IOException");
-
- } catch (IOException e) {
- assertEquals("readFrom must throw the expected exception",
- "synthetic failure", e.getMessage());
- }
- }
-
- // Tests that ByteString.readFrom works with streams that don't
- // always fill their buffers.
- public void testReadFrom_reluctantStream() throws IOException {
- final byte[] data = getTestBytes(0x1000);
-
- ByteString byteString = ByteString.readFrom(new ReluctantStream(data));
- assertTrue("readFrom byte stream must contain the expected bytes",
- isArray(byteString.toByteArray(), data));
-
- // Same test as above, but with some specific chunk sizes.
- assertReadFromReluctantStream(data, 100);
- assertReadFromReluctantStream(data, 248);
- assertReadFromReluctantStream(data, 249);
- assertReadFromReluctantStream(data, 250);
- assertReadFromReluctantStream(data, 251);
- assertReadFromReluctantStream(data, 0x1000);
- assertReadFromReluctantStream(data, 0x1001);
- }
-
- // Fails unless ByteString.readFrom reads the bytes correctly from a
- // reluctant stream with the given chunkSize parameter.
- private void assertReadFromReluctantStream(byte[] bytes, int chunkSize)
- throws IOException {
- ByteString b = ByteString.readFrom(new ReluctantStream(bytes), chunkSize);
- assertTrue("readFrom byte stream must contain the expected bytes",
- isArray(b.toByteArray(), bytes));
- }
-
- // Tests that ByteString.readFrom works with streams that implement
- // available().
- public void testReadFrom_available() throws IOException {
- final byte[] data = getTestBytes(0x1001);
-
- ByteString byteString = ByteString.readFrom(new AvailableStream(data));
- assertTrue("readFrom byte stream must contain the expected bytes",
- isArray(byteString.toByteArray(), data));
- }
-
- // Fails unless ByteString.readFrom reads the bytes correctly.
- private void assertReadFrom(byte[] bytes) throws IOException {
- ByteString byteString =
- ByteString.readFrom(new ByteArrayInputStream(bytes));
- assertTrue("readFrom byte stream must contain the expected bytes",
- isArray(byteString.toByteArray(), bytes));
- }
-
- // A stream that fails when read.
- private static final class FailStream extends InputStream {
- @Override public int read() throws IOException {
- throw new IOException("synthetic failure");
- }
- }
-
- // A stream that simulates blocking by only producing 250 characters
- // per call to read(byte[]).
- private static class ReluctantStream extends InputStream {
- protected final byte[] data;
- protected int pos = 0;
-
- public ReluctantStream(byte[] data) {
- this.data = data;
- }
-
- @Override public int read() {
- if (pos == data.length) {
- return -1;
- } else {
- return data[pos++];
- }
- }
-
- @Override public int read(byte[] buf) {
- return read(buf, 0, buf.length);
- }
-
- @Override public int read(byte[] buf, int offset, int size) {
- if (pos == data.length) {
- return -1;
- }
- int count = Math.min(Math.min(size, data.length - pos), 250);
- System.arraycopy(data, pos, buf, offset, count);
- pos += count;
- return count;
- }
- }
-
- // Same as above, but also implements available().
- private static final class AvailableStream extends ReluctantStream {
- public AvailableStream(byte[] data) {
- super(data);
- }
-
- @Override public int available() {
- return Math.min(250, data.length - pos);
- }
- }
-
- // A stream which exposes the byte array passed into read(byte[], int, int).
- private static class EvilInputStream extends InputStream {
- public byte[] capturedArray = null;
-
- @Override
- public int read(byte[] buf, int off, int len) {
- if (capturedArray != null) {
- return -1;
- } else {
- capturedArray = buf;
- for (int x = 0; x < len; ++x) {
- buf[x] = (byte) x;
- }
- return len;
- }
- }
-
- @Override
- public int read() {
- // Purposefully do nothing.
- return -1;
- }
- }
-
- // A stream which exposes the byte array passed into write(byte[], int, int).
- private static class EvilOutputStream extends OutputStream {
- public byte[] capturedArray = null;
-
- @Override
- public void write(byte[] buf, int off, int len) {
- if (capturedArray == null) {
- capturedArray = buf;
- }
- }
-
- @Override
- public void write(int ignored) {
- // Purposefully do nothing.
- }
- }
-
- public void testToStringUtf8() throws UnsupportedEncodingException {
- String testString = "I love unicode \u1234\u5678 characters";
- byte[] testBytes = testString.getBytes("UTF-8");
- ByteString byteString = ByteString.copyFrom(testBytes);
- assertEquals("copyToStringUtf8 must respect the charset",
- testString, byteString.toStringUtf8());
- }
-
- public void testNewOutput_InitialCapacity() throws IOException {
- byte[] bytes = getTestBytes();
- ByteString.Output output = ByteString.newOutput(bytes.length + 100);
- output.write(bytes);
- ByteString byteString = output.toByteString();
- assertTrue(
- "String built from newOutput(int) must contain the expected bytes",
- isArrayRange(bytes, byteString.toByteArray(), 0, bytes.length));
- }
-
- // Test newOutput() using a variety of buffer sizes and a variety of (fixed)
- // write sizes
- public void testNewOutput_ArrayWrite() throws IOException {
- byte[] bytes = getTestBytes();
- int length = bytes.length;
- int[] bufferSizes = {128, 256, length / 2, length - 1, length, length + 1,
- 2 * length, 3 * length};
- int[] writeSizes = {1, 4, 5, 7, 23, bytes.length};
-
- for (int bufferSize : bufferSizes) {
- for (int writeSize : writeSizes) {
- // Test writing the entire output writeSize bytes at a time.
- ByteString.Output output = ByteString.newOutput(bufferSize);
- for (int i = 0; i < length; i += writeSize) {
- output.write(bytes, i, Math.min(writeSize, length - i));
- }
- ByteString byteString = output.toByteString();
- assertTrue("String built from newOutput() must contain the expected bytes",
- isArrayRange(bytes, byteString.toByteArray(), 0, bytes.length));
- }
- }
- }
-
- // Test newOutput() using a variety of buffer sizes, but writing all the
- // characters using write(byte);
- public void testNewOutput_WriteChar() throws IOException {
- byte[] bytes = getTestBytes();
- int length = bytes.length;
- int[] bufferSizes = {0, 1, 128, 256, length / 2,
- length - 1, length, length + 1,
- 2 * length, 3 * length};
- for (int bufferSize : bufferSizes) {
- ByteString.Output output = ByteString.newOutput(bufferSize);
- for (byte byteValue : bytes) {
- output.write(byteValue);
- }
- ByteString byteString = output.toByteString();
- assertTrue("String built from newOutput() must contain the expected bytes",
- isArrayRange(bytes, byteString.toByteArray(), 0, bytes.length));
- }
- }
-
- // Test newOutput() in which we write the bytes using a variety of methods
- // and sizes, and in which we repeatedly call toByteString() in the middle.
- public void testNewOutput_Mixed() throws IOException {
- Random rng = new Random(1);
- byte[] bytes = getTestBytes();
- int length = bytes.length;
- int[] bufferSizes = {0, 1, 128, 256, length / 2,
- length - 1, length, length + 1,
- 2 * length, 3 * length};
-
- for (int bufferSize : bufferSizes) {
- // Test writing the entire output using a mixture of write sizes and
- // methods;
- ByteString.Output output = ByteString.newOutput(bufferSize);
- int position = 0;
- while (position < bytes.length) {
- if (rng.nextBoolean()) {
- int count = 1 + rng.nextInt(bytes.length - position);
- output.write(bytes, position, count);
- position += count;
- } else {
- output.write(bytes[position]);
- position++;
- }
- assertEquals("size() returns the right value", position, output.size());
- assertTrue("newOutput() substring must have correct bytes",
- isArrayRange(output.toByteString().toByteArray(),
- bytes, 0, position));
- }
- ByteString byteString = output.toByteString();
- assertTrue("String built from newOutput() must contain the expected bytes",
- isArrayRange(bytes, byteString.toByteArray(), 0, bytes.length));
- }
- }
-
- public void testNewOutputEmpty() throws IOException {
- // Make sure newOutput() correctly builds empty byte strings
- ByteString byteString = ByteString.newOutput().toByteString();
- assertEquals(ByteString.EMPTY, byteString);
- }
-
- public void testNewOutput_Mutating() throws IOException {
- Output os = ByteString.newOutput(5);
- os.write(new byte[] {1, 2, 3, 4, 5});
- EvilOutputStream eos = new EvilOutputStream();
- os.writeTo(eos);
- byte[] capturedArray = eos.capturedArray;
- ByteString byteString = os.toByteString();
- byte[] oldValue = byteString.toByteArray();
- Arrays.fill(capturedArray, (byte) 0);
- byte[] newValue = byteString.toByteArray();
- assertTrue("Output must not provide access to the underlying byte array",
- Arrays.equals(oldValue, newValue));
- }
-
- public void testNewCodedBuilder() throws IOException {
- byte[] bytes = getTestBytes();
- ByteString.CodedBuilder builder = ByteString.newCodedBuilder(bytes.length);
- builder.getCodedOutput().writeRawBytes(bytes);
- ByteString byteString = builder.build();
- assertTrue("String built from newCodedBuilder() must contain the expected bytes",
- isArrayRange(bytes, byteString.toByteArray(), 0, bytes.length));
- }
-
- public void testSubstringParity() {
- byte[] bigBytes = getTestBytes(2048 * 1024, 113344L);
- int start = 512 * 1024 - 3333;
- int end = 512 * 1024 + 7777;
- ByteString concreteSubstring = ByteString.copyFrom(bigBytes).substring(start, end);
- boolean ok = true;
- for (int i = start; ok && i < end; ++i) {
- ok = (bigBytes[i] == concreteSubstring.byteAt(i - start));
- }
- assertTrue("Concrete substring didn't capture the right bytes", ok);
-
- ByteString literalString = ByteString.copyFrom(bigBytes, start, end - start);
- assertTrue("Substring must be equal to literal string",
- concreteSubstring.equals(literalString));
- assertEquals("Substring must have same hashcode as literal string",
- literalString.hashCode(), concreteSubstring.hashCode());
- }
-
- public void testCompositeSubstring() {
- byte[] referenceBytes = getTestBytes(77748, 113344L);
-
- List<ByteString> pieces = makeConcretePieces(referenceBytes);
- ByteString listString = ByteString.copyFrom(pieces);
-
- int from = 1000;
- int to = 40000;
- ByteString compositeSubstring = listString.substring(from, to);
- byte[] substringBytes = compositeSubstring.toByteArray();
- boolean stillEqual = true;
- for (int i = 0; stillEqual && i < to - from; ++i) {
- stillEqual = referenceBytes[from + i] == substringBytes[i];
- }
- assertTrue("Substring must return correct bytes", stillEqual);
-
- stillEqual = true;
- for (int i = 0; stillEqual && i < to - from; ++i) {
- stillEqual = referenceBytes[from + i] == compositeSubstring.byteAt(i);
- }
- assertTrue("Substring must support byteAt() correctly", stillEqual);
-
- ByteString literalSubstring = ByteString.copyFrom(referenceBytes, from, to - from);
- assertTrue("Composite substring must equal a literal substring over the same bytes",
- compositeSubstring.equals(literalSubstring));
- assertTrue("Literal substring must equal a composite substring over the same bytes",
- literalSubstring.equals(compositeSubstring));
-
- assertEquals("We must get the same hashcodes for composite and literal substrings",
- literalSubstring.hashCode(), compositeSubstring.hashCode());
-
- assertFalse("We can't be equal to a proper substring",
- compositeSubstring.equals(literalSubstring.substring(0, literalSubstring.size() - 1)));
- }
-
- public void testCopyFromList() {
- byte[] referenceBytes = getTestBytes(77748, 113344L);
- ByteString literalString = ByteString.copyFrom(referenceBytes);
-
- List<ByteString> pieces = makeConcretePieces(referenceBytes);
- ByteString listString = ByteString.copyFrom(pieces);
-
- assertTrue("Composite string must be equal to literal string",
- listString.equals(literalString));
- assertEquals("Composite string must have same hashcode as literal string",
- literalString.hashCode(), listString.hashCode());
- }
-
- public void testConcat() {
- byte[] referenceBytes = getTestBytes(77748, 113344L);
- ByteString literalString = ByteString.copyFrom(referenceBytes);
-
- List<ByteString> pieces = makeConcretePieces(referenceBytes);
-
- Iterator<ByteString> iter = pieces.iterator();
- ByteString concatenatedString = iter.next();
- while (iter.hasNext()) {
- concatenatedString = concatenatedString.concat(iter.next());
- }
-
- assertTrue("Concatenated string must be equal to literal string",
- concatenatedString.equals(literalString));
- assertEquals("Concatenated string must have same hashcode as literal string",
- literalString.hashCode(), concatenatedString.hashCode());
- }
-
- /**
- * Test the Rope implementation can deal with Empty nodes, even though we
- * guard against them. See also {@link LiteralByteStringTest#testConcat_empty()}.
- */
- public void testConcat_empty() {
- byte[] referenceBytes = getTestBytes(7748, 113344L);
- ByteString literalString = ByteString.copyFrom(referenceBytes);
-
- ByteString duo = RopeByteString.newInstanceForTest(literalString, literalString);
- ByteString temp = RopeByteString.newInstanceForTest(
- RopeByteString.newInstanceForTest(literalString, ByteString.EMPTY),
- RopeByteString.newInstanceForTest(ByteString.EMPTY, literalString));
- ByteString quintet = RopeByteString.newInstanceForTest(temp, ByteString.EMPTY);
-
- assertTrue("String with concatenated nulls must equal simple concatenate",
- duo.equals(quintet));
- assertEquals("String with concatenated nulls have same hashcode as simple concatenate",
- duo.hashCode(), quintet.hashCode());
-
- ByteString.ByteIterator duoIter = duo.iterator();
- ByteString.ByteIterator quintetIter = quintet.iterator();
- boolean stillEqual = true;
- while (stillEqual && quintetIter.hasNext()) {
- stillEqual = (duoIter.nextByte() == quintetIter.nextByte());
- }
- assertTrue("We must get the same characters by iterating", stillEqual);
- assertFalse("Iterator must be exhausted", duoIter.hasNext());
- try {
- duoIter.nextByte();
- fail("Should have thrown an exception.");
- } catch (NoSuchElementException e) {
- // This is success
- }
- try {
- quintetIter.nextByte();
- fail("Should have thrown an exception.");
- } catch (NoSuchElementException e) {
- // This is success
- }
-
- // Test that even if we force empty strings in as rope leaves in this
- // configuration, we always get a (possibly Bounded) LiteralByteString
- // for a length 1 substring.
- //
- // It is possible, using the testing factory method to create deeply nested
- // trees of empty leaves, to make a string that will fail this test.
- for (int i = 1; i < duo.size(); ++i) {
- assertTrue("Substrings of size() < 2 must not be RopeByteStrings",
- duo.substring(i - 1, i) instanceof LiteralByteString);
- }
- for (int i = 1; i < quintet.size(); ++i) {
- assertTrue("Substrings of size() < 2 must not be RopeByteStrings",
- quintet.substring(i - 1, i) instanceof LiteralByteString);
- }
- }
-
- public void testStartsWith() {
- byte[] bytes = getTestBytes(1000, 1234L);
- ByteString string = ByteString.copyFrom(bytes);
- ByteString prefix = ByteString.copyFrom(bytes, 0, 500);
- ByteString suffix = ByteString.copyFrom(bytes, 400, 600);
- assertTrue(string.startsWith(ByteString.EMPTY));
- assertTrue(string.startsWith(string));
- assertTrue(string.startsWith(prefix));
- assertFalse(string.startsWith(suffix));
- assertFalse(prefix.startsWith(suffix));
- assertFalse(suffix.startsWith(prefix));
- assertFalse(ByteString.EMPTY.startsWith(prefix));
- assertTrue(ByteString.EMPTY.startsWith(ByteString.EMPTY));
- }
-
- public void testEndsWith() {
- byte[] bytes = getTestBytes(1000, 1234L);
- ByteString string = ByteString.copyFrom(bytes);
- ByteString prefix = ByteString.copyFrom(bytes, 0, 500);
- ByteString suffix = ByteString.copyFrom(bytes, 400, 600);
- assertTrue(string.endsWith(ByteString.EMPTY));
- assertTrue(string.endsWith(string));
- assertTrue(string.endsWith(suffix));
- assertFalse(string.endsWith(prefix));
- assertFalse(suffix.endsWith(prefix));
- assertFalse(prefix.endsWith(suffix));
- assertFalse(ByteString.EMPTY.endsWith(suffix));
- assertTrue(ByteString.EMPTY.endsWith(ByteString.EMPTY));
- }
-
- static List<ByteString> makeConcretePieces(byte[] referenceBytes) {
- List<ByteString> pieces = new ArrayList<ByteString>();
- // Starting length should be small enough that we'll do some concatenating by
- // copying if we just concatenate all these pieces together.
- for (int start = 0, length = 16; start < referenceBytes.length; start += length) {
- length = (length << 1) - 1;
- if (start + length > referenceBytes.length) {
- length = referenceBytes.length - start;
- }
- pieces.add(ByteString.copyFrom(referenceBytes, start, length));
- }
- return pieces;
- }
-
- private byte[] substringUsingWriteTo(
- ByteString data, int offset, int length) throws IOException {
- ByteArrayOutputStream output = new ByteArrayOutputStream();
- data.writeTo(output, offset, length);
- return output.toByteArray();
- }
-
- public void testWriteToOutputStream() throws Exception {
- // Choose a size large enough so when two ByteStrings are concatenated they
- // won't be merged into one byte array due to some optimizations.
- final int dataSize = ByteString.CONCATENATE_BY_COPY_SIZE + 1;
- byte[] data1 = new byte[dataSize];
- for (int i = 0; i < data1.length; i++) {
- data1[i] = (byte) 1;
- }
- data1[1] = (byte) 11;
- // Test LiteralByteString.writeTo(OutputStream,int,int)
- LiteralByteString left = new LiteralByteString(data1);
- byte[] result = substringUsingWriteTo(left, 1, 1);
- assertEquals(1, result.length);
- assertEquals((byte) 11, result[0]);
-
- byte[] data2 = new byte[dataSize];
- for (int i = 0; i < data1.length; i++) {
- data2[i] = (byte) 2;
- }
- LiteralByteString right = new LiteralByteString(data2);
- // Concatenate two ByteStrings to create a RopeByteString.
- ByteString root = left.concat(right);
- // Make sure we are actually testing a RopeByteString with a simple tree
- // structure.
- assertEquals(1, root.getTreeDepth());
- // Write parts of the left node.
- result = substringUsingWriteTo(root, 0, dataSize);
- assertEquals(dataSize, result.length);
- assertEquals((byte) 1, result[0]);
- assertEquals((byte) 1, result[dataSize - 1]);
- // Write parts of the right node.
- result = substringUsingWriteTo(root, dataSize, dataSize);
- assertEquals(dataSize, result.length);
- assertEquals((byte) 2, result[0]);
- assertEquals((byte) 2, result[dataSize - 1]);
- // Write a segment of bytes that runs across both nodes.
- result = substringUsingWriteTo(root, dataSize / 2, dataSize);
- assertEquals(dataSize, result.length);
- assertEquals((byte) 1, result[0]);
- assertEquals((byte) 1, result[dataSize - dataSize / 2 - 1]);
- assertEquals((byte) 2, result[dataSize - dataSize / 2]);
- assertEquals((byte) 2, result[dataSize - 1]);
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/CheckUtf8Test.java b/java/src/test/java/com/google/protobuf/CheckUtf8Test.java
deleted file mode 100644
index 6470e9c..0000000
--- a/java/src/test/java/com/google/protobuf/CheckUtf8Test.java
+++ /dev/null
@@ -1,141 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import proto2_test_check_utf8.TestCheckUtf8.BytesWrapper;
-import proto2_test_check_utf8.TestCheckUtf8.StringWrapper;
-import proto2_test_check_utf8_size.TestCheckUtf8Size.BytesWrapperSize;
-import proto2_test_check_utf8_size.TestCheckUtf8Size.StringWrapperSize;
-import junit.framework.TestCase;
-
-/**
- * Test that protos generated with file option java_string_check_utf8 do in
- * fact perform appropriate UTF-8 checks.
- *
- * @author jbaum@google.com (Jacob Butcher)
- */
-public class CheckUtf8Test extends TestCase {
-
- private static final String UTF8_BYTE_STRING_TEXT = "some text";
- private static final ByteString UTF8_BYTE_STRING =
- ByteString.copyFromUtf8(UTF8_BYTE_STRING_TEXT);
- private static final ByteString NON_UTF8_BYTE_STRING =
- ByteString.copyFrom(new byte[]{(byte) 0x80}); // A lone continuation byte.
-
- public void testBuildRequiredStringWithGoodUtf8() throws Exception {
- assertEquals(UTF8_BYTE_STRING_TEXT,
- StringWrapper.newBuilder().setReqBytes(UTF8_BYTE_STRING).getReq());
- }
-
- public void testParseRequiredStringWithGoodUtf8() throws Exception {
- ByteString serialized =
- BytesWrapper.newBuilder().setReq(UTF8_BYTE_STRING).build().toByteString();
- assertEquals(UTF8_BYTE_STRING_TEXT,
- StringWrapper.PARSER.parseFrom(serialized).getReq());
- }
-
- public void testBuildRequiredStringWithBadUtf8() throws Exception {
- try {
- StringWrapper.newBuilder().setReqBytes(NON_UTF8_BYTE_STRING);
- fail("Expected IllegalArgumentException for non UTF-8 byte string.");
- } catch (IllegalArgumentException exception) {
- assertEquals("Byte string is not UTF-8.", exception.getMessage());
- }
- }
-
- public void testBuildOptionalStringWithBadUtf8() throws Exception {
- try {
- StringWrapper.newBuilder().setOptBytes(NON_UTF8_BYTE_STRING);
- fail("Expected IllegalArgumentException for non UTF-8 byte string.");
- } catch (IllegalArgumentException exception) {
- assertEquals("Byte string is not UTF-8.", exception.getMessage());
- }
- }
-
- public void testBuildRepeatedStringWithBadUtf8() throws Exception {
- try {
- StringWrapper.newBuilder().addRepBytes(NON_UTF8_BYTE_STRING);
- fail("Expected IllegalArgumentException for non UTF-8 byte string.");
- } catch (IllegalArgumentException exception) {
- assertEquals("Byte string is not UTF-8.", exception.getMessage());
- }
- }
-
- public void testParseRequiredStringWithBadUtf8() throws Exception {
- ByteString serialized =
- BytesWrapper.newBuilder().setReq(NON_UTF8_BYTE_STRING).build().toByteString();
- try {
- StringWrapper.PARSER.parseFrom(serialized);
- fail("Expected InvalidProtocolBufferException for non UTF-8 byte string.");
- } catch (InvalidProtocolBufferException exception) {
- assertEquals("Protocol message had invalid UTF-8.", exception.getMessage());
- }
- }
-
- public void testBuildRequiredStringWithBadUtf8Size() throws Exception {
- try {
- StringWrapperSize.newBuilder().setReqBytes(NON_UTF8_BYTE_STRING);
- fail("Expected IllegalArgumentException for non UTF-8 byte string.");
- } catch (IllegalArgumentException exception) {
- assertEquals("Byte string is not UTF-8.", exception.getMessage());
- }
- }
-
- public void testBuildOptionalStringWithBadUtf8Size() throws Exception {
- try {
- StringWrapperSize.newBuilder().setOptBytes(NON_UTF8_BYTE_STRING);
- fail("Expected IllegalArgumentException for non UTF-8 byte string.");
- } catch (IllegalArgumentException exception) {
- assertEquals("Byte string is not UTF-8.", exception.getMessage());
- }
- }
-
- public void testBuildRepeatedStringWithBadUtf8Size() throws Exception {
- try {
- StringWrapperSize.newBuilder().addRepBytes(NON_UTF8_BYTE_STRING);
- fail("Expected IllegalArgumentException for non UTF-8 byte string.");
- } catch (IllegalArgumentException exception) {
- assertEquals("Byte string is not UTF-8.", exception.getMessage());
- }
- }
-
- public void testParseRequiredStringWithBadUtf8Size() throws Exception {
- ByteString serialized =
- BytesWrapperSize.newBuilder().setReq(NON_UTF8_BYTE_STRING).build().toByteString();
- try {
- StringWrapperSize.PARSER.parseFrom(serialized);
- fail("Expected InvalidProtocolBufferException for non UTF-8 byte string.");
- } catch (InvalidProtocolBufferException exception) {
- assertEquals("Protocol message had invalid UTF-8.", exception.getMessage());
- }
- }
-
-}
diff --git a/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java b/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java
index 3f656e2..33d60d1 100644
--- a/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java
+++ b/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -30,20 +30,15 @@
package com.google.protobuf;
-import protobuf_unittest.UnittestProto.BoolMessage;
-import protobuf_unittest.UnittestProto.Int32Message;
-import protobuf_unittest.UnittestProto.Int64Message;
import protobuf_unittest.UnittestProto.TestAllTypes;
import protobuf_unittest.UnittestProto.TestRecursiveMessage;
import junit.framework.TestCase;
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.FilterInputStream;
-import java.io.IOException;
import java.io.InputStream;
-import java.nio.ByteBuffer;
+import java.io.IOException;
/**
* Unit test for {@link CodedInputStream}.
@@ -90,54 +85,28 @@ public class CodedInputStreamTest extends TestCase {
}
}
- private void assertDataConsumed(byte[] data, CodedInputStream input)
- throws IOException {
- assertEquals(data.length, input.getTotalBytesRead());
- assertTrue(input.isAtEnd());
- }
-
/**
* Parses the given bytes using readRawVarint32() and readRawVarint64() and
* checks that the result matches the given value.
*/
private void assertReadVarint(byte[] data, long value) throws Exception {
CodedInputStream input = CodedInputStream.newInstance(data);
- assertEquals((int) value, input.readRawVarint32());
- assertDataConsumed(data, input);
+ assertEquals((int)value, input.readRawVarint32());
input = CodedInputStream.newInstance(data);
assertEquals(value, input.readRawVarint64());
- assertDataConsumed(data, input);
-
- input = CodedInputStream.newInstance(data);
- assertEquals(value, input.readRawVarint64SlowPath());
- assertDataConsumed(data, input);
-
- input = CodedInputStream.newInstance(data);
- assertTrue(input.skipField(WireFormat.WIRETYPE_VARINT));
- assertDataConsumed(data, input);
+ assertTrue(input.isAtEnd());
// Try different block sizes.
for (int blockSize = 1; blockSize <= 16; blockSize *= 2) {
input = CodedInputStream.newInstance(
new SmallBlockInputStream(data, blockSize));
- assertEquals((int) value, input.readRawVarint32());
- assertDataConsumed(data, input);
+ assertEquals((int)value, input.readRawVarint32());
input = CodedInputStream.newInstance(
new SmallBlockInputStream(data, blockSize));
assertEquals(value, input.readRawVarint64());
- assertDataConsumed(data, input);
-
- input = CodedInputStream.newInstance(
- new SmallBlockInputStream(data, blockSize));
- assertEquals(value, input.readRawVarint64SlowPath());
- assertDataConsumed(data, input);
-
- input = CodedInputStream.newInstance(
- new SmallBlockInputStream(data, blockSize));
- assertTrue(input.skipField(WireFormat.WIRETYPE_VARINT));
- assertDataConsumed(data, input);
+ assertTrue(input.isAtEnd());
}
// Try reading direct from an InputStream. We want to verify that it
@@ -146,7 +115,7 @@ public class CodedInputStreamTest extends TestCase {
byte[] longerData = new byte[data.length + 1];
System.arraycopy(data, 0, longerData, 0, data.length);
InputStream rawInput = new ByteArrayInputStream(longerData);
- assertEquals((int) value, CodedInputStream.readRawVarint32(rawInput));
+ assertEquals((int)value, CodedInputStream.readRawVarint32(rawInput));
assertEquals(1, rawInput.available());
}
@@ -174,14 +143,6 @@ public class CodedInputStreamTest extends TestCase {
assertEquals(expected.getMessage(), e.getMessage());
}
- input = CodedInputStream.newInstance(data);
- try {
- input.readRawVarint64SlowPath();
- fail("Should have thrown an exception.");
- } catch (InvalidProtocolBufferException e) {
- assertEquals(expected.getMessage(), e.getMessage());
- }
-
// Make sure we get the same error when reading direct from an InputStream.
try {
CodedInputStream.readRawVarint32(new ByteArrayInputStream(data));
@@ -350,7 +311,6 @@ public class CodedInputStreamTest extends TestCase {
}
}
-
/**
* Test that a bug in skipRawBytes() has been fixed: if the skip skips
* exactly up to a limit, this should not break things.
@@ -371,11 +331,14 @@ public class CodedInputStreamTest extends TestCase {
* that buffer, this should not break things.
*/
public void testSkipRawBytesPastEndOfBufferWithLimit() throws Exception {
+ System.out.printf("testSkipRawBytesPastEndOfBufferWithLimit: E ...\n");
+
byte[] rawBytes = new byte[] { 1, 2, 3, 4, 5 };
CodedInputStream input = CodedInputStream.newInstance(
new SmallBlockInputStream(rawBytes, 3));
int limit = input.pushLimit(4);
+ System.out.printf("testSkipRawBytesPastEndOfBufferWithLimit: limit=%d\n", limit);
// In order to expose the bug we need to read at least one byte to prime the
// buffer inside the CodedInputStream.
assertEquals(1, input.readRawByte());
@@ -384,13 +347,15 @@ public class CodedInputStreamTest extends TestCase {
assertTrue(input.isAtEnd());
input.popLimit(limit);
assertEquals(5, input.readRawByte());
+
+ System.out.printf("testSkipRawBytesPastEndOfBufferWithLimit: X ...\n");
}
public void testReadHugeBlob() throws Exception {
// Allocate and initialize a 1MB blob.
byte[] blob = new byte[1 << 20];
for (int i = 0; i < blob.length; i++) {
- blob[i] = (byte) i;
+ blob[i] = (byte)i;
}
// Make a message containing it.
@@ -477,23 +442,16 @@ public class CodedInputStreamTest extends TestCase {
}
}
- private void checkSizeLimitExceeded(InvalidProtocolBufferException e) {
- assertEquals(
- InvalidProtocolBufferException.sizeLimitExceeded().getMessage(),
- e.getMessage());
- }
-
public void testSizeLimit() throws Exception {
CodedInputStream input = CodedInputStream.newInstance(
- new SmallBlockInputStream(
- TestUtil.getAllSet().toByteString().newInput(), 16));
+ TestUtil.getAllSet().toByteString().newInput());
input.setSizeLimit(16);
try {
TestAllTypes.parseFrom(input);
fail("Should have thrown an exception!");
- } catch (InvalidProtocolBufferException expected) {
- checkSizeLimitExceeded(expected);
+ } catch (InvalidProtocolBufferException e) {
+ // success.
}
}
@@ -507,8 +465,8 @@ public class CodedInputStreamTest extends TestCase {
try {
input.readRawByte();
fail("Should have thrown an exception!");
- } catch (InvalidProtocolBufferException expected) {
- checkSizeLimitExceeded(expected);
+ } catch (InvalidProtocolBufferException e) {
+ // success.
}
input.resetSizeCounter();
@@ -516,50 +474,28 @@ public class CodedInputStreamTest extends TestCase {
input.readRawByte(); // No exception thrown.
input.resetSizeCounter();
assertEquals(0, input.getTotalBytesRead());
- input.readRawBytes(16);
- assertEquals(16, input.getTotalBytesRead());
- input.resetSizeCounter();
try {
- input.readRawBytes(17); // Hits limit again.
+ input.readRawBytes(16); // Hits limit again.
fail("Should have thrown an exception!");
- } catch (InvalidProtocolBufferException expected) {
- checkSizeLimitExceeded(expected);
- }
- }
-
- public void testSizeLimitMultipleMessages() throws Exception {
- byte[] bytes = new byte[256];
- for (int i = 0; i < bytes.length; i++) {
- bytes[i] = (byte) i;
- }
- CodedInputStream input = CodedInputStream.newInstance(
- new SmallBlockInputStream(bytes, 7));
- input.setSizeLimit(16);
- for (int i = 0; i < 256 / 16; i++) {
- byte[] message = input.readRawBytes(16);
- for (int j = 0; j < message.length; j++) {
- assertEquals(i * 16 + j, message[j] & 0xff);
- }
- assertEquals(16, input.getTotalBytesRead());
- input.resetSizeCounter();
- assertEquals(0, input.getTotalBytesRead());
+ } catch (InvalidProtocolBufferException e) {
+ // success.
}
}
/**
- * Tests that if we readString invalid UTF-8 bytes, no exception
+ * Tests that if we read an string that contains invalid UTF-8, no exception
* is thrown. Instead, the invalid bytes are replaced with the Unicode
* "replacement character" U+FFFD.
*/
- public void testReadStringInvalidUtf8() throws Exception {
+ public void testReadInvalidUtf8() throws Exception {
ByteString.Output rawOutput = ByteString.newOutput();
CodedOutputStream output = CodedOutputStream.newInstance(rawOutput);
int tag = WireFormat.makeTag(1, WireFormat.WIRETYPE_LENGTH_DELIMITED);
output.writeRawVarint32(tag);
output.writeRawVarint32(1);
- output.writeRawBytes(new byte[] { (byte) 0x80 });
+ output.writeRawBytes(new byte[] { (byte)0x80 });
output.flush();
CodedInputStream input = rawOutput.toByteString().newCodedInput();
@@ -568,37 +504,13 @@ public class CodedInputStreamTest extends TestCase {
assertEquals(0xfffd, text.charAt(0));
}
- /**
- * Tests that if we readStringRequireUtf8 invalid UTF-8 bytes, an
- * InvalidProtocolBufferException is thrown.
- */
- public void testReadStringRequireUtf8InvalidUtf8() throws Exception {
- ByteString.Output rawOutput = ByteString.newOutput();
- CodedOutputStream output = CodedOutputStream.newInstance(rawOutput);
-
- int tag = WireFormat.makeTag(1, WireFormat.WIRETYPE_LENGTH_DELIMITED);
- output.writeRawVarint32(tag);
- output.writeRawVarint32(1);
- output.writeRawBytes(new byte[] { (byte) 0x80 });
- output.flush();
-
- CodedInputStream input = rawOutput.toByteString().newCodedInput();
- assertEquals(tag, input.readTag());
- try {
- input.readStringRequireUtf8();
- fail("Expected invalid UTF-8 exception.");
- } catch (InvalidProtocolBufferException exception) {
- assertEquals("Protocol message had invalid UTF-8.", exception.getMessage());
- }
- }
-
public void testReadFromSlice() throws Exception {
byte[] bytes = bytes(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
CodedInputStream in = CodedInputStream.newInstance(bytes, 3, 5);
assertEquals(0, in.getTotalBytesRead());
for (int i = 3; i < 8; i++) {
assertEquals(i, in.readRawByte());
- assertEquals(i - 2, in.getTotalBytesRead());
+ assertEquals(i-2, in.getTotalBytesRead());
}
// eof
assertEquals(0, in.readTag());
@@ -618,152 +530,4 @@ public class CodedInputStreamTest extends TestCase {
}
}
}
-
- public void testReadByteArray() throws Exception {
- ByteString.Output rawOutput = ByteString.newOutput();
- CodedOutputStream output = CodedOutputStream.newInstance(rawOutput);
- // Zero-sized bytes field.
- output.writeRawVarint32(0);
- // One one-byte bytes field
- output.writeRawVarint32(1);
- output.writeRawBytes(new byte[] { (byte) 23 });
- // Another one-byte bytes field
- output.writeRawVarint32(1);
- output.writeRawBytes(new byte[] { (byte) 45 });
- // A bytes field large enough that won't fit into the 4K buffer.
- final int bytesLength = 16 * 1024;
- byte[] bytes = new byte[bytesLength];
- bytes[0] = (byte) 67;
- bytes[bytesLength - 1] = (byte) 89;
- output.writeRawVarint32(bytesLength);
- output.writeRawBytes(bytes);
-
- output.flush();
- CodedInputStream inputStream = rawOutput.toByteString().newCodedInput();
-
- byte[] result = inputStream.readByteArray();
- assertEquals(0, result.length);
- result = inputStream.readByteArray();
- assertEquals(1, result.length);
- assertEquals((byte) 23, result[0]);
- result = inputStream.readByteArray();
- assertEquals(1, result.length);
- assertEquals((byte) 45, result[0]);
- result = inputStream.readByteArray();
- assertEquals(bytesLength, result.length);
- assertEquals((byte) 67, result[0]);
- assertEquals((byte) 89, result[bytesLength - 1]);
- }
-
- public void testReadByteBuffer() throws Exception {
- ByteString.Output rawOutput = ByteString.newOutput();
- CodedOutputStream output = CodedOutputStream.newInstance(rawOutput);
- // Zero-sized bytes field.
- output.writeRawVarint32(0);
- // One one-byte bytes field
- output.writeRawVarint32(1);
- output.writeRawBytes(new byte[]{(byte) 23});
- // Another one-byte bytes field
- output.writeRawVarint32(1);
- output.writeRawBytes(new byte[]{(byte) 45});
- // A bytes field large enough that won't fit into the 4K buffer.
- final int bytesLength = 16 * 1024;
- byte[] bytes = new byte[bytesLength];
- bytes[0] = (byte) 67;
- bytes[bytesLength - 1] = (byte) 89;
- output.writeRawVarint32(bytesLength);
- output.writeRawBytes(bytes);
-
- output.flush();
- CodedInputStream inputStream = rawOutput.toByteString().newCodedInput();
-
- ByteBuffer result = inputStream.readByteBuffer();
- assertEquals(0, result.capacity());
- result = inputStream.readByteBuffer();
- assertEquals(1, result.capacity());
- assertEquals((byte) 23, result.get());
- result = inputStream.readByteBuffer();
- assertEquals(1, result.capacity());
- assertEquals((byte) 45, result.get());
- result = inputStream.readByteBuffer();
- assertEquals(bytesLength, result.capacity());
- assertEquals((byte) 67, result.get());
- result.position(bytesLength - 1);
- assertEquals((byte) 89, result.get());
- }
-
- public void testReadByteBufferAliasing() throws Exception {
- ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream();
- CodedOutputStream output = CodedOutputStream.newInstance(byteArrayStream);
- // Zero-sized bytes field.
- output.writeRawVarint32(0);
- // One one-byte bytes field
- output.writeRawVarint32(1);
- output.writeRawBytes(new byte[]{(byte) 23});
- // Another one-byte bytes field
- output.writeRawVarint32(1);
- output.writeRawBytes(new byte[]{(byte) 45});
- // A bytes field large enough that won't fit into the 4K buffer.
- final int bytesLength = 16 * 1024;
- byte[] bytes = new byte[bytesLength];
- bytes[0] = (byte) 67;
- bytes[bytesLength - 1] = (byte) 89;
- output.writeRawVarint32(bytesLength);
- output.writeRawBytes(bytes);
- output.flush();
- byte[] data = byteArrayStream.toByteArray();
-
- // Without aliasing
- CodedInputStream inputStream = CodedInputStream.newInstance(data);
- ByteBuffer result = inputStream.readByteBuffer();
- assertEquals(0, result.capacity());
- result = inputStream.readByteBuffer();
- assertTrue(result.array() != data);
- assertEquals(1, result.capacity());
- assertEquals((byte) 23, result.get());
- result = inputStream.readByteBuffer();
- assertTrue(result.array() != data);
- assertEquals(1, result.capacity());
- assertEquals((byte) 45, result.get());
- result = inputStream.readByteBuffer();
- assertTrue(result.array() != data);
- assertEquals(bytesLength, result.capacity());
- assertEquals((byte) 67, result.get());
- result.position(bytesLength - 1);
- assertEquals((byte) 89, result.get());
-
- // Enable aliasing
- inputStream = CodedInputStream.newInstance(data);
- inputStream.enableAliasing(true);
- result = inputStream.readByteBuffer();
- assertEquals(0, result.capacity());
- result = inputStream.readByteBuffer();
- assertTrue(result.array() == data);
- assertEquals(1, result.capacity());
- assertEquals((byte) 23, result.get());
- result = inputStream.readByteBuffer();
- assertTrue(result.array() == data);
- assertEquals(1, result.capacity());
- assertEquals((byte) 45, result.get());
- result = inputStream.readByteBuffer();
- assertTrue(result.array() == data);
- assertEquals(bytesLength, result.capacity());
- assertEquals((byte) 67, result.get());
- result.position(bytesLength - 1);
- assertEquals((byte) 89, result.get());
- }
-
- public void testCompatibleTypes() throws Exception {
- long data = 0x100000000L;
- Int64Message message = Int64Message.newBuilder().setData(data).build();
- ByteString serialized = message.toByteString();
-
- // Test int64(long) is compatible with bool(boolean)
- BoolMessage msg2 = BoolMessage.parseFrom(serialized);
- assertTrue(msg2.getData());
-
- // Test int64(long) is compatible with int32(int)
- Int32Message msg3 = Int32Message.parseFrom(serialized);
- assertEquals((int) data, msg3.getData());
- }
}
diff --git a/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java b/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java
index 0785cc9..c42b485 100644
--- a/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java
+++ b/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -30,16 +30,14 @@
package com.google.protobuf;
-import protobuf_unittest.UnittestProto.SparseEnumMessage;
import protobuf_unittest.UnittestProto.TestAllTypes;
import protobuf_unittest.UnittestProto.TestPackedTypes;
-import protobuf_unittest.UnittestProto.TestSparseEnum;
import junit.framework.TestCase;
import java.io.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/**
@@ -303,99 +301,4 @@ public class CodedOutputStreamTest extends TestCase {
assertEqualBytes(TestUtil.getGoldenPackedFieldsMessage().toByteArray(),
rawBytes);
}
-
- /** Test writing a message containing a negative enum value. This used to
- * fail because the size was not properly computed as a sign-extended varint.
- */
- public void testWriteMessageWithNegativeEnumValue() throws Exception {
- SparseEnumMessage message = SparseEnumMessage.newBuilder()
- .setSparseEnum(TestSparseEnum.SPARSE_E) .build();
- assertTrue(message.getSparseEnum().getNumber() < 0);
- byte[] rawBytes = message.toByteArray();
- SparseEnumMessage message2 = SparseEnumMessage.parseFrom(rawBytes);
- assertEquals(TestSparseEnum.SPARSE_E, message2.getSparseEnum());
- }
-
- /** Test getTotalBytesWritten() */
- public void testGetTotalBytesWritten() throws Exception {
- final int BUFFER_SIZE = 4 * 1024;
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream(BUFFER_SIZE);
- CodedOutputStream codedStream = CodedOutputStream.newInstance(outputStream);
- byte[] value = "abcde".getBytes("UTF-8");
- for (int i = 0; i < 1024; ++i) {
- codedStream.writeRawBytes(value, 0, value.length);
- }
- // Make sure we have written more bytes than the buffer could hold. This is
- // to make the test complete.
- assertTrue(codedStream.getTotalBytesWritten() > BUFFER_SIZE);
- assertEquals(value.length * 1024, codedStream.getTotalBytesWritten());
- }
-
- public void testWriteToByteBuffer() throws Exception {
- final int bufferSize = 16 * 1024;
- ByteBuffer buffer = ByteBuffer.allocate(bufferSize);
- CodedOutputStream codedStream = CodedOutputStream.newInstance(buffer);
- // Write raw bytes into the ByteBuffer.
- final int length1 = 5000;
- for (int i = 0; i < length1; i++) {
- codedStream.writeRawByte((byte) 1);
- }
- final int length2 = 8 * 1024;
- byte[] data = new byte[length2];
- for (int i = 0; i < length2; i++) {
- data[i] = (byte) 2;
- }
- codedStream.writeRawBytes(data);
- final int length3 = bufferSize - length1 - length2;
- for (int i = 0; i < length3; i++) {
- codedStream.writeRawByte((byte) 3);
- }
- codedStream.flush();
-
- // Check that data is correctly written to the ByteBuffer.
- assertEquals(0, buffer.remaining());
- buffer.flip();
- for (int i = 0; i < length1; i++) {
- assertEquals((byte) 1, buffer.get());
- }
- for (int i = 0; i < length2; i++) {
- assertEquals((byte) 2, buffer.get());
- }
- for (int i = 0; i < length3; i++) {
- assertEquals((byte) 3, buffer.get());
- }
- }
-
- public void testWriteByteBuffer() throws Exception {
- byte[] value = "abcde".getBytes("UTF-8");
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- CodedOutputStream codedStream = CodedOutputStream.newInstance(outputStream);
- ByteBuffer byteBuffer = ByteBuffer.wrap(value, 0, 1);
- // This will actually write 5 bytes into the CodedOutputStream as the
- // ByteBuffer's capacity() is 5.
- codedStream.writeRawBytes(byteBuffer);
- // The above call shouldn't affect the ByteBuffer's state.
- assertEquals(0, byteBuffer.position());
- assertEquals(1, byteBuffer.limit());
-
- // The correct way to write part of an array using ByteBuffer.
- codedStream.writeRawBytes(ByteBuffer.wrap(value, 2, 1).slice());
-
- codedStream.flush();
- byte[] result = outputStream.toByteArray();
- assertEquals(6, result.length);
- for (int i = 0; i < 5; i++) {
- assertEquals(value[i], result[i]);
- }
- assertEquals(value[2], result[5]);
- }
-
- public void testWriteByteArrayWithOffsets() throws Exception {
- byte[] fullArray = bytes(0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88);
- byte[] destination = new byte[4];
- CodedOutputStream codedStream = CodedOutputStream.newInstance(destination);
- codedStream.writeByteArrayNoTag(fullArray, 2, 2);
- assertEqualBytes(bytes(0x02, 0x33, 0x44, 0x00), destination);
- assertEquals(3, codedStream.getTotalBytesWritten());
- }
}
diff --git a/java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java b/java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java
deleted file mode 100644
index e7905f7..0000000
--- a/java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import protobuf_unittest.UnittestProto.TestDeprecatedFields;
-
-import junit.framework.TestCase;
-
-import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Method;
-/**
- * Test field deprecation
- *
- * @author birdo@google.com (Roberto Scaramuzzi)
- */
-public class DeprecatedFieldTest extends TestCase {
- private String[] deprecatedGetterNames = {
- "hasDeprecatedInt32",
- "getDeprecatedInt32"};
-
- private String[] deprecatedBuilderGetterNames = {
- "hasDeprecatedInt32",
- "getDeprecatedInt32",
- "clearDeprecatedInt32"};
-
- private String[] deprecatedBuilderSetterNames = {
- "setDeprecatedInt32"};
-
- public void testDeprecatedField() throws Exception {
- Class<?> deprecatedFields = TestDeprecatedFields.class;
- Class<?> deprecatedFieldsBuilder = TestDeprecatedFields.Builder.class;
- for (String name : deprecatedGetterNames) {
- Method method = deprecatedFields.getMethod(name);
- assertTrue("Method " + name + " should be deprecated",
- isDeprecated(method));
- }
- for (String name : deprecatedBuilderGetterNames) {
- Method method = deprecatedFieldsBuilder.getMethod(name);
- assertTrue("Method " + name + " should be deprecated",
- isDeprecated(method));
- }
- for (String name : deprecatedBuilderSetterNames) {
- Method method = deprecatedFieldsBuilder.getMethod(name, int.class);
- assertTrue("Method " + name + " should be deprecated",
- isDeprecated(method));
- }
- }
-
- private boolean isDeprecated(AnnotatedElement annotated) {
- return annotated.isAnnotationPresent(Deprecated.class);
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/DescriptorsTest.java b/java/src/test/java/com/google/protobuf/DescriptorsTest.java
index 0092771..f41d070 100644
--- a/java/src/test/java/com/google/protobuf/DescriptorsTest.java
+++ b/java/src/test/java/com/google/protobuf/DescriptorsTest.java
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -31,15 +31,12 @@
package com.google.protobuf;
import com.google.protobuf.DescriptorProtos.DescriptorProto;
-import com.google.protobuf.DescriptorProtos.EnumDescriptorProto;
-import com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto;
import com.google.protobuf.DescriptorProtos.FieldDescriptorProto;
import com.google.protobuf.DescriptorProtos.FileDescriptorProto;
import com.google.protobuf.Descriptors.DescriptorValidationException;
import com.google.protobuf.Descriptors.FileDescriptor;
import com.google.protobuf.Descriptors.Descriptor;
import com.google.protobuf.Descriptors.FieldDescriptor;
-import com.google.protobuf.Descriptors.OneofDescriptor;
import com.google.protobuf.Descriptors.EnumDescriptor;
import com.google.protobuf.Descriptors.EnumValueDescriptor;
import com.google.protobuf.Descriptors.ServiceDescriptor;
@@ -54,19 +51,15 @@ import protobuf_unittest.UnittestProto.ForeignMessage;
import protobuf_unittest.UnittestProto.TestAllTypes;
import protobuf_unittest.UnittestProto.TestAllExtensions;
import protobuf_unittest.UnittestProto.TestExtremeDefaultValues;
-import protobuf_unittest.UnittestProto.TestMultipleExtensionRanges;
import protobuf_unittest.UnittestProto.TestRequired;
import protobuf_unittest.UnittestProto.TestService;
import protobuf_unittest.UnittestCustomOptions;
-import protobuf_unittest.TestCustomOptions;
-
import junit.framework.TestCase;
import java.util.Arrays;
import java.util.Collections;
-import java.util.List;
/**
* Unit test for {@link Descriptors}.
@@ -78,7 +71,6 @@ public class DescriptorsTest extends TestCase {
// Regression test for bug where referencing a FieldDescriptor.Type value
// before a FieldDescriptorProto.Type value would yield a
// ExceptionInInitializerError.
- @SuppressWarnings("unused")
private static final Object STATIC_INIT_TEST = FieldDescriptor.Type.BOOL;
public void testFieldTypeEnumMapping() throws Exception {
@@ -312,7 +304,6 @@ public class DescriptorsTest extends TestCase {
EnumValueDescriptor value = ForeignEnum.FOREIGN_FOO.getValueDescriptor();
assertEquals(value, enumType.getValues().get(0));
assertEquals("FOREIGN_FOO", value.getName());
- assertEquals("FOREIGN_FOO", value.toString());
assertEquals(4, value.getNumber());
assertEquals(value, enumType.findValueByName("FOREIGN_FOO"));
assertEquals(value, enumType.findValueByNumber(4));
@@ -329,6 +320,7 @@ public class DescriptorsTest extends TestCase {
assertEquals("protobuf_unittest.TestService", service.getFullName());
assertEquals(UnittestProto.getDescriptor(), service.getFile());
+ assertEquals(2, service.getMethods().size());
MethodDescriptor fooMethod = service.getMethods().get(0);
assertEquals("Foo", fooMethod.getName());
@@ -355,12 +347,8 @@ public class DescriptorsTest extends TestCase {
public void testCustomOptions() throws Exception {
- // Get the descriptor indirectly from a dependent proto class. This is to
- // ensure that when a proto class is loaded, custom options defined in its
- // dependencies are also properly initialized.
Descriptor descriptor =
- TestCustomOptions.TestMessageWithCustomOptionsContainer.getDescriptor()
- .findFieldByName("field").getMessageType();
+ UnittestCustomOptions.TestMessageWithCustomOptions.getDescriptor();
assertTrue(
descriptor.getOptions().hasExtension(UnittestCustomOptions.messageOpt1));
@@ -437,7 +425,7 @@ public class DescriptorsTest extends TestCase {
UnittestEnormousDescriptor.getDescriptor()
.toProto().getSerializedSize() > 65536);
}
-
+
/**
* Tests that the DescriptorValidationException works as intended.
*/
@@ -456,7 +444,7 @@ public class DescriptorsTest extends TestCase {
.build())
.build();
try {
- Descriptors.FileDescriptor.buildFrom(fileDescriptorProto,
+ Descriptors.FileDescriptor.buildFrom(fileDescriptorProto,
new FileDescriptor[0]);
fail("DescriptorValidationException expected");
} catch (DescriptorValidationException e) {
@@ -468,268 +456,4 @@ public class DescriptorsTest extends TestCase {
assertTrue(e.getCause().getMessage().indexOf("invalid") != -1);
}
}
-
- /**
- * Tests the translate/crosslink for an example where a message field's name
- * and type name are the same.
- */
- public void testDescriptorComplexCrosslink() throws Exception {
- FileDescriptorProto fileDescriptorProto = FileDescriptorProto.newBuilder()
- .setName("foo.proto")
- .addMessageType(DescriptorProto.newBuilder()
- .setName("Foo")
- .addField(FieldDescriptorProto.newBuilder()
- .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL)
- .setType(FieldDescriptorProto.Type.TYPE_INT32)
- .setName("foo")
- .setNumber(1)
- .build())
- .build())
- .addMessageType(DescriptorProto.newBuilder()
- .setName("Bar")
- .addField(FieldDescriptorProto.newBuilder()
- .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL)
- .setTypeName("Foo")
- .setName("Foo")
- .setNumber(1)
- .build())
- .build())
- .build();
- // translate and crosslink
- FileDescriptor file =
- Descriptors.FileDescriptor.buildFrom(fileDescriptorProto,
- new FileDescriptor[0]);
- // verify resulting descriptors
- assertNotNull(file);
- List<Descriptor> msglist = file.getMessageTypes();
- assertNotNull(msglist);
- assertTrue(msglist.size() == 2);
- boolean barFound = false;
- for (Descriptor desc : msglist) {
- if (desc.getName().equals("Bar")) {
- barFound = true;
- assertNotNull(desc.getFields());
- List<FieldDescriptor> fieldlist = desc.getFields();
- assertNotNull(fieldlist);
- assertTrue(fieldlist.size() == 1);
- assertTrue(fieldlist.get(0).getType() == FieldDescriptor.Type.MESSAGE);
- assertTrue(fieldlist.get(0).getMessageType().getName().equals("Foo"));
- }
- }
- assertTrue(barFound);
- }
-
- public void testDependencyOrder() throws Exception {
- FileDescriptorProto fooProto = FileDescriptorProto.newBuilder()
- .setName("foo.proto").build();
- FileDescriptorProto barProto = FileDescriptorProto.newBuilder()
- .setName("bar.proto")
- .addDependency("foo.proto")
- .build();
- FileDescriptorProto bazProto = FileDescriptorProto.newBuilder()
- .setName("baz.proto")
- .addDependency("foo.proto")
- .addDependency("bar.proto")
- .addPublicDependency(0)
- .addPublicDependency(1)
- .build();
- FileDescriptor fooFile = Descriptors.FileDescriptor.buildFrom(fooProto,
- new FileDescriptor[0]);
- FileDescriptor barFile = Descriptors.FileDescriptor.buildFrom(barProto,
- new FileDescriptor[] {fooFile});
-
- // Items in the FileDescriptor array can be in any order.
- Descriptors.FileDescriptor.buildFrom(bazProto,
- new FileDescriptor[] {fooFile, barFile});
- Descriptors.FileDescriptor.buildFrom(bazProto,
- new FileDescriptor[] {barFile, fooFile});
- }
-
- public void testInvalidPublicDependency() throws Exception {
- FileDescriptorProto fooProto = FileDescriptorProto.newBuilder()
- .setName("foo.proto").build();
- FileDescriptorProto barProto = FileDescriptorProto.newBuilder()
- .setName("boo.proto")
- .addDependency("foo.proto")
- .addPublicDependency(1) // Error, should be 0.
- .build();
- FileDescriptor fooFile = Descriptors.FileDescriptor.buildFrom(fooProto,
- new FileDescriptor[0]);
- try {
- Descriptors.FileDescriptor.buildFrom(barProto,
- new FileDescriptor[] {fooFile});
- fail("DescriptorValidationException expected");
- } catch (DescriptorValidationException e) {
- assertTrue(
- e.getMessage().indexOf("Invalid public dependency index.") != -1);
- }
- }
-
- public void testHiddenDependency() throws Exception {
- FileDescriptorProto barProto = FileDescriptorProto.newBuilder()
- .setName("bar.proto")
- .addMessageType(DescriptorProto.newBuilder().setName("Bar"))
- .build();
- FileDescriptorProto forwardProto = FileDescriptorProto.newBuilder()
- .setName("forward.proto")
- .addDependency("bar.proto")
- .build();
- FileDescriptorProto fooProto = FileDescriptorProto.newBuilder()
- .setName("foo.proto")
- .addDependency("forward.proto")
- .addMessageType(DescriptorProto.newBuilder()
- .setName("Foo")
- .addField(FieldDescriptorProto.newBuilder()
- .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL)
- .setTypeName("Bar")
- .setName("bar")
- .setNumber(1)))
- .build();
- FileDescriptor barFile = Descriptors.FileDescriptor.buildFrom(
- barProto, new FileDescriptor[0]);
- FileDescriptor forwardFile = Descriptors.FileDescriptor.buildFrom(
- forwardProto, new FileDescriptor[] {barFile});
-
- try {
- Descriptors.FileDescriptor.buildFrom(
- fooProto, new FileDescriptor[] {forwardFile});
- fail("DescriptorValidationException expected");
- } catch (DescriptorValidationException e) {
- assertTrue(e.getMessage().indexOf("Bar") != -1);
- assertTrue(e.getMessage().indexOf("is not defined") != -1);
- }
- }
-
- public void testPublicDependency() throws Exception {
- FileDescriptorProto barProto = FileDescriptorProto.newBuilder()
- .setName("bar.proto")
- .addMessageType(DescriptorProto.newBuilder().setName("Bar"))
- .build();
- FileDescriptorProto forwardProto = FileDescriptorProto.newBuilder()
- .setName("forward.proto")
- .addDependency("bar.proto")
- .addPublicDependency(0)
- .build();
- FileDescriptorProto fooProto = FileDescriptorProto.newBuilder()
- .setName("foo.proto")
- .addDependency("forward.proto")
- .addMessageType(DescriptorProto.newBuilder()
- .setName("Foo")
- .addField(FieldDescriptorProto.newBuilder()
- .setLabel(FieldDescriptorProto.Label.LABEL_OPTIONAL)
- .setTypeName("Bar")
- .setName("bar")
- .setNumber(1)))
- .build();
- FileDescriptor barFile = Descriptors.FileDescriptor.buildFrom(
- barProto, new FileDescriptor[0]);
- FileDescriptor forwardFile = Descriptors.FileDescriptor.buildFrom(
- forwardProto, new FileDescriptor[]{barFile});
- Descriptors.FileDescriptor.buildFrom(
- fooProto, new FileDescriptor[] {forwardFile});
- }
-
- /**
- * Tests the translate/crosslink for an example with a more complex namespace
- * referencing.
- */
- public void testComplexNamespacePublicDependency() throws Exception {
- FileDescriptorProto fooProto = FileDescriptorProto.newBuilder()
- .setName("bar.proto")
- .setPackage("a.b.c.d.bar.shared")
- .addEnumType(EnumDescriptorProto.newBuilder()
- .setName("MyEnum")
- .addValue(EnumValueDescriptorProto.newBuilder()
- .setName("BLAH")
- .setNumber(1)))
- .build();
- FileDescriptorProto barProto = FileDescriptorProto.newBuilder()
- .setName("foo.proto")
- .addDependency("bar.proto")
- .setPackage("a.b.c.d.foo.shared")
- .addMessageType(DescriptorProto.newBuilder()
- .setName("MyMessage")
- .addField(FieldDescriptorProto.newBuilder()
- .setLabel(FieldDescriptorProto.Label.LABEL_REPEATED)
- .setTypeName("bar.shared.MyEnum")
- .setName("MyField")
- .setNumber(1)))
- .build();
- // translate and crosslink
- FileDescriptor fooFile = Descriptors.FileDescriptor.buildFrom(
- fooProto, new FileDescriptor[0]);
- FileDescriptor barFile = Descriptors.FileDescriptor.buildFrom(
- barProto, new FileDescriptor[]{fooFile});
- // verify resulting descriptors
- assertNotNull(barFile);
- List<Descriptor> msglist = barFile.getMessageTypes();
- assertNotNull(msglist);
- assertTrue(msglist.size() == 1);
- Descriptor desc = msglist.get(0);
- if (desc.getName().equals("MyMessage")) {
- assertNotNull(desc.getFields());
- List<FieldDescriptor> fieldlist = desc.getFields();
- assertNotNull(fieldlist);
- assertTrue(fieldlist.size() == 1);
- FieldDescriptor field = fieldlist.get(0);
- assertTrue(field.getType() == FieldDescriptor.Type.ENUM);
- assertTrue(field.getEnumType().getName().equals("MyEnum"));
- assertTrue(field.getEnumType().getFile().getName().equals("bar.proto"));
- assertTrue(field.getEnumType().getFile().getPackage().equals(
- "a.b.c.d.bar.shared"));
- }
- }
-
- public void testOneofDescriptor() throws Exception {
- Descriptor messageType = TestAllTypes.getDescriptor();
- FieldDescriptor field =
- messageType.findFieldByName("oneof_nested_message");
- OneofDescriptor oneofDescriptor = field.getContainingOneof();
- assertNotNull(oneofDescriptor);
- assertSame(oneofDescriptor, messageType.getOneofs().get(0));
- assertEquals("oneof_field", oneofDescriptor.getName());
-
- assertEquals(4, oneofDescriptor.getFieldCount());
- assertSame(oneofDescriptor.getField(1), field);
- }
-
- public void testMessageDescriptorExtensions() throws Exception {
- assertFalse(TestAllTypes.getDescriptor().isExtendable());
- assertTrue(TestAllExtensions.getDescriptor().isExtendable());
- assertTrue(TestMultipleExtensionRanges.getDescriptor().isExtendable());
-
- assertFalse(TestAllTypes.getDescriptor().isExtensionNumber(3));
- assertTrue(TestAllExtensions.getDescriptor().isExtensionNumber(3));
- assertTrue(TestMultipleExtensionRanges.getDescriptor().isExtensionNumber(42));
- assertFalse(TestMultipleExtensionRanges.getDescriptor().isExtensionNumber(43));
- assertFalse(TestMultipleExtensionRanges.getDescriptor().isExtensionNumber(4142));
- assertTrue(TestMultipleExtensionRanges.getDescriptor().isExtensionNumber(4143));
- }
-
- public void testPackedEnumField() throws Exception {
- FileDescriptorProto fileDescriptorProto = FileDescriptorProto.newBuilder()
- .setName("foo.proto")
- .addEnumType(EnumDescriptorProto.newBuilder()
- .setName("Enum")
- .addValue(EnumValueDescriptorProto.newBuilder()
- .setName("FOO")
- .setNumber(1)
- .build())
- .build())
- .addMessageType(DescriptorProto.newBuilder()
- .setName("Message")
- .addField(FieldDescriptorProto.newBuilder()
- .setName("foo")
- .setTypeName("Enum")
- .setNumber(1)
- .setLabel(FieldDescriptorProto.Label.LABEL_REPEATED)
- .setOptions(DescriptorProtos.FieldOptions.newBuilder()
- .setPacked(true)
- .build())
- .build())
- .build())
- .build();
- Descriptors.FileDescriptor.buildFrom(
- fileDescriptorProto, new FileDescriptor[0]);
- }
}
diff --git a/java/src/test/java/com/google/protobuf/DynamicMessageTest.java b/java/src/test/java/com/google/protobuf/DynamicMessageTest.java
index 55144e7..aabccda 100644
--- a/java/src/test/java/com/google/protobuf/DynamicMessageTest.java
+++ b/java/src/test/java/com/google/protobuf/DynamicMessageTest.java
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -30,13 +30,8 @@
package com.google.protobuf;
-import com.google.protobuf.Descriptors.EnumDescriptor;
-import com.google.protobuf.Descriptors.FieldDescriptor;
-import com.google.protobuf.Descriptors.OneofDescriptor;
-
-import protobuf_unittest.UnittestProto.TestAllExtensions;
import protobuf_unittest.UnittestProto.TestAllTypes;
-import protobuf_unittest.UnittestProto.TestEmptyMessage;
+import protobuf_unittest.UnittestProto.TestAllExtensions;
import protobuf_unittest.UnittestProto.TestPackedTypes;
import junit.framework.TestCase;
@@ -66,44 +61,28 @@ public class DynamicMessageTest extends TestCase {
reflectionTester.assertAllFieldsSetViaReflection(message);
}
- public void testSettersAfterBuild() throws Exception {
+ public void testDoubleBuildError() throws Exception {
Message.Builder builder =
DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
- Message firstMessage = builder.build();
- // double build()
builder.build();
- // clear() after build()
- builder.clear();
- // setters after build()
- reflectionTester.setAllFieldsViaReflection(builder);
- Message message = builder.build();
- reflectionTester.assertAllFieldsSetViaReflection(message);
- // repeated setters after build()
- reflectionTester.modifyRepeatedFieldsViaReflection(builder);
- message = builder.build();
- reflectionTester.assertRepeatedFieldsModifiedViaReflection(message);
- // firstMessage shouldn't have been modified.
- reflectionTester.assertClearViaReflection(firstMessage);
+ try {
+ builder.build();
+ fail("Should have thrown exception.");
+ } catch (IllegalStateException e) {
+ // Success.
+ }
}
- public void testUnknownFields() throws Exception {
+ public void testClearAfterBuildError() throws Exception {
Message.Builder builder =
- DynamicMessage.newBuilder(TestEmptyMessage.getDescriptor());
- builder.setUnknownFields(UnknownFieldSet.newBuilder()
- .addField(1, UnknownFieldSet.Field.newBuilder().addVarint(1).build())
- .addField(2, UnknownFieldSet.Field.newBuilder().addFixed32(1).build())
- .build());
- Message message = builder.build();
- assertEquals(2, message.getUnknownFields().asMap().size());
- // clone() with unknown fields
- Message.Builder newBuilder = builder.clone();
- assertEquals(2, newBuilder.getUnknownFields().asMap().size());
- // clear() with unknown fields
- newBuilder.clear();
- assertTrue(newBuilder.getUnknownFields().asMap().isEmpty());
- // serialize/parse with unknown fields
- newBuilder.mergeFrom(message.toByteString());
- assertEquals(2, newBuilder.getUnknownFields().asMap().size());
+ DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
+ builder.build();
+ try {
+ builder.clear();
+ fail("Should have thrown exception.");
+ } catch (IllegalStateException e) {
+ // Success.
+ }
}
public void testDynamicMessageSettersRejectNull() throws Exception {
@@ -188,23 +167,6 @@ public class DynamicMessageTest extends TestCase {
Message message2 =
DynamicMessage.parseFrom(TestAllTypes.getDescriptor(), rawBytes);
reflectionTester.assertAllFieldsSetViaReflection(message2);
-
- // Test Parser interface.
- Message message3 = message2.getParserForType().parseFrom(rawBytes);
- reflectionTester.assertAllFieldsSetViaReflection(message3);
- }
-
- public void testDynamicMessageExtensionParsing() throws Exception {
- ByteString rawBytes = TestUtil.getAllExtensionsSet().toByteString();
- Message message = DynamicMessage.parseFrom(
- TestAllExtensions.getDescriptor(), rawBytes,
- TestUtil.getExtensionRegistry());
- extensionsReflectionTester.assertAllFieldsSetViaReflection(message);
-
- // Test Parser interface.
- Message message2 = message.getParserForType().parseFrom(
- rawBytes, TestUtil.getExtensionRegistry());
- extensionsReflectionTester.assertAllFieldsSetViaReflection(message2);
}
public void testDynamicMessagePackedSerialization() throws Exception {
@@ -232,10 +194,6 @@ public class DynamicMessageTest extends TestCase {
Message message2 =
DynamicMessage.parseFrom(TestPackedTypes.getDescriptor(), rawBytes);
packedReflectionTester.assertPackedFieldsSetViaReflection(message2);
-
- // Test Parser interface.
- Message message3 = message2.getParserForType().parseFrom(rawBytes);
- packedReflectionTester.assertPackedFieldsSetViaReflection(message3);
}
public void testDynamicMessageCopy() throws Exception {
@@ -245,19 +203,6 @@ public class DynamicMessageTest extends TestCase {
DynamicMessage copy = DynamicMessage.newBuilder(message).build();
reflectionTester.assertAllFieldsSetViaReflection(copy);
-
- // Test oneof behavior
- FieldDescriptor bytesField =
- TestAllTypes.getDescriptor().findFieldByName("oneof_bytes");
- FieldDescriptor uint32Field =
- TestAllTypes.getDescriptor().findFieldByName("oneof_uint32");
- assertTrue(copy.hasField(bytesField));
- assertFalse(copy.hasField(uint32Field));
- DynamicMessage copy2 =
- DynamicMessage.newBuilder(message).setField(uint32Field, 123).build();
- assertFalse(copy2.hasField(bytesField));
- assertTrue(copy2.hasField(uint32Field));
- assertEquals(123, copy2.getField(uint32Field));
}
public void testToBuilder() throws Exception {
@@ -278,49 +223,4 @@ public class DynamicMessageTest extends TestCase {
assertEquals(Arrays.asList(unknownFieldVal),
derived.getUnknownFields().getField(unknownFieldNum).getVarintList());
}
-
- public void testDynamicOneofMessage() throws Exception {
- DynamicMessage.Builder builder =
- DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
- OneofDescriptor oneof = TestAllTypes.getDescriptor().getOneofs().get(0);
- assertFalse(builder.hasOneof(oneof));
- assertSame(null, builder.getOneofFieldDescriptor(oneof));
-
- reflectionTester.setAllFieldsViaReflection(builder);
- assertTrue(builder.hasOneof(oneof));
- FieldDescriptor field = oneof.getField(3);
- assertSame(field, builder.getOneofFieldDescriptor(oneof));
-
- DynamicMessage message = builder.buildPartial();
- assertTrue(message.hasOneof(oneof));
-
- DynamicMessage.Builder mergedBuilder =
- DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
- FieldDescriptor mergedField = oneof.getField(0);
- mergedBuilder.setField(mergedField, 123);
- assertTrue(mergedBuilder.hasField(mergedField));
- mergedBuilder.mergeFrom(message);
- assertTrue(mergedBuilder.hasField(field));
- assertFalse(mergedBuilder.hasField(mergedField));
-
- builder.clearOneof(oneof);
- assertSame(null, builder.getOneofFieldDescriptor(oneof));
- message = builder.build();
- assertSame(null, message.getOneofFieldDescriptor(oneof));
- }
-
- // Regression test for a bug that makes setField() not work for repeated
- // enum fields.
- public void testSettersForRepeatedEnumField() throws Exception {
- DynamicMessage.Builder builder =
- DynamicMessage.newBuilder(TestAllTypes.getDescriptor());
- FieldDescriptor repeatedEnumField =
- TestAllTypes.getDescriptor().findFieldByName(
- "repeated_nested_enum");
- EnumDescriptor enumDescriptor = TestAllTypes.NestedEnum.getDescriptor();
- builder.setField(repeatedEnumField, enumDescriptor.getValues());
- DynamicMessage message = builder.build();
- assertEquals(
- enumDescriptor.getValues(), message.getField(repeatedEnumField));
- }
}
diff --git a/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java b/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java
deleted file mode 100644
index a92ba37..0000000
--- a/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-/**
- * A prerun for a test suite that allows running the full protocol buffer
- * tests in a mode that disables the optimization for not using
- * {@link RepeatedFieldBuilder} and {@link SingleFieldBuilder} until they are
- * requested. This allows us to run all the tests through both code paths
- * and ensures that both code paths produce identical results.
- *
- * @author jonp@google.com (Jon Perlow)
- */
-public class ForceFieldBuildersPreRun implements Runnable {
-
- //@Override (Java 1.6 override semantics, but we must support 1.5)
- public void run() {
- GeneratedMessage.enableAlwaysUseFieldBuildersForTesting();
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java b/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java
index 0b3482c..73c71f3 100644
--- a/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java
+++ b/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -30,51 +30,26 @@
package com.google.protobuf;
-import com.google.protobuf.Descriptors.Descriptor;
-import com.google.protobuf.Descriptors.FieldDescriptor;
-import com.google.protobuf.UnittestLite.TestAllExtensionsLite;
-import com.google.protobuf.test.UnittestImport;
-import protobuf_unittest.EnumWithNoOuter;
-import protobuf_unittest.MessageWithNoOuter;
-import protobuf_unittest.MultipleFilesTestProto;
-import protobuf_unittest.NestedExtension.MyNestedExtension;
-import protobuf_unittest.NestedExtensionLite.MyNestedExtensionLite;
-import protobuf_unittest.NonNestedExtension;
-import protobuf_unittest.NonNestedExtension.MessageToBeExtended;
-import protobuf_unittest.NonNestedExtension.MyNonNestedExtension;
-import protobuf_unittest.NonNestedExtensionLite;
-import protobuf_unittest.NonNestedExtensionLite.MessageLiteToBeExtended;
-import protobuf_unittest.NonNestedExtensionLite.MyNonNestedExtensionLite;
-import protobuf_unittest.OuterClassNameTest2OuterClass;
-import protobuf_unittest.OuterClassNameTest3OuterClass;
-import protobuf_unittest.OuterClassNameTestOuterClass;
-import protobuf_unittest.ServiceWithNoOuter;
import protobuf_unittest.UnittestOptimizeFor.TestOptimizedForSize;
import protobuf_unittest.UnittestOptimizeFor.TestOptionalOptimizedForSize;
import protobuf_unittest.UnittestOptimizeFor.TestRequiredOptimizedForSize;
import protobuf_unittest.UnittestProto;
-import protobuf_unittest.UnittestProto.ForeignEnum;
import protobuf_unittest.UnittestProto.ForeignMessage;
-import protobuf_unittest.UnittestProto.ForeignMessageOrBuilder;
-import protobuf_unittest.UnittestProto.TestAllExtensions;
+import protobuf_unittest.UnittestProto.ForeignEnum;
import protobuf_unittest.UnittestProto.TestAllTypes;
-import protobuf_unittest.UnittestProto.TestAllTypes.NestedMessage;
-import protobuf_unittest.UnittestProto.TestAllTypesOrBuilder;
+import protobuf_unittest.UnittestProto.TestAllExtensions;
import protobuf_unittest.UnittestProto.TestExtremeDefaultValues;
-import protobuf_unittest.UnittestProto.TestOneof2;
import protobuf_unittest.UnittestProto.TestPackedTypes;
import protobuf_unittest.UnittestProto.TestUnpackedTypes;
+import protobuf_unittest.MultipleFilesTestProto;
+import protobuf_unittest.MessageWithNoOuter;
+import protobuf_unittest.EnumWithNoOuter;
+import protobuf_unittest.ServiceWithNoOuter;
+import com.google.protobuf.UnittestLite;
+import com.google.protobuf.UnittestLite.TestAllExtensionsLite;
import junit.framework.TestCase;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
/**
* Unit test for generated messages and generated code. See also
@@ -93,138 +68,32 @@ public class GeneratedMessageTest extends TestCase {
TestAllTypes.newBuilder().getDefaultInstanceForType());
}
- public void testMessageOrBuilder() throws Exception {
+ public void testAccessors() throws Exception {
TestAllTypes.Builder builder = TestAllTypes.newBuilder();
TestUtil.setAllFields(builder);
TestAllTypes message = builder.build();
TestUtil.assertAllFieldsSet(message);
}
- public void testUsingBuilderMultipleTimes() throws Exception {
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- // primitive field scalar and repeated
- builder.setOptionalSfixed64(100);
- builder.addRepeatedInt32(100);
- // enum field scalar and repeated
- builder.setOptionalImportEnum(UnittestImport.ImportEnum.IMPORT_BAR);
- builder.addRepeatedImportEnum(UnittestImport.ImportEnum.IMPORT_BAR);
- // proto field scalar and repeated
- builder.setOptionalForeignMessage(ForeignMessage.newBuilder().setC(1));
- builder.addRepeatedForeignMessage(ForeignMessage.newBuilder().setC(1));
-
- TestAllTypes value1 = builder.build();
-
- assertEquals(100, value1.getOptionalSfixed64());
- assertEquals(100, value1.getRepeatedInt32(0));
- assertEquals(UnittestImport.ImportEnum.IMPORT_BAR,
- value1.getOptionalImportEnum());
- assertEquals(UnittestImport.ImportEnum.IMPORT_BAR,
- value1.getRepeatedImportEnum(0));
- assertEquals(1, value1.getOptionalForeignMessage().getC());
- assertEquals(1, value1.getRepeatedForeignMessage(0).getC());
-
- // Make sure that builder didn't update previously created values
- builder.setOptionalSfixed64(200);
- builder.setRepeatedInt32(0, 200);
- builder.setOptionalImportEnum(UnittestImport.ImportEnum.IMPORT_FOO);
- builder.setRepeatedImportEnum(0, UnittestImport.ImportEnum.IMPORT_FOO);
- builder.setOptionalForeignMessage(ForeignMessage.newBuilder().setC(2));
- builder.setRepeatedForeignMessage(0, ForeignMessage.newBuilder().setC(2));
-
- TestAllTypes value2 = builder.build();
-
- // Make sure value1 didn't change.
- assertEquals(100, value1.getOptionalSfixed64());
- assertEquals(100, value1.getRepeatedInt32(0));
- assertEquals(UnittestImport.ImportEnum.IMPORT_BAR,
- value1.getOptionalImportEnum());
- assertEquals(UnittestImport.ImportEnum.IMPORT_BAR,
- value1.getRepeatedImportEnum(0));
- assertEquals(1, value1.getOptionalForeignMessage().getC());
- assertEquals(1, value1.getRepeatedForeignMessage(0).getC());
-
- // Make sure value2 is correct
- assertEquals(200, value2.getOptionalSfixed64());
- assertEquals(200, value2.getRepeatedInt32(0));
- assertEquals(UnittestImport.ImportEnum.IMPORT_FOO,
- value2.getOptionalImportEnum());
- assertEquals(UnittestImport.ImportEnum.IMPORT_FOO,
- value2.getRepeatedImportEnum(0));
- assertEquals(2, value2.getOptionalForeignMessage().getC());
- assertEquals(2, value2.getRepeatedForeignMessage(0).getC());
- }
-
- public void testProtosShareRepeatedArraysIfDidntChange() throws Exception {
+ public void testDoubleBuildError() throws Exception {
TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- builder.addRepeatedInt32(100);
- builder.addRepeatedImportEnum(UnittestImport.ImportEnum.IMPORT_BAR);
- builder.addRepeatedForeignMessage(ForeignMessage.getDefaultInstance());
-
- TestAllTypes value1 = builder.build();
- TestAllTypes value2 = value1.toBuilder().build();
-
- assertSame(value1.getRepeatedInt32List(), value2.getRepeatedInt32List());
- assertSame(value1.getRepeatedImportEnumList(),
- value2.getRepeatedImportEnumList());
- assertSame(value1.getRepeatedForeignMessageList(),
- value2.getRepeatedForeignMessageList());
+ builder.build();
+ try {
+ builder.build();
+ fail("Should have thrown exception.");
+ } catch (IllegalStateException e) {
+ // Success.
+ }
}
- public void testRepeatedArraysAreImmutable() throws Exception {
+ public void testClearAfterBuildError() throws Exception {
TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- builder.addRepeatedInt32(100);
- builder.addRepeatedImportEnum(UnittestImport.ImportEnum.IMPORT_BAR);
- builder.addRepeatedForeignMessage(ForeignMessage.getDefaultInstance());
- assertIsUnmodifiable(builder.getRepeatedInt32List());
- assertIsUnmodifiable(builder.getRepeatedImportEnumList());
- assertIsUnmodifiable(builder.getRepeatedForeignMessageList());
- assertIsUnmodifiable(builder.getRepeatedFloatList());
-
-
- TestAllTypes value = builder.build();
- assertIsUnmodifiable(value.getRepeatedInt32List());
- assertIsUnmodifiable(value.getRepeatedImportEnumList());
- assertIsUnmodifiable(value.getRepeatedForeignMessageList());
- assertIsUnmodifiable(value.getRepeatedFloatList());
- }
-
- public void testParsedMessagesAreImmutable() throws Exception {
- TestAllTypes value = TestAllTypes.PARSER.parseFrom(
- TestUtil.getAllSet().toByteString());
- assertIsUnmodifiable(value.getRepeatedInt32List());
- assertIsUnmodifiable(value.getRepeatedInt64List());
- assertIsUnmodifiable(value.getRepeatedUint32List());
- assertIsUnmodifiable(value.getRepeatedUint64List());
- assertIsUnmodifiable(value.getRepeatedSint32List());
- assertIsUnmodifiable(value.getRepeatedSint64List());
- assertIsUnmodifiable(value.getRepeatedFixed32List());
- assertIsUnmodifiable(value.getRepeatedFixed64List());
- assertIsUnmodifiable(value.getRepeatedSfixed32List());
- assertIsUnmodifiable(value.getRepeatedSfixed64List());
- assertIsUnmodifiable(value.getRepeatedFloatList());
- assertIsUnmodifiable(value.getRepeatedDoubleList());
- assertIsUnmodifiable(value.getRepeatedBoolList());
- assertIsUnmodifiable(value.getRepeatedStringList());
- assertIsUnmodifiable(value.getRepeatedBytesList());
- assertIsUnmodifiable(value.getRepeatedGroupList());
- assertIsUnmodifiable(value.getRepeatedNestedMessageList());
- assertIsUnmodifiable(value.getRepeatedForeignMessageList());
- assertIsUnmodifiable(value.getRepeatedImportMessageList());
- assertIsUnmodifiable(value.getRepeatedNestedEnumList());
- assertIsUnmodifiable(value.getRepeatedForeignEnumList());
- assertIsUnmodifiable(value.getRepeatedImportEnumList());
- }
-
- private void assertIsUnmodifiable(List<?> list) {
- if (list == Collections.emptyList()) {
- // OKAY -- Need to check this b/c EmptyList allows you to call clear.
- } else {
- try {
- list.clear();
- fail("List wasn't immutable");
- } catch (UnsupportedOperationException e) {
- // good
- }
+ builder.build();
+ try {
+ builder.clear();
+ fail("Should have thrown exception.");
+ } catch (IllegalStateException e) {
+ // Success.
}
}
@@ -404,44 +273,6 @@ public class GeneratedMessageTest extends TestCase {
// We expect this exception.
}
}
-
- public void testRepeatedAppendIterateOnlyOnce() throws Exception {
- // Create a Iterable that can only be iterated once.
- Iterable<String> stringIterable = new Iterable<String>() {
- private boolean called = false;
- @Override
- public Iterator<String> iterator() {
- if (called) {
- throw new IllegalStateException();
- }
- called = true;
- return Arrays.asList("one", "two", "three").iterator();
- }
- };
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- builder.addAllRepeatedString(stringIterable);
- assertEquals(3, builder.getRepeatedStringCount());
- assertEquals("one", builder.getRepeatedString(0));
- assertEquals("two", builder.getRepeatedString(1));
- assertEquals("three", builder.getRepeatedString(2));
-
- try {
- builder.addAllRepeatedString(stringIterable);
- fail("Exception was not thrown");
- } catch (IllegalStateException e) {
- // We expect this exception.
- }
- }
-
- public void testMergeFromOtherRejectsNull() throws Exception {
- try {
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- builder.mergeFrom((TestAllTypes) null);
- fail("Exception was not thrown");
- } catch (NullPointerException e) {
- // We expect this exception.
- }
- }
public void testSettingForeignMessageUsingBuilder() throws Exception {
TestAllTypes message = TestAllTypes.newBuilder()
@@ -483,22 +314,11 @@ public class GeneratedMessageTest extends TestCase {
assertEquals(Float.POSITIVE_INFINITY, message.getInfFloat());
assertEquals(Float.NEGATIVE_INFINITY, message.getNegInfFloat());
assertTrue(Float.isNaN(message.getNanFloat()));
- assertEquals("? ? ?? ?? ??? ??/ ??-", message.getCppTrigraph());
- }
-
- public void testClear() throws Exception {
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- TestUtil.assertClear(builder);
- TestUtil.setAllFields(builder);
- builder.clear();
- TestUtil.assertClear(builder);
}
public void testReflectionGetters() throws Exception {
TestAllTypes.Builder builder = TestAllTypes.newBuilder();
TestUtil.setAllFields(builder);
- reflectionTester.assertAllFieldsSetViaReflection(builder);
-
TestAllTypes message = builder.build();
reflectionTester.assertAllFieldsSetViaReflection(message);
}
@@ -506,8 +326,6 @@ public class GeneratedMessageTest extends TestCase {
public void testReflectionSetters() throws Exception {
TestAllTypes.Builder builder = TestAllTypes.newBuilder();
reflectionTester.setAllFieldsViaReflection(builder);
- TestUtil.assertAllFieldsSet(builder);
-
TestAllTypes message = builder.build();
TestUtil.assertAllFieldsSet(message);
}
@@ -521,8 +339,6 @@ public class GeneratedMessageTest extends TestCase {
TestAllTypes.Builder builder = TestAllTypes.newBuilder();
reflectionTester.setAllFieldsViaReflection(builder);
reflectionTester.modifyRepeatedFieldsViaReflection(builder);
- TestUtil.assertRepeatedFieldsModified(builder);
-
TestAllTypes message = builder.build();
TestUtil.assertRepeatedFieldsModified(message);
}
@@ -539,34 +355,6 @@ public class GeneratedMessageTest extends TestCase {
TestAllTypes.newBuilder().build());
}
- public void testReflectionGetOneof() throws Exception {
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- reflectionTester.setAllFieldsViaReflection(builder);
- Descriptors.OneofDescriptor oneof =
- TestAllTypes.getDescriptor().getOneofs().get(0);
- Descriptors.FieldDescriptor field =
- TestAllTypes.getDescriptor().findFieldByName("oneof_bytes");
- assertSame(field, builder.getOneofFieldDescriptor(oneof));
-
- TestAllTypes message = builder.build();
- assertSame(field, message.getOneofFieldDescriptor(oneof));
- }
-
- public void testReflectionClearOneof() throws Exception {
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- reflectionTester.setAllFieldsViaReflection(builder);
- Descriptors.OneofDescriptor oneof =
- TestAllTypes.getDescriptor().getOneofs().get(0);
- Descriptors.FieldDescriptor field =
- TestAllTypes.getDescriptor().findFieldByName("oneof_bytes");
-
- assertTrue(builder.hasOneof(oneof));
- assertTrue(builder.hasField(field));
- builder.clearOneof(oneof);
- assertFalse(builder.hasOneof(oneof));
- assertFalse(builder.hasField(field));
- }
-
public void testEnumInterface() throws Exception {
assertTrue(TestAllTypes.getDefaultInstance().getDefaultNestedEnum()
instanceof ProtocolMessageEnum);
@@ -603,7 +391,7 @@ public class GeneratedMessageTest extends TestCase {
new TestUtil.ReflectionTester(TestAllExtensions.getDescriptor(),
TestUtil.getExtensionRegistry());
- public void testExtensionMessageOrBuilder() throws Exception {
+ public void testExtensionAccessors() throws Exception {
TestAllExtensions.Builder builder = TestAllExtensions.newBuilder();
TestUtil.setAllExtensions(builder);
TestAllExtensions message = builder.build();
@@ -626,8 +414,6 @@ public class GeneratedMessageTest extends TestCase {
public void testExtensionReflectionGetters() throws Exception {
TestAllExtensions.Builder builder = TestAllExtensions.newBuilder();
TestUtil.setAllExtensions(builder);
- extensionsReflectionTester.assertAllFieldsSetViaReflection(builder);
-
TestAllExtensions message = builder.build();
extensionsReflectionTester.assertAllFieldsSetViaReflection(message);
}
@@ -635,8 +421,6 @@ public class GeneratedMessageTest extends TestCase {
public void testExtensionReflectionSetters() throws Exception {
TestAllExtensions.Builder builder = TestAllExtensions.newBuilder();
extensionsReflectionTester.setAllFieldsViaReflection(builder);
- TestUtil.assertAllExtensionsSet(builder);
-
TestAllExtensions message = builder.build();
TestUtil.assertAllExtensionsSet(message);
}
@@ -650,8 +434,6 @@ public class GeneratedMessageTest extends TestCase {
TestAllExtensions.Builder builder = TestAllExtensions.newBuilder();
extensionsReflectionTester.setAllFieldsViaReflection(builder);
extensionsReflectionTester.modifyRepeatedFieldsViaReflection(builder);
- TestUtil.assertRepeatedExtensionsModified(builder);
-
TestAllExtensions message = builder.build();
TestUtil.assertRepeatedExtensionsModified(message);
}
@@ -709,11 +491,9 @@ public class GeneratedMessageTest extends TestCase {
// lite fields directly since they are implemented exactly the same as
// regular fields.
- public void testLiteExtensionMessageOrBuilder() throws Exception {
+ public void testLiteExtensionAccessors() throws Exception {
TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.newBuilder();
TestUtil.setAllExtensions(builder);
- TestUtil.assertAllExtensionsSet(builder);
-
TestAllExtensionsLite message = builder.build();
TestUtil.assertAllExtensionsSet(message);
}
@@ -722,8 +502,6 @@ public class GeneratedMessageTest extends TestCase {
TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.newBuilder();
TestUtil.setAllExtensions(builder);
TestUtil.modifyRepeatedExtensions(builder);
- TestUtil.assertRepeatedExtensionsModified(builder);
-
TestAllExtensionsLite message = builder.build();
TestUtil.assertRepeatedExtensionsModified(message);
}
@@ -768,15 +546,6 @@ public class GeneratedMessageTest extends TestCase {
// =================================================================
// multiple_files_test
- // Test that custom options of an file level enum are properly initialized.
- // This test needs to be put before any other access to MultipleFilesTestProto
- // or messages defined in multiple_files_test.proto because the class loading
- // order affects initialization process of custom options.
- public void testEnumValueOptionsInMultipleFilesMode() throws Exception {
- assertEquals(12345, EnumWithNoOuter.FOO.getValueDescriptor().getOptions()
- .getExtension(MultipleFilesTestProto.enumValueOption).intValue());
- }
-
public void testMultipleFilesOption() throws Exception {
// We mostly just want to check that things compile.
MessageWithNoOuter message =
@@ -840,7 +609,6 @@ public class GeneratedMessageTest extends TestCase {
TestAllTypes.Builder builder = TestAllTypes.newBuilder();
TestUtil.setAllFields(builder);
TestAllTypes message = builder.build();
- TestUtil.assertAllFieldsSet(message);
TestUtil.assertAllFieldsSet(message.toBuilder().build());
}
@@ -875,641 +643,7 @@ public class GeneratedMessageTest extends TestCase {
UnittestProto.TestRecursiveMessage message =
UnittestProto.TestRecursiveMessage.getDefaultInstance();
assertTrue(message != null);
- assertNotNull(message.getA());
+ assertTrue(message.getA() != null);
assertTrue(message.getA() == message);
}
-
- public void testSerialize() throws Exception {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- TestUtil.setAllFields(builder);
- TestAllTypes expected = builder.build();
- ObjectOutputStream out = new ObjectOutputStream(baos);
- try {
- out.writeObject(expected);
- } finally {
- out.close();
- }
- ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
- ObjectInputStream in = new ObjectInputStream(bais);
- TestAllTypes actual = (TestAllTypes) in.readObject();
- assertEquals(expected, actual);
- }
-
- public void testSerializePartial() throws Exception {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- TestAllTypes expected = builder.buildPartial();
- ObjectOutputStream out = new ObjectOutputStream(baos);
- try {
- out.writeObject(expected);
- } finally {
- out.close();
- }
- ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
- ObjectInputStream in = new ObjectInputStream(bais);
- TestAllTypes actual = (TestAllTypes) in.readObject();
- assertEquals(expected, actual);
- }
-
- public void testEnumValues() {
- assertEquals(
- TestAllTypes.NestedEnum.BAR.getNumber(),
- TestAllTypes.NestedEnum.BAR_VALUE);
- assertEquals(
- TestAllTypes.NestedEnum.BAZ.getNumber(),
- TestAllTypes.NestedEnum.BAZ_VALUE);
- assertEquals(
- TestAllTypes.NestedEnum.FOO.getNumber(),
- TestAllTypes.NestedEnum.FOO_VALUE);
- }
-
- public void testNonNestedExtensionInitialization() {
- assertTrue(NonNestedExtension.nonNestedExtension
- .getMessageDefaultInstance() instanceof MyNonNestedExtension);
- assertEquals("nonNestedExtension",
- NonNestedExtension.nonNestedExtension.getDescriptor().getName());
- }
-
- public void testNestedExtensionInitialization() {
- assertTrue(MyNestedExtension.recursiveExtension.getMessageDefaultInstance()
- instanceof MessageToBeExtended);
- assertEquals("recursiveExtension",
- MyNestedExtension.recursiveExtension.getDescriptor().getName());
- }
-
- public void testNonNestedExtensionLiteInitialization() {
- assertTrue(NonNestedExtensionLite.nonNestedExtensionLite
- .getMessageDefaultInstance() instanceof MyNonNestedExtensionLite);
- }
-
- public void testNestedExtensionLiteInitialization() {
- assertTrue(MyNestedExtensionLite.recursiveExtensionLite
- .getMessageDefaultInstance() instanceof MessageLiteToBeExtended);
- }
-
- public void testInvalidations() throws Exception {
- GeneratedMessage.enableAlwaysUseFieldBuildersForTesting();
- TestAllTypes.NestedMessage nestedMessage1 =
- TestAllTypes.NestedMessage.newBuilder().build();
- TestAllTypes.NestedMessage nestedMessage2 =
- TestAllTypes.NestedMessage.newBuilder().build();
-
- // Set all three flavors (enum, primitive, message and singular/repeated)
- // and verify no invalidations fired
- TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent();
-
- TestAllTypes.Builder builder = (TestAllTypes.Builder)
- ((GeneratedMessage) TestAllTypes.getDefaultInstance()).
- newBuilderForType(mockParent);
- builder.setOptionalInt32(1);
- builder.setOptionalNestedEnum(TestAllTypes.NestedEnum.BAR);
- builder.setOptionalNestedMessage(nestedMessage1);
- builder.addRepeatedInt32(1);
- builder.addRepeatedNestedEnum(TestAllTypes.NestedEnum.BAR);
- builder.addRepeatedNestedMessage(nestedMessage1);
- assertEquals(0, mockParent.getInvalidationCount());
-
- // Now tell it we want changes and make sure it's only fired once
- // And do this for each flavor
-
- // primitive single
- builder.buildPartial();
- builder.setOptionalInt32(2);
- builder.setOptionalInt32(3);
- assertEquals(1, mockParent.getInvalidationCount());
-
- // enum single
- builder.buildPartial();
- builder.setOptionalNestedEnum(TestAllTypes.NestedEnum.BAZ);
- builder.setOptionalNestedEnum(TestAllTypes.NestedEnum.BAR);
- assertEquals(2, mockParent.getInvalidationCount());
-
- // message single
- builder.buildPartial();
- builder.setOptionalNestedMessage(nestedMessage2);
- builder.setOptionalNestedMessage(nestedMessage1);
- assertEquals(3, mockParent.getInvalidationCount());
-
- // primitive repeated
- builder.buildPartial();
- builder.addRepeatedInt32(2);
- builder.addRepeatedInt32(3);
- assertEquals(4, mockParent.getInvalidationCount());
-
- // enum repeated
- builder.buildPartial();
- builder.addRepeatedNestedEnum(TestAllTypes.NestedEnum.BAZ);
- builder.addRepeatedNestedEnum(TestAllTypes.NestedEnum.BAZ);
- assertEquals(5, mockParent.getInvalidationCount());
-
- // message repeated
- builder.buildPartial();
- builder.addRepeatedNestedMessage(nestedMessage2);
- builder.addRepeatedNestedMessage(nestedMessage1);
- assertEquals(6, mockParent.getInvalidationCount());
-
- }
-
- public void testInvalidations_Extensions() throws Exception {
- TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent();
-
- TestAllExtensions.Builder builder = (TestAllExtensions.Builder)
- ((GeneratedMessage) TestAllExtensions.getDefaultInstance()).
- newBuilderForType(mockParent);
-
- builder.addExtension(UnittestProto.repeatedInt32Extension, 1);
- builder.setExtension(UnittestProto.repeatedInt32Extension, 0, 2);
- builder.clearExtension(UnittestProto.repeatedInt32Extension);
- assertEquals(0, mockParent.getInvalidationCount());
-
- // Now tell it we want changes and make sure it's only fired once
- builder.buildPartial();
- builder.addExtension(UnittestProto.repeatedInt32Extension, 2);
- builder.addExtension(UnittestProto.repeatedInt32Extension, 3);
- assertEquals(1, mockParent.getInvalidationCount());
-
- builder.buildPartial();
- builder.setExtension(UnittestProto.repeatedInt32Extension, 0, 4);
- builder.setExtension(UnittestProto.repeatedInt32Extension, 1, 5);
- assertEquals(2, mockParent.getInvalidationCount());
-
- builder.buildPartial();
- builder.clearExtension(UnittestProto.repeatedInt32Extension);
- builder.clearExtension(UnittestProto.repeatedInt32Extension);
- assertEquals(3, mockParent.getInvalidationCount());
- }
-
- public void testBaseMessageOrBuilder() {
- // Mostly just makes sure the base interface exists and has some methods.
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- TestAllTypes message = builder.buildPartial();
- TestAllTypesOrBuilder builderAsInterface = (TestAllTypesOrBuilder) builder;
- TestAllTypesOrBuilder messageAsInterface = (TestAllTypesOrBuilder) message;
-
- assertEquals(
- messageAsInterface.getDefaultBool(),
- messageAsInterface.getDefaultBool());
- assertEquals(
- messageAsInterface.getOptionalDouble(),
- messageAsInterface.getOptionalDouble());
- }
-
- public void testMessageOrBuilderGetters() {
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
-
- // single fields
- assertSame(ForeignMessage.getDefaultInstance(),
- builder.getOptionalForeignMessageOrBuilder());
- ForeignMessage.Builder subBuilder =
- builder.getOptionalForeignMessageBuilder();
- assertSame(subBuilder, builder.getOptionalForeignMessageOrBuilder());
-
- // repeated fields
- ForeignMessage m0 = ForeignMessage.newBuilder().buildPartial();
- ForeignMessage m1 = ForeignMessage.newBuilder().buildPartial();
- ForeignMessage m2 = ForeignMessage.newBuilder().buildPartial();
- builder.addRepeatedForeignMessage(m0);
- builder.addRepeatedForeignMessage(m1);
- builder.addRepeatedForeignMessage(m2);
- assertSame(m0, builder.getRepeatedForeignMessageOrBuilder(0));
- assertSame(m1, builder.getRepeatedForeignMessageOrBuilder(1));
- assertSame(m2, builder.getRepeatedForeignMessageOrBuilder(2));
- ForeignMessage.Builder b0 = builder.getRepeatedForeignMessageBuilder(0);
- ForeignMessage.Builder b1 = builder.getRepeatedForeignMessageBuilder(1);
- assertSame(b0, builder.getRepeatedForeignMessageOrBuilder(0));
- assertSame(b1, builder.getRepeatedForeignMessageOrBuilder(1));
- assertSame(m2, builder.getRepeatedForeignMessageOrBuilder(2));
-
- List<? extends ForeignMessageOrBuilder> messageOrBuilderList =
- builder.getRepeatedForeignMessageOrBuilderList();
- assertSame(b0, messageOrBuilderList.get(0));
- assertSame(b1, messageOrBuilderList.get(1));
- assertSame(m2, messageOrBuilderList.get(2));
- }
-
- public void testGetFieldBuilder() {
- Descriptor descriptor = TestAllTypes.getDescriptor();
-
- FieldDescriptor fieldDescriptor =
- descriptor.findFieldByName("optional_nested_message");
- FieldDescriptor foreignFieldDescriptor =
- descriptor.findFieldByName("optional_foreign_message");
- FieldDescriptor importFieldDescriptor =
- descriptor.findFieldByName("optional_import_message");
-
- // Mutate the message with new field builder
- // Mutate nested message
- TestAllTypes.Builder builder1 = TestAllTypes.newBuilder();
- Message.Builder fieldBuilder1 = builder1.newBuilderForField(fieldDescriptor)
- .mergeFrom((Message) builder1.getField(fieldDescriptor));
- FieldDescriptor subFieldDescriptor1 =
- fieldBuilder1.getDescriptorForType().findFieldByName("bb");
- fieldBuilder1.setField(subFieldDescriptor1, 1);
- builder1.setField(fieldDescriptor, fieldBuilder1.build());
-
- // Mutate foreign message
- Message.Builder foreignFieldBuilder1 = builder1.newBuilderForField(
- foreignFieldDescriptor)
- .mergeFrom((Message) builder1.getField(foreignFieldDescriptor));
- FieldDescriptor subForeignFieldDescriptor1 =
- foreignFieldBuilder1.getDescriptorForType().findFieldByName("c");
- foreignFieldBuilder1.setField(subForeignFieldDescriptor1, 2);
- builder1.setField(foreignFieldDescriptor, foreignFieldBuilder1.build());
-
- // Mutate import message
- Message.Builder importFieldBuilder1 = builder1.newBuilderForField(
- importFieldDescriptor)
- .mergeFrom((Message) builder1.getField(importFieldDescriptor));
- FieldDescriptor subImportFieldDescriptor1 =
- importFieldBuilder1.getDescriptorForType().findFieldByName("d");
- importFieldBuilder1.setField(subImportFieldDescriptor1, 3);
- builder1.setField(importFieldDescriptor, importFieldBuilder1.build());
-
- Message newMessage1 = builder1.build();
-
- // Mutate the message with existing field builder
- // Mutate nested message
- TestAllTypes.Builder builder2 = TestAllTypes.newBuilder();
- Message.Builder fieldBuilder2 = builder2.getFieldBuilder(fieldDescriptor);
- FieldDescriptor subFieldDescriptor2 =
- fieldBuilder2.getDescriptorForType().findFieldByName("bb");
- fieldBuilder2.setField(subFieldDescriptor2, 1);
- builder2.setField(fieldDescriptor, fieldBuilder2.build());
-
- // Mutate foreign message
- Message.Builder foreignFieldBuilder2 = builder2.newBuilderForField(
- foreignFieldDescriptor)
- .mergeFrom((Message) builder2.getField(foreignFieldDescriptor));
- FieldDescriptor subForeignFieldDescriptor2 =
- foreignFieldBuilder2.getDescriptorForType().findFieldByName("c");
- foreignFieldBuilder2.setField(subForeignFieldDescriptor2, 2);
- builder2.setField(foreignFieldDescriptor, foreignFieldBuilder2.build());
-
- // Mutate import message
- Message.Builder importFieldBuilder2 = builder2.newBuilderForField(
- importFieldDescriptor)
- .mergeFrom((Message) builder2.getField(importFieldDescriptor));
- FieldDescriptor subImportFieldDescriptor2 =
- importFieldBuilder2.getDescriptorForType().findFieldByName("d");
- importFieldBuilder2.setField(subImportFieldDescriptor2, 3);
- builder2.setField(importFieldDescriptor, importFieldBuilder2.build());
-
- Message newMessage2 = builder2.build();
-
- // These two messages should be equal.
- assertEquals(newMessage1, newMessage2);
- }
-
- public void testGetFieldBuilderWithInitializedValue() {
- Descriptor descriptor = TestAllTypes.getDescriptor();
- FieldDescriptor fieldDescriptor =
- descriptor.findFieldByName("optional_nested_message");
-
- // Before setting field, builder is initialized by default value.
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- NestedMessage.Builder fieldBuilder =
- (NestedMessage.Builder) builder.getFieldBuilder(fieldDescriptor);
- assertEquals(0, fieldBuilder.getBb());
-
- // Setting field value with new field builder instance.
- builder = TestAllTypes.newBuilder();
- NestedMessage.Builder newFieldBuilder =
- builder.getOptionalNestedMessageBuilder();
- newFieldBuilder.setBb(2);
- // Then get the field builder instance by getFieldBuilder().
- fieldBuilder =
- (NestedMessage.Builder) builder.getFieldBuilder(fieldDescriptor);
- // It should contain new value.
- assertEquals(2, fieldBuilder.getBb());
- // These two builder should be equal.
- assertSame(fieldBuilder, newFieldBuilder);
- }
-
- public void testGetFieldBuilderNotSupportedException() {
- Descriptor descriptor = TestAllTypes.getDescriptor();
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- try {
- builder.getFieldBuilder(descriptor.findFieldByName("optional_int32"));
- fail("Exception was not thrown");
- } catch (UnsupportedOperationException e) {
- // We expect this exception.
- }
- try {
- builder.getFieldBuilder(
- descriptor.findFieldByName("optional_nested_enum"));
- fail("Exception was not thrown");
- } catch (UnsupportedOperationException e) {
- // We expect this exception.
- }
- try {
- builder.getFieldBuilder(descriptor.findFieldByName("repeated_int32"));
- fail("Exception was not thrown");
- } catch (UnsupportedOperationException e) {
- // We expect this exception.
- }
- try {
- builder.getFieldBuilder(
- descriptor.findFieldByName("repeated_nested_enum"));
- fail("Exception was not thrown");
- } catch (UnsupportedOperationException e) {
- // We expect this exception.
- }
- try {
- builder.getFieldBuilder(
- descriptor.findFieldByName("repeated_nested_message"));
- fail("Exception was not thrown");
- } catch (UnsupportedOperationException e) {
- // We expect this exception.
- }
- }
-
- // Test that when the default outer class name conflicts with another type
- // defined in the proto the compiler will append a suffix to avoid the
- // conflict.
- public void testConflictingOuterClassName() {
- // We just need to make sure we can refer to the outer class with the
- // expected name. There is nothing else to test.
- OuterClassNameTestOuterClass.OuterClassNameTest message =
- OuterClassNameTestOuterClass.OuterClassNameTest.newBuilder().build();
- assertTrue(message.getDescriptorForType() ==
- OuterClassNameTestOuterClass.OuterClassNameTest.getDescriptor());
-
- OuterClassNameTest2OuterClass.TestMessage2.NestedMessage.OuterClassNameTest2
- message2 = OuterClassNameTest2OuterClass.TestMessage2.NestedMessage
- .OuterClassNameTest2.newBuilder().build();
- assertEquals(0, message2.getSerializedSize());
-
- OuterClassNameTest3OuterClass.TestMessage3.NestedMessage.OuterClassNameTest3
- enumValue = OuterClassNameTest3OuterClass.TestMessage3.NestedMessage
- .OuterClassNameTest3.DUMMY_VALUE;
- assertEquals(1, enumValue.getNumber());
- }
-
- // =================================================================
- // oneof generated code test
- public void testOneofEnumCase() throws Exception {
- TestOneof2 message = TestOneof2.newBuilder()
- .setFooInt(123).setFooString("foo").setFooCord("bar").build();
- TestUtil.assertAtMostOneFieldSetOneof(message);
- }
-
- public void testClearOneof() throws Exception {
- TestOneof2.Builder builder = TestOneof2.newBuilder().setFooInt(123);
- assertEquals(TestOneof2.FooCase.FOO_INT, builder.getFooCase());
- builder.clearFoo();
- assertEquals(TestOneof2.FooCase.FOO_NOT_SET, builder.getFooCase());
- }
-
- public void testSetOneofClearsOthers() throws Exception {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- TestOneof2 message =
- builder.setFooInt(123).setFooString("foo").buildPartial();
- assertTrue(message.hasFooString());
- TestUtil.assertAtMostOneFieldSetOneof(message);
-
- message = builder.setFooCord("bar").buildPartial();
- assertTrue(message.hasFooCord());
- TestUtil.assertAtMostOneFieldSetOneof(message);
-
- message = builder.setFooStringPiece("baz").buildPartial();
- assertTrue(message.hasFooStringPiece());
- TestUtil.assertAtMostOneFieldSetOneof(message);
-
- message = builder.setFooBytes(TestUtil.toBytes("qux")).buildPartial();
- assertTrue(message.hasFooBytes());
- TestUtil.assertAtMostOneFieldSetOneof(message);
-
- message = builder.setFooEnum(TestOneof2.NestedEnum.FOO).buildPartial();
- assertTrue(message.hasFooEnum());
- TestUtil.assertAtMostOneFieldSetOneof(message);
-
- message = builder.setFooMessage(
- TestOneof2.NestedMessage.newBuilder().setQuxInt(234).build()).buildPartial();
- assertTrue(message.hasFooMessage());
- TestUtil.assertAtMostOneFieldSetOneof(message);
-
- message = builder.setFooInt(123).buildPartial();
- assertTrue(message.hasFooInt());
- TestUtil.assertAtMostOneFieldSetOneof(message);
- }
-
- public void testOneofTypes() throws Exception {
- // Primitive
- {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- assertEquals(builder.getFooInt(), 0);
- assertFalse(builder.hasFooInt());
- assertTrue(builder.setFooInt(123).hasFooInt());
- assertEquals(builder.getFooInt(), 123);
- TestOneof2 message = builder.buildPartial();
- assertTrue(message.hasFooInt());
- assertEquals(message.getFooInt(), 123);
-
- assertFalse(builder.clearFooInt().hasFooInt());
- TestOneof2 message2 = builder.build();
- assertFalse(message2.hasFooInt());
- assertEquals(message2.getFooInt(), 0);
- }
-
- // Enum
- {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- assertEquals(builder.getFooEnum(), TestOneof2.NestedEnum.FOO);
- assertTrue(builder.setFooEnum(TestOneof2.NestedEnum.BAR).hasFooEnum());
- assertEquals(builder.getFooEnum(), TestOneof2.NestedEnum.BAR);
- TestOneof2 message = builder.buildPartial();
- assertTrue(message.hasFooEnum());
- assertEquals(message.getFooEnum(), TestOneof2.NestedEnum.BAR);
-
- assertFalse(builder.clearFooEnum().hasFooEnum());
- TestOneof2 message2 = builder.build();
- assertFalse(message2.hasFooEnum());
- assertEquals(message2.getFooEnum(), TestOneof2.NestedEnum.FOO);
- }
-
- // String
- {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- assertEquals(builder.getFooString(), "");
- builder.setFooString("foo");
- assertTrue(builder.hasFooString());
- assertEquals(builder.getFooString(), "foo");
- TestOneof2 message = builder.buildPartial();
- assertTrue(message.hasFooString());
- assertEquals(message.getFooString(), "foo");
- assertEquals(message.getFooStringBytes(), TestUtil.toBytes("foo"));
-
- assertFalse(builder.clearFooString().hasFooString());
- TestOneof2 message2 = builder.buildPartial();
- assertFalse(message2.hasFooString());
- assertEquals(message2.getFooString(), "");
- assertEquals(message2.getFooStringBytes(), TestUtil.toBytes(""));
-
- // Get method should not change the oneof value.
- builder.setFooInt(123);
- assertEquals(builder.getFooString(), "");
- assertEquals(builder.getFooStringBytes(), TestUtil.toBytes(""));
- assertEquals(123, builder.getFooInt());
-
- message = builder.build();
- assertEquals(message.getFooString(), "");
- assertEquals(message.getFooStringBytes(), TestUtil.toBytes(""));
- assertEquals(123, message.getFooInt());
- }
-
- // Cord
- {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- assertEquals(builder.getFooCord(), "");
- builder.setFooCord("foo");
- assertTrue(builder.hasFooCord());
- assertEquals(builder.getFooCord(), "foo");
- TestOneof2 message = builder.buildPartial();
- assertTrue(message.hasFooCord());
- assertEquals(message.getFooCord(), "foo");
- assertEquals(message.getFooCordBytes(), TestUtil.toBytes("foo"));
-
- assertFalse(builder.clearFooCord().hasFooCord());
- TestOneof2 message2 = builder.build();
- assertFalse(message2.hasFooCord());
- assertEquals(message2.getFooCord(), "");
- assertEquals(message2.getFooCordBytes(), TestUtil.toBytes(""));
- }
-
- // StringPiece
- {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- assertEquals(builder.getFooStringPiece(), "");
- builder.setFooStringPiece("foo");
- assertTrue(builder.hasFooStringPiece());
- assertEquals(builder.getFooStringPiece(), "foo");
- TestOneof2 message = builder.buildPartial();
- assertTrue(message.hasFooStringPiece());
- assertEquals(message.getFooStringPiece(), "foo");
- assertEquals(message.getFooStringPieceBytes(), TestUtil.toBytes("foo"));
-
- assertFalse(builder.clearFooStringPiece().hasFooStringPiece());
- TestOneof2 message2 = builder.build();
- assertFalse(message2.hasFooStringPiece());
- assertEquals(message2.getFooStringPiece(), "");
- assertEquals(message2.getFooStringPieceBytes(), TestUtil.toBytes(""));
- }
-
- // Message
- {
- // set
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- assertEquals(builder.getFooMessage().getQuxInt(), 0);
- builder.setFooMessage(
- TestOneof2.NestedMessage.newBuilder().setQuxInt(234).build());
- assertTrue(builder.hasFooMessage());
- assertEquals(builder.getFooMessage().getQuxInt(), 234);
- TestOneof2 message = builder.buildPartial();
- assertTrue(message.hasFooMessage());
- assertEquals(message.getFooMessage().getQuxInt(), 234);
-
- // clear
- assertFalse(builder.clearFooMessage().hasFooString());
- message = builder.build();
- assertFalse(message.hasFooMessage());
- assertEquals(message.getFooMessage().getQuxInt(), 0);
-
- // nested builder
- builder = TestOneof2.newBuilder();
- assertSame(builder.getFooMessageOrBuilder(),
- TestOneof2.NestedMessage.getDefaultInstance());
- assertFalse(builder.hasFooMessage());
- builder.getFooMessageBuilder().setQuxInt(123);
- assertTrue(builder.hasFooMessage());
- assertEquals(builder.getFooMessage().getQuxInt(), 123);
- message = builder.build();
- assertTrue(message.hasFooMessage());
- assertEquals(message.getFooMessage().getQuxInt(), 123);
- }
-
- // LazyMessage is tested in LazyMessageLiteTest.java
- }
-
- public void testOneofMerge() throws Exception {
- // Primitive Type
- {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- TestOneof2 message = builder.setFooInt(123).build();
- TestOneof2 message2 = TestOneof2.newBuilder().mergeFrom(message).build();
- assertTrue(message2.hasFooInt());
- assertEquals(message2.getFooInt(), 123);
- }
-
- // String
- {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- TestOneof2 message = builder.setFooString("foo").build();
- TestOneof2 message2 = TestOneof2.newBuilder().mergeFrom(message).build();
- assertTrue(message2.hasFooString());
- assertEquals(message2.getFooString(), "foo");
- }
-
- // Enum
- {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- TestOneof2 message = builder.setFooEnum(TestOneof2.NestedEnum.BAR).build();
- TestOneof2 message2 = TestOneof2.newBuilder().mergeFrom(message).build();
- assertTrue(message2.hasFooEnum());
- assertEquals(message2.getFooEnum(), TestOneof2.NestedEnum.BAR);
- }
-
- // Message
- {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- TestOneof2 message = builder.setFooMessage(
- TestOneof2.NestedMessage.newBuilder().setQuxInt(234).build()).build();
- TestOneof2 message2 = TestOneof2.newBuilder().mergeFrom(message).build();
- assertTrue(message2.hasFooMessage());
- assertEquals(message2.getFooMessage().getQuxInt(), 234);
- }
- }
-
- public void testOneofSerialization() throws Exception {
- // Primitive Type
- {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- TestOneof2 message = builder.setFooInt(123).build();
- ByteString serialized = message.toByteString();
- TestOneof2 message2 = TestOneof2.parseFrom(serialized);
- assertTrue(message2.hasFooInt());
- assertEquals(message2.getFooInt(), 123);
- }
-
- // String
- {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- TestOneof2 message = builder.setFooString("foo").build();
- ByteString serialized = message.toByteString();
- TestOneof2 message2 = TestOneof2.parseFrom(serialized);
- assertTrue(message2.hasFooString());
- assertEquals(message2.getFooString(), "foo");
- }
-
- // Enum
- {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- TestOneof2 message = builder.setFooEnum(TestOneof2.NestedEnum.BAR).build();
- ByteString serialized = message.toByteString();
- TestOneof2 message2 = TestOneof2.parseFrom(serialized);
- assertTrue(message2.hasFooEnum());
- assertEquals(message2.getFooEnum(), TestOneof2.NestedEnum.BAR);
- }
-
- // Message
- {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- TestOneof2 message = builder.setFooMessage(
- TestOneof2.NestedMessage.newBuilder().setQuxInt(234).build()).build();
- ByteString serialized = message.toByteString();
- TestOneof2 message2 = TestOneof2.parseFrom(serialized);
- assertTrue(message2.hasFooMessage());
- assertEquals(message2.getFooMessage().getQuxInt(), 234);
- }
- }
}
diff --git a/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java b/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java
deleted file mode 100644
index 89b6451..0000000
--- a/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java
+++ /dev/null
@@ -1,180 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import com.google.protobuf.IsValidUtf8TestUtil.Shard;
-
-import junit.framework.TestCase;
-
-import java.io.UnsupportedEncodingException;
-
-/**
- * Tests cases for {@link ByteString#isValidUtf8()}. This includes three
- * brute force tests that actually test every permutation of one byte, two byte,
- * and three byte sequences to ensure that the method produces the right result
- * for every possible byte encoding where "right" means it's consistent with
- * java's UTF-8 string encoding/decoding such that the method returns true for
- * any sequence that will round trip when converted to a String and then back to
- * bytes and will return false for any sequence that will not round trip.
- * See also {@link IsValidUtf8FourByteTest}. It also includes some
- * other more targeted tests.
- *
- * @author jonp@google.com (Jon Perlow)
- * @author martinrb@google.com (Martin Buchholz)
- */
-public class IsValidUtf8Test extends TestCase {
-
- /**
- * Tests that round tripping of all two byte permutations work.
- */
- public void testIsValidUtf8_1Byte() throws UnsupportedEncodingException {
- IsValidUtf8TestUtil.testBytes(1,
- IsValidUtf8TestUtil.EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT);
- }
-
- /**
- * Tests that round tripping of all two byte permutations work.
- */
- public void testIsValidUtf8_2Bytes() throws UnsupportedEncodingException {
- IsValidUtf8TestUtil.testBytes(2,
- IsValidUtf8TestUtil.EXPECTED_TWO_BYTE_ROUNDTRIPPABLE_COUNT);
- }
-
- /**
- * Tests that round tripping of all three byte permutations work.
- */
- public void testIsValidUtf8_3Bytes() throws UnsupportedEncodingException {
- IsValidUtf8TestUtil.testBytes(3,
- IsValidUtf8TestUtil.EXPECTED_THREE_BYTE_ROUNDTRIPPABLE_COUNT);
- }
-
- /**
- * Tests that round tripping of a sample of four byte permutations work.
- * All permutations are prohibitively expensive to test for automated runs;
- * {@link IsValidUtf8FourByteTest} is used for full coverage. This method
- * tests specific four-byte cases.
- */
- public void testIsValidUtf8_4BytesSamples()
- throws UnsupportedEncodingException {
- // Valid 4 byte.
- assertValidUtf8(0xF0, 0xA4, 0xAD, 0xA2);
-
- // Bad trailing bytes
- assertInvalidUtf8(0xF0, 0xA4, 0xAD, 0x7F);
- assertInvalidUtf8(0xF0, 0xA4, 0xAD, 0xC0);
-
- // Special cases for byte2
- assertInvalidUtf8(0xF0, 0x8F, 0xAD, 0xA2);
- assertInvalidUtf8(0xF4, 0x90, 0xAD, 0xA2);
- }
-
- /**
- * Tests some hard-coded test cases.
- */
- public void testSomeSequences() {
- // Empty
- assertTrue(asBytes("").isValidUtf8());
-
- // One-byte characters, including control characters
- assertTrue(asBytes("\u0000abc\u007f").isValidUtf8());
-
- // Two-byte characters
- assertTrue(asBytes("\u00a2\u00a2").isValidUtf8());
-
- // Three-byte characters
- assertTrue(asBytes("\u020ac\u020ac").isValidUtf8());
-
- // Four-byte characters
- assertTrue(asBytes("\u024B62\u024B62").isValidUtf8());
-
- // Mixed string
- assertTrue(
- asBytes("a\u020ac\u00a2b\\u024B62u020acc\u00a2de\u024B62")
- .isValidUtf8());
-
- // Not a valid string
- assertInvalidUtf8(-1, 0, -1, 0);
- }
-
- private byte[] toByteArray(int... bytes) {
- byte[] realBytes = new byte[bytes.length];
- for (int i = 0; i < bytes.length; i++) {
- realBytes[i] = (byte) bytes[i];
- }
- return realBytes;
- }
-
- private ByteString toByteString(int... bytes) {
- return ByteString.copyFrom(toByteArray(bytes));
- }
-
- private void assertValidUtf8(int[] bytes, boolean not) {
- byte[] realBytes = toByteArray(bytes);
- assertTrue(not ^ Utf8.isValidUtf8(realBytes));
- assertTrue(not ^ Utf8.isValidUtf8(realBytes, 0, bytes.length));
- ByteString lit = ByteString.copyFrom(realBytes);
- ByteString sub = lit.substring(0, bytes.length);
- assertTrue(not ^ lit.isValidUtf8());
- assertTrue(not ^ sub.isValidUtf8());
- ByteString[] ropes = {
- RopeByteString.newInstanceForTest(ByteString.EMPTY, lit),
- RopeByteString.newInstanceForTest(ByteString.EMPTY, sub),
- RopeByteString.newInstanceForTest(lit, ByteString.EMPTY),
- RopeByteString.newInstanceForTest(sub, ByteString.EMPTY),
- RopeByteString.newInstanceForTest(sub, lit)
- };
- for (ByteString rope : ropes) {
- assertTrue(not ^ rope.isValidUtf8());
- }
- }
-
- private void assertValidUtf8(int... bytes) {
- assertValidUtf8(bytes, false);
- }
-
- private void assertInvalidUtf8(int... bytes) {
- assertValidUtf8(bytes, true);
- }
-
- private static ByteString asBytes(String s) {
- return ByteString.copyFromUtf8(s);
- }
-
- public void testShardsHaveExpectedRoundTrippables() {
- // A sanity check.
- int actual = 0;
- for (Shard shard : IsValidUtf8TestUtil.FOUR_BYTE_SHARDS) {
- actual += shard.expected;
- }
- assertEquals(IsValidUtf8TestUtil.EXPECTED_FOUR_BYTE_ROUNDTRIPPABLE_COUNT,
- actual);
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java b/java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java
deleted file mode 100644
index f41595e..0000000
--- a/java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java
+++ /dev/null
@@ -1,421 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import static junit.framework.Assert.*;
-
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-import java.util.logging.Logger;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.Charset;
-import java.nio.charset.CodingErrorAction;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CoderResult;
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-
-/**
- * Shared testing code for {@link IsValidUtf8Test} and
- * {@link IsValidUtf8FourByteTest}.
- *
- * @author jonp@google.com (Jon Perlow)
- * @author martinrb@google.com (Martin Buchholz)
- */
-class IsValidUtf8TestUtil {
- private static Logger logger = Logger.getLogger(
- IsValidUtf8TestUtil.class.getName());
-
- // 128 - [chars 0x0000 to 0x007f]
- static long ONE_BYTE_ROUNDTRIPPABLE_CHARACTERS = 0x007f - 0x0000 + 1;
-
- // 128
- static long EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT =
- ONE_BYTE_ROUNDTRIPPABLE_CHARACTERS;
-
- // 1920 [chars 0x0080 to 0x07FF]
- static long TWO_BYTE_ROUNDTRIPPABLE_CHARACTERS = 0x07FF - 0x0080 + 1;
-
- // 18,304
- static long EXPECTED_TWO_BYTE_ROUNDTRIPPABLE_COUNT =
- // Both bytes are one byte characters
- (long) Math.pow(EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT, 2) +
- // The possible number of two byte characters
- TWO_BYTE_ROUNDTRIPPABLE_CHARACTERS;
-
- // 2048
- static long THREE_BYTE_SURROGATES = 2 * 1024;
-
- // 61,440 [chars 0x0800 to 0xFFFF, minus surrogates]
- static long THREE_BYTE_ROUNDTRIPPABLE_CHARACTERS =
- 0xFFFF - 0x0800 + 1 - THREE_BYTE_SURROGATES;
-
- // 2,650,112
- static long EXPECTED_THREE_BYTE_ROUNDTRIPPABLE_COUNT =
- // All one byte characters
- (long) Math.pow(EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT, 3) +
- // One two byte character and a one byte character
- 2 * TWO_BYTE_ROUNDTRIPPABLE_CHARACTERS *
- ONE_BYTE_ROUNDTRIPPABLE_CHARACTERS +
- // Three byte characters
- THREE_BYTE_ROUNDTRIPPABLE_CHARACTERS;
-
- // 1,048,576 [chars 0x10000L to 0x10FFFF]
- static long FOUR_BYTE_ROUNDTRIPPABLE_CHARACTERS = 0x10FFFF - 0x10000L + 1;
-
- // 289,571,839
- static long EXPECTED_FOUR_BYTE_ROUNDTRIPPABLE_COUNT =
- // All one byte characters
- (long) Math.pow(EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT, 4) +
- // One and three byte characters
- 2 * THREE_BYTE_ROUNDTRIPPABLE_CHARACTERS *
- ONE_BYTE_ROUNDTRIPPABLE_CHARACTERS +
- // Two two byte characters
- TWO_BYTE_ROUNDTRIPPABLE_CHARACTERS * TWO_BYTE_ROUNDTRIPPABLE_CHARACTERS +
- // Permutations of one and two byte characters
- 3 * TWO_BYTE_ROUNDTRIPPABLE_CHARACTERS *
- ONE_BYTE_ROUNDTRIPPABLE_CHARACTERS *
- ONE_BYTE_ROUNDTRIPPABLE_CHARACTERS +
- // Four byte characters
- FOUR_BYTE_ROUNDTRIPPABLE_CHARACTERS;
-
- static class Shard {
- final long index;
- final long start;
- final long lim;
- final long expected;
-
-
- public Shard(long index, long start, long lim, long expected) {
- assertTrue(start < lim);
- this.index = index;
- this.start = start;
- this.lim = lim;
- this.expected = expected;
- }
- }
-
- static final long[] FOUR_BYTE_SHARDS_EXPECTED_ROUNTRIPPABLES =
- generateFourByteShardsExpectedRunnables();
-
- private static long[] generateFourByteShardsExpectedRunnables() {
- long[] expected = new long[128];
-
- // 0-63 are all 5300224
- for (int i = 0; i <= 63; i++) {
- expected[i] = 5300224;
- }
-
- // 97-111 are all 2342912
- for (int i = 97; i <= 111; i++) {
- expected[i] = 2342912;
- }
-
- // 113-117 are all 1048576
- for (int i = 113; i <= 117; i++) {
- expected[i] = 1048576;
- }
-
- // One offs
- expected[112] = 786432;
- expected[118] = 786432;
- expected[119] = 1048576;
- expected[120] = 458752;
- expected[121] = 524288;
- expected[122] = 65536;
-
- // Anything not assigned was the default 0.
- return expected;
- }
-
- static final List<Shard> FOUR_BYTE_SHARDS = generateFourByteShards(
- 128, FOUR_BYTE_SHARDS_EXPECTED_ROUNTRIPPABLES);
-
-
- private static List<Shard> generateFourByteShards(
- int numShards, long[] expected) {
- assertEquals(numShards, expected.length);
- List<Shard> shards = new ArrayList<Shard>(numShards);
- long LIM = 1L << 32;
- long increment = LIM / numShards;
- assertTrue(LIM % numShards == 0);
- for (int i = 0; i < numShards; i++) {
- shards.add(new Shard(i,
- increment * i,
- increment * (i + 1),
- expected[i]));
- }
- return shards;
- }
-
- /**
- * Helper to run the loop to test all the permutations for the number of bytes
- * specified.
- *
- * @param numBytes the number of bytes in the byte array
- * @param expectedCount the expected number of roundtrippable permutations
- */
- static void testBytes(int numBytes, long expectedCount)
- throws UnsupportedEncodingException {
- testBytes(numBytes, expectedCount, 0, -1);
- }
-
- /**
- * Helper to run the loop to test all the permutations for the number of bytes
- * specified. This overload is useful for debugging to get the loop to start
- * at a certain character.
- *
- * @param numBytes the number of bytes in the byte array
- * @param expectedCount the expected number of roundtrippable permutations
- * @param start the starting bytes encoded as a long as big-endian
- * @param lim the limit of bytes to process encoded as a long as big-endian,
- * or -1 to mean the max limit for numBytes
- */
- static void testBytes(int numBytes, long expectedCount, long start, long lim)
- throws UnsupportedEncodingException {
- Random rnd = new Random();
- byte[] bytes = new byte[numBytes];
-
- if (lim == -1) {
- lim = 1L << (numBytes * 8);
- }
- long count = 0;
- long countRoundTripped = 0;
- for (long byteChar = start; byteChar < lim; byteChar++) {
- long tmpByteChar = byteChar;
- for (int i = 0; i < numBytes; i++) {
- bytes[bytes.length - i - 1] = (byte) tmpByteChar;
- tmpByteChar = tmpByteChar >> 8;
- }
- ByteString bs = ByteString.copyFrom(bytes);
- boolean isRoundTrippable = bs.isValidUtf8();
- String s = new String(bytes, "UTF-8");
- byte[] bytesReencoded = s.getBytes("UTF-8");
- boolean bytesEqual = Arrays.equals(bytes, bytesReencoded);
-
- if (bytesEqual != isRoundTrippable) {
- outputFailure(byteChar, bytes, bytesReencoded);
- }
-
- // Check agreement with static Utf8 methods.
- assertEquals(isRoundTrippable, Utf8.isValidUtf8(bytes));
- assertEquals(isRoundTrippable, Utf8.isValidUtf8(bytes, 0, numBytes));
-
- // Test partial sequences.
- // Partition numBytes into three segments (not necessarily non-empty).
- int i = rnd.nextInt(numBytes);
- int j = rnd.nextInt(numBytes);
- if (j < i) {
- int tmp = i; i = j; j = tmp;
- }
- int state1 = Utf8.partialIsValidUtf8(Utf8.COMPLETE, bytes, 0, i);
- int state2 = Utf8.partialIsValidUtf8(state1, bytes, i, j);
- int state3 = Utf8.partialIsValidUtf8(state2, bytes, j, numBytes);
- if (isRoundTrippable != (state3 == Utf8.COMPLETE)) {
- System.out.printf("state=%04x %04x %04x i=%d j=%d%n",
- state1, state2, state3, i, j);
- outputFailure(byteChar, bytes, bytesReencoded);
- }
- assertEquals(isRoundTrippable, (state3 == Utf8.COMPLETE));
-
- // Test ropes built out of small partial sequences
- ByteString rope = RopeByteString.newInstanceForTest(
- bs.substring(0, i),
- RopeByteString.newInstanceForTest(
- bs.substring(i, j),
- bs.substring(j, numBytes)));
- assertSame(RopeByteString.class, rope.getClass());
-
- ByteString[] byteStrings = { bs, bs.substring(0, numBytes), rope };
- for (ByteString x : byteStrings) {
- assertEquals(isRoundTrippable,
- x.isValidUtf8());
- assertEquals(state3,
- x.partialIsValidUtf8(Utf8.COMPLETE, 0, numBytes));
-
- assertEquals(state1,
- x.partialIsValidUtf8(Utf8.COMPLETE, 0, i));
- assertEquals(state1,
- x.substring(0, i).partialIsValidUtf8(Utf8.COMPLETE, 0, i));
- assertEquals(state2,
- x.partialIsValidUtf8(state1, i, j - i));
- assertEquals(state2,
- x.substring(i, j).partialIsValidUtf8(state1, 0, j - i));
- assertEquals(state3,
- x.partialIsValidUtf8(state2, j, numBytes - j));
- assertEquals(state3,
- x.substring(j, numBytes)
- .partialIsValidUtf8(state2, 0, numBytes - j));
- }
-
- // ByteString reduplication should not affect its UTF-8 validity.
- ByteString ropeADope =
- RopeByteString.newInstanceForTest(bs, bs.substring(0, numBytes));
- assertEquals(isRoundTrippable, ropeADope.isValidUtf8());
-
- if (isRoundTrippable) {
- countRoundTripped++;
- }
- count++;
- if (byteChar != 0 && byteChar % 1000000L == 0) {
- logger.info("Processed " + (byteChar / 1000000L) +
- " million characters");
- }
- }
- logger.info("Round tripped " + countRoundTripped + " of " + count);
- assertEquals(expectedCount, countRoundTripped);
- }
-
- /**
- * Variation of {@link #testBytes} that does less allocation using the
- * low-level encoders/decoders directly. Checked in because it's useful for
- * debugging when trying to process bytes faster, but since it doesn't use the
- * actual String class, it's possible for incompatibilities to develop
- * (although unlikely).
- *
- * @param numBytes the number of bytes in the byte array
- * @param expectedCount the expected number of roundtrippable permutations
- * @param start the starting bytes encoded as a long as big-endian
- * @param lim the limit of bytes to process encoded as a long as big-endian,
- * or -1 to mean the max limit for numBytes
- */
- void testBytesUsingByteBuffers(
- int numBytes, long expectedCount, long start, long lim)
- throws UnsupportedEncodingException {
- CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder()
- .onMalformedInput(CodingErrorAction.REPLACE)
- .onUnmappableCharacter(CodingErrorAction.REPLACE);
- CharsetEncoder encoder = Charset.forName("UTF-8").newEncoder()
- .onMalformedInput(CodingErrorAction.REPLACE)
- .onUnmappableCharacter(CodingErrorAction.REPLACE);
- byte[] bytes = new byte[numBytes];
- int maxChars = (int) (decoder.maxCharsPerByte() * numBytes) + 1;
- char[] charsDecoded =
- new char[(int) (decoder.maxCharsPerByte() * numBytes) + 1];
- int maxBytes = (int) (encoder.maxBytesPerChar() * maxChars) + 1;
- byte[] bytesReencoded = new byte[maxBytes];
-
- ByteBuffer bb = ByteBuffer.wrap(bytes);
- CharBuffer cb = CharBuffer.wrap(charsDecoded);
- ByteBuffer bbReencoded = ByteBuffer.wrap(bytesReencoded);
- if (lim == -1) {
- lim = 1L << (numBytes * 8);
- }
- long count = 0;
- long countRoundTripped = 0;
- for (long byteChar = start; byteChar < lim; byteChar++) {
- bb.rewind();
- bb.limit(bytes.length);
- cb.rewind();
- cb.limit(charsDecoded.length);
- bbReencoded.rewind();
- bbReencoded.limit(bytesReencoded.length);
- encoder.reset();
- decoder.reset();
- long tmpByteChar = byteChar;
- for (int i = 0; i < bytes.length; i++) {
- bytes[bytes.length - i - 1] = (byte) tmpByteChar;
- tmpByteChar = tmpByteChar >> 8;
- }
- boolean isRoundTrippable = ByteString.copyFrom(bytes).isValidUtf8();
- CoderResult result = decoder.decode(bb, cb, true);
- assertFalse(result.isError());
- result = decoder.flush(cb);
- assertFalse(result.isError());
-
- int charLen = cb.position();
- cb.rewind();
- cb.limit(charLen);
- result = encoder.encode(cb, bbReencoded, true);
- assertFalse(result.isError());
- result = encoder.flush(bbReencoded);
- assertFalse(result.isError());
-
- boolean bytesEqual = true;
- int bytesLen = bbReencoded.position();
- if (bytesLen != numBytes) {
- bytesEqual = false;
- } else {
- for (int i = 0; i < numBytes; i++) {
- if (bytes[i] != bytesReencoded[i]) {
- bytesEqual = false;
- break;
- }
- }
- }
- if (bytesEqual != isRoundTrippable) {
- outputFailure(byteChar, bytes, bytesReencoded, bytesLen);
- }
-
- count++;
- if (isRoundTrippable) {
- countRoundTripped++;
- }
- if (byteChar != 0 && byteChar % 1000000 == 0) {
- logger.info("Processed " + (byteChar / 1000000) +
- " million characters");
- }
- }
- logger.info("Round tripped " + countRoundTripped + " of " + count);
- assertEquals(expectedCount, countRoundTripped);
- }
-
- private static void outputFailure(long byteChar, byte[] bytes, byte[] after) {
- outputFailure(byteChar, bytes, after, after.length);
- }
-
- private static void outputFailure(long byteChar, byte[] bytes, byte[] after,
- int len) {
- fail("Failure: (" + Long.toHexString(byteChar) + ") " +
- toHexString(bytes) + " => " + toHexString(after, len));
- }
-
- private static String toHexString(byte[] b) {
- return toHexString(b, b.length);
- }
-
- private static String toHexString(byte[] b, int len) {
- StringBuilder s = new StringBuilder();
- s.append("\"");
- for (int i = 0; i < len; i++) {
- if (i > 0) {
- s.append(" ");
- }
- s.append(String.format("%02x", b[i] & 0xFF));
- }
- s.append("\"");
- return s.toString();
- }
-
-}
diff --git a/java/src/test/java/com/google/protobuf/LazyFieldLiteTest.java b/java/src/test/java/com/google/protobuf/LazyFieldLiteTest.java
deleted file mode 100644
index e67c6d2..0000000
--- a/java/src/test/java/com/google/protobuf/LazyFieldLiteTest.java
+++ /dev/null
@@ -1,134 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import protobuf_unittest.UnittestProto.TestAllExtensions;
-import protobuf_unittest.UnittestProto.TestAllTypes;
-
-import java.io.IOException;
-import junit.framework.TestCase;
-
-/**
- * Unit test for {@link LazyFieldLite}.
- *
- * @author xiangl@google.com (Xiang Li)
- */
-public class LazyFieldLiteTest extends TestCase {
-
- public void testGetValue() {
- MessageLite message = TestUtil.getAllSet();
- LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
- assertEquals(message, lazyField.getValue(TestAllTypes.getDefaultInstance()));
- changeValue(lazyField);
- assertNotEqual(message, lazyField.getValue(TestAllTypes.getDefaultInstance()));
- }
-
- public void testGetValueEx() throws Exception {
- TestAllExtensions message = TestUtil.getAllExtensionsSet();
- LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
- assertEquals(message, lazyField.getValue(TestAllExtensions.getDefaultInstance()));
- changeValue(lazyField);
- assertNotEqual(message, lazyField.getValue(TestAllExtensions.getDefaultInstance()));
- }
-
- public void testSetValue() {
- MessageLite message = TestUtil.getAllSet();
- LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
- changeValue(lazyField);
- assertNotEqual(message, lazyField.getValue(TestAllTypes.getDefaultInstance()));
- message = lazyField.getValue(TestAllTypes.getDefaultInstance());
- changeValue(lazyField);
- assertEquals(message, lazyField.getValue(TestAllTypes.getDefaultInstance()));
- }
-
- public void testSetValueEx() throws Exception {
- TestAllExtensions message = TestUtil.getAllExtensionsSet();
- LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
- changeValue(lazyField);
- assertNotEqual(message, lazyField.getValue(TestAllExtensions.getDefaultInstance()));
- MessageLite value = lazyField.getValue(TestAllExtensions.getDefaultInstance());
- changeValue(lazyField);
- assertEquals(value, lazyField.getValue(TestAllExtensions.getDefaultInstance()));
- }
-
- public void testGetSerializedSize() {
- MessageLite message = TestUtil.getAllSet();
- LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
- assertEquals(message.getSerializedSize(), lazyField.getSerializedSize());
- changeValue(lazyField);
- assertNotEqual(message.getSerializedSize(), lazyField.getSerializedSize());
- }
-
- public void testGetSerializedSizeEx() throws Exception {
- TestAllExtensions message = TestUtil.getAllExtensionsSet();
- LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
- assertEquals(message.getSerializedSize(), lazyField.getSerializedSize());
- changeValue(lazyField);
- assertNotEqual(message.getSerializedSize(), lazyField.getSerializedSize());
- }
-
- public void testGetByteString() {
- MessageLite message = TestUtil.getAllSet();
- LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
- assertEquals(message.toByteString(), lazyField.toByteString());
- changeValue(lazyField);
- assertNotEqual(message.toByteString(), lazyField.toByteString());
- }
-
- public void testGetByteStringEx() throws Exception {
- TestAllExtensions message = TestUtil.getAllExtensionsSet();
- LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
- assertEquals(message.toByteString(), lazyField.toByteString());
- changeValue(lazyField);
- assertNotEqual(message.toByteString(), lazyField.toByteString());
- }
-
-
- // Help methods.
-
- private LazyFieldLite createLazyFieldLiteFromMessage(MessageLite message) {
- ByteString bytes = message.toByteString();
- return new LazyFieldLite(TestUtil.getExtensionRegistry(), bytes);
- }
-
- private void changeValue(LazyFieldLite lazyField) {
- TestAllTypes.Builder builder = TestUtil.getAllSet().toBuilder();
- builder.addRepeatedBool(true);
- MessageLite newMessage = builder.build();
- lazyField.setValue(newMessage);
- }
-
- private void assertNotEqual(Object unexpected, Object actual) {
- assertFalse(unexpected == actual
- || (unexpected != null && unexpected.equals(actual)));
- }
-
-}
diff --git a/java/src/test/java/com/google/protobuf/LazyFieldTest.java b/java/src/test/java/com/google/protobuf/LazyFieldTest.java
deleted file mode 100644
index 2b90006..0000000
--- a/java/src/test/java/com/google/protobuf/LazyFieldTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import protobuf_unittest.UnittestProto.TestAllExtensions;
-import protobuf_unittest.UnittestProto.TestAllTypes;
-
-import java.io.IOException;
-import junit.framework.TestCase;
-
-/**
- * Unit test for {@link LazyField}.
- *
- * @author xiangl@google.com (Xiang Li)
- */
-public class LazyFieldTest extends TestCase {
- public void testHashCode() {
- MessageLite message = TestUtil.getAllSet();
- LazyField lazyField =
- createLazyFieldFromMessage(message);
- assertEquals(message.hashCode(), lazyField.hashCode());
- lazyField.getValue();
- assertEquals(message.hashCode(), lazyField.hashCode());
- changeValue(lazyField);
- // make sure two messages have different hash code
- assertNotEqual(message.hashCode(), lazyField.hashCode());
- }
-
- public void testHashCodeEx() throws Exception {
- TestAllExtensions message = TestUtil.getAllExtensionsSet();
- LazyField lazyField = createLazyFieldFromMessage(message);
- assertEquals(message.hashCode(), lazyField.hashCode());
- lazyField.getValue();
- assertEquals(message.hashCode(), lazyField.hashCode());
- changeValue(lazyField);
- // make sure two messages have different hash code
- assertNotEqual(message.hashCode(), lazyField.hashCode());
- }
-
- public void testGetValue() {
- MessageLite message = TestUtil.getAllSet();
- LazyField lazyField = createLazyFieldFromMessage(message);
- assertEquals(message, lazyField.getValue());
- changeValue(lazyField);
- assertNotEqual(message, lazyField.getValue());
- }
-
- public void testGetValueEx() throws Exception {
- TestAllExtensions message = TestUtil.getAllExtensionsSet();
- LazyField lazyField = createLazyFieldFromMessage(message);
- assertEquals(message, lazyField.getValue());
- changeValue(lazyField);
- assertNotEqual(message, lazyField.getValue());
- }
-
- public void testEqualsObject() {
- MessageLite message = TestUtil.getAllSet();
- LazyField lazyField = createLazyFieldFromMessage(message);
- assertTrue(lazyField.equals(message));
- changeValue(lazyField);
- assertFalse(lazyField.equals(message));
- assertFalse(message.equals(lazyField.getValue()));
- }
-
- public void testEqualsObjectEx() throws Exception {
- TestAllExtensions message = TestUtil.getAllExtensionsSet();
- LazyField lazyField = createLazyFieldFromMessage(message);
- assertTrue(lazyField.equals(message));
- changeValue(lazyField);
- assertFalse(lazyField.equals(message));
- assertFalse(message.equals(lazyField.getValue()));
- }
-
- // Help methods.
-
- private LazyField createLazyFieldFromMessage(MessageLite message) {
- ByteString bytes = message.toByteString();
- return new LazyField(message.getDefaultInstanceForType(),
- TestUtil.getExtensionRegistry(), bytes);
- }
-
- private void changeValue(LazyField lazyField) {
- TestAllTypes.Builder builder = TestUtil.getAllSet().toBuilder();
- builder.addRepeatedBool(true);
- MessageLite newMessage = builder.build();
- lazyField.setValue(newMessage);
- }
-
- private void assertNotEqual(Object unexpected, Object actual) {
- assertFalse(unexpected == actual
- || (unexpected != null && unexpected.equals(actual)));
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/LazyMessageLiteTest.java b/java/src/test/java/com/google/protobuf/LazyMessageLiteTest.java
deleted file mode 100644
index 00e3a84..0000000
--- a/java/src/test/java/com/google/protobuf/LazyMessageLiteTest.java
+++ /dev/null
@@ -1,319 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import protobuf_unittest.LazyFieldsLite.LazyInnerMessageLite;
-import protobuf_unittest.LazyFieldsLite.LazyMessageLite;
-import protobuf_unittest.LazyFieldsLite.LazyNestedInnerMessageLite;
-
-import junit.framework.TestCase;
-
-import org.easymock.classextension.EasyMock;
-
-import java.util.ArrayList;
-
-/**
- * Unit test for messages with lazy fields.
- *
- * @author niwasaki@google.com (Naoki Iwasaki)
- */
-public class LazyMessageLiteTest extends TestCase {
-
- private Parser<LazyInnerMessageLite> originalLazyInnerMessageLiteParser;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
- originalLazyInnerMessageLiteParser = LazyInnerMessageLite.PARSER;
- }
-
- @Override
- protected void tearDown() throws Exception {
- LazyInnerMessageLite.PARSER = originalLazyInnerMessageLiteParser;
-
- super.tearDown();
- }
-
- public void testSetValues() {
- LazyNestedInnerMessageLite nested = LazyNestedInnerMessageLite.newBuilder()
- .setNum(3)
- .build();
- LazyInnerMessageLite inner = LazyInnerMessageLite.newBuilder()
- .setNum(2)
- .setNested(nested)
- .build();
- LazyMessageLite outer = LazyMessageLite.newBuilder()
- .setNum(1)
- .setInner(inner)
- .setOneofNum(123)
- .setOneofInner(inner)
- .build();
-
- assertEquals(1, outer.getNum());
- assertEquals(421, outer.getNumWithDefault());
-
- assertEquals(2, outer.getInner().getNum());
- assertEquals(42, outer.getInner().getNumWithDefault());
-
- assertEquals(3, outer.getInner().getNested().getNum());
- assertEquals(4, outer.getInner().getNested().getNumWithDefault());
-
- assertFalse(outer.hasOneofNum());
- assertTrue(outer.hasOneofInner());
-
- assertEquals(2, outer.getOneofInner().getNum());
- assertEquals(42, outer.getOneofInner().getNumWithDefault());
- assertEquals(3, outer.getOneofInner().getNested().getNum());
- assertEquals(4, outer.getOneofInner().getNested().getNumWithDefault());
- }
-
- public void testSetRepeatedValues() {
- LazyMessageLite outer = LazyMessageLite.newBuilder()
- .setNum(1)
- .addRepeatedInner(LazyInnerMessageLite.newBuilder().setNum(119))
- .addRepeatedInner(LazyInnerMessageLite.newBuilder().setNum(122))
- .build();
-
- assertEquals(1, outer.getNum());
- assertEquals(2, outer.getRepeatedInnerCount());
- assertEquals(119, outer.getRepeatedInner(0).getNum());
- assertEquals(122, outer.getRepeatedInner(1).getNum());
- }
-
- public void testAddAll() {
- ArrayList<LazyInnerMessageLite> inners = new ArrayList<LazyInnerMessageLite>();
- int count = 4;
- for (int i = 0; i < count; i++) {
- LazyInnerMessageLite inner = LazyInnerMessageLite.newBuilder()
- .setNum(i)
- .build();
- inners.add(inner);
- }
-
- LazyMessageLite outer = LazyMessageLite.newBuilder()
- .addAllRepeatedInner(inners)
- .build();
- assertEquals(count, outer.getRepeatedInnerCount());
- for (int i = 0; i < count; i++) {
- assertEquals(i, outer.getRepeatedInner(i).getNum());
- }
- }
-
- public void testGetDefaultValues() {
- LazyMessageLite outer = LazyMessageLite.newBuilder()
- .build();
-
- assertEquals(0, outer.getNum());
- assertEquals(421, outer.getNumWithDefault());
-
- assertEquals(0, outer.getInner().getNum());
- assertEquals(42, outer.getInner().getNumWithDefault());
-
- assertEquals(0, outer.getInner().getNested().getNum());
- assertEquals(4, outer.getInner().getNested().getNumWithDefault());
-
- assertEquals(0, outer.getOneofNum());
-
- assertEquals(0, outer.getOneofInner().getNum());
- assertEquals(42, outer.getOneofInner().getNumWithDefault());
- assertEquals(0, outer.getOneofInner().getNested().getNum());
- assertEquals(4, outer.getOneofInner().getNested().getNumWithDefault());
- }
-
- public void testClearValues() {
- LazyInnerMessageLite inner = LazyInnerMessageLite.newBuilder()
- .setNum(115)
- .build();
-
- LazyMessageLite.Builder outerBuilder = LazyMessageLite.newBuilder();
-
- assertEquals(0, outerBuilder.build().getNum());
-
-
- // Set/Clear num
- outerBuilder.setNum(100);
-
- assertEquals(100, outerBuilder.build().getNum());
- assertEquals(421, outerBuilder.build().getNumWithDefault());
- assertFalse(outerBuilder.build().hasInner());
-
- outerBuilder.clearNum();
-
- assertEquals(0, outerBuilder.build().getNum());
- assertEquals(421, outerBuilder.build().getNumWithDefault());
- assertFalse(outerBuilder.build().hasInner());
-
-
- // Set/Clear all
- outerBuilder.setNum(100)
- .setInner(inner)
- .addRepeatedInner(LazyInnerMessageLite.newBuilder().setNum(119))
- .addRepeatedInner(LazyInnerMessageLite.newBuilder().setNum(122))
- .setOneofInner(LazyInnerMessageLite.newBuilder().setNum(123));
-
- LazyMessageLite outer = outerBuilder.build();
- assertEquals(100, outer.getNum());
- assertEquals(421, outer.getNumWithDefault());
- assertTrue(outer.hasInner());
- assertEquals(115, outer.getInner().getNum());
- assertEquals(2, outer.getRepeatedInnerCount());
- assertEquals(119, outer.getRepeatedInner(0).getNum());
- assertEquals(122, outer.getRepeatedInner(1).getNum());
- assertTrue(outer.hasOneofInner());
- assertEquals(123, outer.getOneofInner().getNum());
-
- outerBuilder.clear();
-
- outer = outerBuilder.build();
-
- assertEquals(0, outer.getNum());
- assertEquals(421, outer.getNumWithDefault());
- assertFalse(outer.hasInner());
- assertEquals(0, outer.getRepeatedInnerCount());
- assertFalse(outer.hasOneofInner());
- assertEquals(0, outer.getOneofInner().getNum());
- }
-
- public void testMergeValues() {
- LazyMessageLite outerBase = LazyMessageLite.newBuilder()
- .setNumWithDefault(122)
- .build();
-
- LazyInnerMessageLite innerMerging = LazyInnerMessageLite.newBuilder()
- .setNum(115)
- .build();
- LazyMessageLite outerMerging = LazyMessageLite.newBuilder()
- .setNum(119)
- .setInner(innerMerging)
- .setOneofInner(innerMerging)
- .build();
-
- LazyMessageLite merged = LazyMessageLite
- .newBuilder(outerBase)
- .mergeFrom(outerMerging)
- .build();
- assertEquals(119, merged.getNum());
- assertEquals(122, merged.getNumWithDefault());
- assertEquals(115, merged.getInner().getNum());
- assertEquals(42, merged.getInner().getNumWithDefault());
- assertEquals(115, merged.getOneofInner().getNum());
- assertEquals(42, merged.getOneofInner().getNumWithDefault());
- }
-
- public void testMergeDefaultValues() {
- LazyInnerMessageLite innerBase = LazyInnerMessageLite.newBuilder()
- .setNum(115)
- .build();
- LazyMessageLite outerBase = LazyMessageLite.newBuilder()
- .setNum(119)
- .setNumWithDefault(122)
- .setInner(innerBase)
- .setOneofInner(innerBase)
- .build();
-
- LazyMessageLite outerMerging = LazyMessageLite.newBuilder()
- .build();
-
- LazyMessageLite merged = LazyMessageLite
- .newBuilder(outerBase)
- .mergeFrom(outerMerging)
- .build();
- // Merging default-instance shouldn't overwrite values in the base message.
- assertEquals(119, merged.getNum());
- assertEquals(122, merged.getNumWithDefault());
- assertEquals(115, merged.getInner().getNum());
- assertEquals(42, merged.getInner().getNumWithDefault());
- assertEquals(115, merged.getOneofInner().getNum());
- assertEquals(42, merged.getOneofInner().getNumWithDefault());
- }
-
- public void testSerialize() throws InvalidProtocolBufferException {
- LazyNestedInnerMessageLite nested = LazyNestedInnerMessageLite.newBuilder()
- .setNum(3)
- .build();
- LazyInnerMessageLite inner = LazyInnerMessageLite.newBuilder()
- .setNum(2)
- .setNested(nested)
- .build();
- LazyMessageLite outer = LazyMessageLite.newBuilder()
- .setNum(1)
- .setInner(inner)
- .setOneofInner(inner)
- .build();
-
- ByteString bytes = outer.toByteString();
- assertEquals(bytes.size(), outer.getSerializedSize());
-
- LazyMessageLite deserialized = LazyMessageLite.parseFrom(bytes);
-
- assertEquals(1, deserialized.getNum());
- assertEquals(421, deserialized.getNumWithDefault());
-
- assertEquals(2, deserialized.getInner().getNum());
- assertEquals(42, deserialized.getInner().getNumWithDefault());
-
- assertEquals(3, deserialized.getInner().getNested().getNum());
- assertEquals(4, deserialized.getInner().getNested().getNumWithDefault());
-
- assertEquals(2, deserialized.getOneofInner().getNum());
- assertEquals(42, deserialized.getOneofInner().getNumWithDefault());
- assertEquals(3, deserialized.getOneofInner().getNested().getNum());
- assertEquals(4, deserialized.getOneofInner().getNested().getNumWithDefault());
-
- assertEquals(bytes, deserialized.toByteString());
- }
-
- public void testLaziness() throws InvalidProtocolBufferException {
- LazyInnerMessageLite inner = LazyInnerMessageLite.newBuilder()
- .setNum(2)
- .build();
- LazyMessageLite outer = LazyMessageLite.newBuilder()
- .setNum(1)
- .setInner(inner)
- .setOneofInner(inner)
- .build();
- ByteString bytes = outer.toByteString();
-
-
- // The parser for inner / oneofInner message shouldn't be used if
- // getInner / getOneofInner is not called.
- LazyInnerMessageLite.PARSER = EasyMock.createStrictMock(Parser.class);
-
- EasyMock.replay(LazyInnerMessageLite.PARSER);
-
- LazyMessageLite deserialized = LazyMessageLite.parseFrom(bytes);
- assertEquals(1, deserialized.getNum());
- assertEquals(421, deserialized.getNumWithDefault());
-
- EasyMock.verify(LazyInnerMessageLite.PARSER);
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java b/java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java
deleted file mode 100644
index f3012b9..0000000
--- a/java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java
+++ /dev/null
@@ -1,174 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import junit.framework.TestCase;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Tests for {@link LazyStringArrayList}.
- *
- * @author jonp@google.com (Jon Perlow)
- */
-public class LazyStringArrayListTest extends TestCase {
-
- private static String STRING_A = "A";
- private static String STRING_B = "B";
- private static String STRING_C = "C";
-
- private static ByteString BYTE_STRING_A = ByteString.copyFromUtf8("A");
- private static ByteString BYTE_STRING_B = ByteString.copyFromUtf8("B");
- private static ByteString BYTE_STRING_C = ByteString.copyFromUtf8("C");
-
- public void testJustStrings() {
- LazyStringArrayList list = new LazyStringArrayList();
- list.add(STRING_A);
- list.add(STRING_B);
- list.add(STRING_C);
-
- assertEquals(3, list.size());
- assertSame(STRING_A, list.get(0));
- assertSame(STRING_B, list.get(1));
- assertSame(STRING_C, list.get(2));
-
- list.set(1, STRING_C);
- assertSame(STRING_C, list.get(1));
-
- list.remove(1);
- assertSame(STRING_A, list.get(0));
- assertSame(STRING_C, list.get(1));
-
- List<ByteString> byteStringList = list.asByteStringList();
- assertEquals(BYTE_STRING_A, byteStringList.get(0));
- assertEquals(BYTE_STRING_C, byteStringList.get(1));
-
- // Underlying list should be transformed.
- assertSame(byteStringList.get(0), list.getByteString(0));
- assertSame(byteStringList.get(1), list.getByteString(1));
- }
-
- public void testJustByteString() {
- LazyStringArrayList list = new LazyStringArrayList();
- list.add(BYTE_STRING_A);
- list.add(BYTE_STRING_B);
- list.add(BYTE_STRING_C);
-
- assertEquals(3, list.size());
- assertSame(BYTE_STRING_A, list.getByteString(0));
- assertSame(BYTE_STRING_B, list.getByteString(1));
- assertSame(BYTE_STRING_C, list.getByteString(2));
-
- list.remove(1);
- assertSame(BYTE_STRING_A, list.getByteString(0));
- assertSame(BYTE_STRING_C, list.getByteString(1));
-
- List<ByteString> byteStringList = list.asByteStringList();
- assertSame(BYTE_STRING_A, byteStringList.get(0));
- assertSame(BYTE_STRING_C, byteStringList.get(1));
- }
-
- public void testConversionBackAndForth() {
- LazyStringArrayList list = new LazyStringArrayList();
- list.add(STRING_A);
- list.add(BYTE_STRING_B);
- list.add(BYTE_STRING_C);
-
- // String a should be the same because it was originally a string
- assertSame(STRING_A, list.get(0));
-
- // String b and c should be different because the string has to be computed
- // from the ByteString
- String bPrime = list.get(1);
- assertNotSame(STRING_B, bPrime);
- assertEquals(STRING_B, bPrime);
- String cPrime = list.get(2);
- assertNotSame(STRING_C, cPrime);
- assertEquals(STRING_C, cPrime);
-
- // String c and c should stay the same once cached.
- assertSame(bPrime, list.get(1));
- assertSame(cPrime, list.get(2));
-
- // ByteString needs to be computed from string for both a and b
- ByteString aPrimeByteString = list.getByteString(0);
- assertEquals(BYTE_STRING_A, aPrimeByteString);
- ByteString bPrimeByteString = list.getByteString(1);
- assertNotSame(BYTE_STRING_B, bPrimeByteString);
- assertEquals(BYTE_STRING_B, list.getByteString(1));
-
- // Once cached, ByteString should stay cached.
- assertSame(aPrimeByteString, list.getByteString(0));
- assertSame(bPrimeByteString, list.getByteString(1));
- }
-
- public void testCopyConstructorCopiesByReference() {
- LazyStringArrayList list1 = new LazyStringArrayList();
- list1.add(STRING_A);
- list1.add(BYTE_STRING_B);
- list1.add(BYTE_STRING_C);
-
- LazyStringArrayList list2 = new LazyStringArrayList(list1);
- assertEquals(3, list2.size());
- assertSame(STRING_A, list2.get(0));
- assertSame(BYTE_STRING_B, list2.getByteString(1));
- assertSame(BYTE_STRING_C, list2.getByteString(2));
- }
-
- public void testListCopyConstructor() {
- List<String> list1 = new ArrayList<String>();
- list1.add(STRING_A);
- list1.add(STRING_B);
- list1.add(STRING_C);
-
- LazyStringArrayList list2 = new LazyStringArrayList(list1);
- assertEquals(3, list2.size());
- assertSame(STRING_A, list2.get(0));
- assertSame(STRING_B, list2.get(1));
- assertSame(STRING_C, list2.get(2));
- }
-
- public void testAddAllCopiesByReferenceIfPossible() {
- LazyStringArrayList list1 = new LazyStringArrayList();
- list1.add(STRING_A);
- list1.add(BYTE_STRING_B);
- list1.add(BYTE_STRING_C);
-
- LazyStringArrayList list2 = new LazyStringArrayList();
- list2.addAll(list1);
-
- assertEquals(3, list2.size());
- assertSame(STRING_A, list2.get(0));
- assertSame(BYTE_STRING_B, list2.getByteString(1));
- assertSame(BYTE_STRING_C, list2.getByteString(2));
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java b/java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java
deleted file mode 100644
index acd1800..0000000
--- a/java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java
+++ /dev/null
@@ -1,143 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-
-import protobuf_unittest.UnittestProto;
-
-import junit.framework.TestCase;
-
-import java.io.IOException;
-
-/**
- * Tests to make sure the lazy conversion of UTF8-encoded byte arrays to
- * strings works correctly.
- *
- * @author jonp@google.com (Jon Perlow)
- */
-public class LazyStringEndToEndTest extends TestCase {
-
- private static ByteString TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8 =
- ByteString.copyFrom(new byte[] {
- 114, 4, -1, 0, -1, 0, -30, 2, 4, -1,
- 0, -1, 0, -30, 2, 4, -1, 0, -1, 0, });
-
- private ByteString encodedTestAllTypes;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- this.encodedTestAllTypes = UnittestProto.TestAllTypes.newBuilder()
- .setOptionalString("foo")
- .addRepeatedString("bar")
- .addRepeatedString("baz")
- .build()
- .toByteString();
- }
-
- /**
- * Tests that an invalid UTF8 string will roundtrip through a parse
- * and serialization.
- */
- public void testParseAndSerialize() throws InvalidProtocolBufferException {
- UnittestProto.TestAllTypes tV2 = UnittestProto.TestAllTypes.parseFrom(
- TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8);
- ByteString bytes = tV2.toByteString();
- assertEquals(TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8, bytes);
-
- tV2.getOptionalString();
- bytes = tV2.toByteString();
- assertEquals(TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8, bytes);
- }
-
- public void testParseAndWrite() throws IOException {
- UnittestProto.TestAllTypes tV2 = UnittestProto.TestAllTypes.parseFrom(
- TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8);
- byte[] sink = new byte[TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8.size()];
- CodedOutputStream outputStream = CodedOutputStream.newInstance(sink);
- tV2.writeTo(outputStream);
- outputStream.flush();
- assertEquals(
- TEST_ALL_TYPES_SERIALIZED_WITH_ILLEGAL_UTF8,
- ByteString.copyFrom(sink));
- }
-
- public void testCaching() {
- String a = "a";
- String b = "b";
- String c = "c";
- UnittestProto.TestAllTypes proto = UnittestProto.TestAllTypes.newBuilder()
- .setOptionalString(a)
- .addRepeatedString(b)
- .addRepeatedString(c)
- .build();
-
- // String should be the one we passed it.
- assertSame(a, proto.getOptionalString());
- assertSame(b, proto.getRepeatedString(0));
- assertSame(c, proto.getRepeatedString(1));
-
-
- // There's no way to directly observe that the ByteString is cached
- // correctly on serialization, but we can observe that it had to recompute
- // the string after serialization.
- proto.toByteString();
- String aPrime = proto.getOptionalString();
- assertNotSame(a, aPrime);
- assertEquals(a, aPrime);
- String bPrime = proto.getRepeatedString(0);
- assertNotSame(b, bPrime);
- assertEquals(b, bPrime);
- String cPrime = proto.getRepeatedString(1);
- assertNotSame(c, cPrime);
- assertEquals(c, cPrime);
-
- // And now the string should stay cached.
- assertSame(aPrime, proto.getOptionalString());
- assertSame(bPrime, proto.getRepeatedString(0));
- assertSame(cPrime, proto.getRepeatedString(1));
- }
-
- public void testNoStringCachingIfOnlyBytesAccessed() throws Exception {
- UnittestProto.TestAllTypes proto =
- UnittestProto.TestAllTypes.parseFrom(encodedTestAllTypes);
- ByteString optional = proto.getOptionalStringBytes();
- assertSame(optional, proto.getOptionalStringBytes());
- assertSame(optional, proto.toBuilder().getOptionalStringBytes());
-
- ByteString repeated0 = proto.getRepeatedStringBytes(0);
- ByteString repeated1 = proto.getRepeatedStringBytes(1);
- assertSame(repeated0, proto.getRepeatedStringBytes(0));
- assertSame(repeated1, proto.getRepeatedStringBytes(1));
- assertSame(repeated0, proto.toBuilder().getRepeatedStringBytes(0));
- assertSame(repeated1, proto.toBuilder().getRepeatedStringBytes(1));
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/LiteEqualsAndHashTest.java b/java/src/test/java/com/google/protobuf/LiteEqualsAndHashTest.java
deleted file mode 100644
index 94f4fcf..0000000
--- a/java/src/test/java/com/google/protobuf/LiteEqualsAndHashTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import protobuf_unittest.lite_equals_and_hash.LiteEqualsAndHash.Bar;
-import protobuf_unittest.lite_equals_and_hash.LiteEqualsAndHash.BarPrime;
-import protobuf_unittest.lite_equals_and_hash.LiteEqualsAndHash.Foo;
-
-import junit.framework.TestCase;
-
-/**
- * Test generate equal and hash methods for the lite runtime.
- *
- * @author pbogle@google.com Phil Bogle
- */
-public class LiteEqualsAndHashTest extends TestCase {
-
- public void testEquals() throws Exception {
- // Since the generated equals and hashCode methods for lite messages are a
- // mostly complete subset of those for regular messages, we can mostly assume
- // that the generated methods are already thoroughly tested by the regular tests.
-
- // This test mostly just verifies is that a proto with
- // optimize_for = LITE_RUNTIME and java_generates_equals_and_hash_compiles
- // correctly when linked only against the lite library.
-
- // We do however do some basic testing to make sure that equals is actually
- // overriden to test for value equality rather than simple object equality.
-
- // Check that two identical objs are equal.
- Foo foo1a = Foo.newBuilder()
- .setValue(1)
- .addBar(Bar.newBuilder().setName("foo1"))
- .build();
- Foo foo1b = Foo.newBuilder()
- .setValue(1)
- .addBar(Bar.newBuilder().setName("foo1"))
- .build();
- Foo foo2 = Foo.newBuilder()
- .setValue(1)
- .addBar(Bar.newBuilder().setName("foo2"))
- .build();
-
- // Check that equals is doing value rather than object equality.
- assertEquals(foo1a, foo1b);
- assertEquals(foo1a.hashCode(), foo1b.hashCode());
-
- // Check that a diffeent object is not equal.
- assertFalse(foo1a.equals(foo2));
-
- // Check that two objects which have different types but the same field values are not
- // considered to be equal.
- Bar bar = Bar.newBuilder().setName("bar").build();
- BarPrime barPrime = BarPrime.newBuilder().setName("bar").build();
- assertFalse(bar.equals(barPrime));
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/LiteTest.java b/java/src/test/java/com/google/protobuf/LiteTest.java
index 8bb30ad..728bad9 100644
--- a/java/src/test/java/com/google/protobuf/LiteTest.java
+++ b/java/src/test/java/com/google/protobuf/LiteTest.java
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -37,11 +37,6 @@ import com.google.protobuf.UnittestLite.TestNestedExtensionLite;
import junit.framework.TestCase;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
/**
* Test lite runtime.
*
@@ -118,31 +113,4 @@ public class LiteTest extends TestCase {
assertEquals(7, message2.getExtension(
UnittestLite.optionalNestedMessageExtensionLite).getBb());
}
-
- public void testSerialize() throws Exception {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- TestAllTypesLite expected =
- TestAllTypesLite.newBuilder()
- .setOptionalInt32(123)
- .addRepeatedString("hello")
- .setOptionalNestedMessage(
- TestAllTypesLite.NestedMessage.newBuilder().setBb(7))
- .build();
- ObjectOutputStream out = new ObjectOutputStream(baos);
- try {
- out.writeObject(expected);
- } finally {
- out.close();
- }
- ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
- ObjectInputStream in = new ObjectInputStream(bais);
- TestAllTypesLite actual = (TestAllTypesLite) in.readObject();
- assertEquals(expected.getOptionalInt32(), actual.getOptionalInt32());
- assertEquals(expected.getRepeatedStringCount(),
- actual.getRepeatedStringCount());
- assertEquals(expected.getRepeatedString(0),
- actual.getRepeatedString(0));
- assertEquals(expected.getOptionalNestedMessage().getBb(),
- actual.getOptionalNestedMessage().getBb());
- }
}
diff --git a/java/src/test/java/com/google/protobuf/LiteralByteStringTest.java b/java/src/test/java/com/google/protobuf/LiteralByteStringTest.java
deleted file mode 100644
index 475f7ff..0000000
--- a/java/src/test/java/com/google/protobuf/LiteralByteStringTest.java
+++ /dev/null
@@ -1,396 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import junit.framework.TestCase;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-/**
- * Test {@link LiteralByteString} by setting up a reference string in {@link #setUp()}.
- * This class is designed to be extended for testing extensions of {@link LiteralByteString}
- * such as {@link BoundedByteString}, see {@link BoundedByteStringTest}.
- *
- * @author carlanton@google.com (Carl Haverl)
- */
-public class LiteralByteStringTest extends TestCase {
- protected static final String UTF_8 = "UTF-8";
-
- protected String classUnderTest;
- protected byte[] referenceBytes;
- protected ByteString stringUnderTest;
- protected int expectedHashCode;
-
- @Override
- protected void setUp() throws Exception {
- classUnderTest = "LiteralByteString";
- referenceBytes = ByteStringTest.getTestBytes(1234, 11337766L);
- stringUnderTest = ByteString.copyFrom(referenceBytes);
- expectedHashCode = 331161852;
- }
-
- public void testExpectedType() {
- String actualClassName = getActualClassName(stringUnderTest);
- assertEquals(classUnderTest + " should match type exactly", classUnderTest, actualClassName);
- }
-
- protected String getActualClassName(Object object) {
- String actualClassName = object.getClass().getName();
- actualClassName = actualClassName.substring(actualClassName.lastIndexOf('.') + 1);
- return actualClassName;
- }
-
- public void testByteAt() {
- boolean stillEqual = true;
- for (int i = 0; stillEqual && i < referenceBytes.length; ++i) {
- stillEqual = (referenceBytes[i] == stringUnderTest.byteAt(i));
- }
- assertTrue(classUnderTest + " must capture the right bytes", stillEqual);
- }
-
- public void testByteIterator() {
- boolean stillEqual = true;
- ByteString.ByteIterator iter = stringUnderTest.iterator();
- for (int i = 0; stillEqual && i < referenceBytes.length; ++i) {
- stillEqual = (iter.hasNext() && referenceBytes[i] == iter.nextByte());
- }
- assertTrue(classUnderTest + " must capture the right bytes", stillEqual);
- assertFalse(classUnderTest + " must have exhausted the itertor", iter.hasNext());
-
- try {
- iter.nextByte();
- fail("Should have thrown an exception.");
- } catch (NoSuchElementException e) {
- // This is success
- }
- }
-
- public void testByteIterable() {
- boolean stillEqual = true;
- int j = 0;
- for (byte quantum : stringUnderTest) {
- stillEqual = (referenceBytes[j] == quantum);
- ++j;
- }
- assertTrue(classUnderTest + " must capture the right bytes as Bytes", stillEqual);
- assertEquals(classUnderTest + " iterable character count", referenceBytes.length, j);
- }
-
- public void testSize() {
- assertEquals(classUnderTest + " must have the expected size", referenceBytes.length,
- stringUnderTest.size());
- }
-
- public void testGetTreeDepth() {
- assertEquals(classUnderTest + " must have depth 0", 0, stringUnderTest.getTreeDepth());
- }
-
- public void testIsBalanced() {
- assertTrue(classUnderTest + " is technically balanced", stringUnderTest.isBalanced());
- }
-
- public void testCopyTo_ByteArrayOffsetLength() {
- int destinationOffset = 50;
- int length = 100;
- byte[] destination = new byte[destinationOffset + length];
- int sourceOffset = 213;
- stringUnderTest.copyTo(destination, sourceOffset, destinationOffset, length);
- boolean stillEqual = true;
- for (int i = 0; stillEqual && i < length; ++i) {
- stillEqual = referenceBytes[i + sourceOffset] == destination[i + destinationOffset];
- }
- assertTrue(classUnderTest + ".copyTo(4 arg) must give the expected bytes", stillEqual);
- }
-
- public void testCopyTo_ByteArrayOffsetLengthErrors() {
- int destinationOffset = 50;
- int length = 100;
- byte[] destination = new byte[destinationOffset + length];
-
- try {
- // Copy one too many bytes
- stringUnderTest.copyTo(destination, stringUnderTest.size() + 1 - length,
- destinationOffset, length);
- fail("Should have thrown an exception when copying too many bytes of a "
- + classUnderTest);
- } catch (IndexOutOfBoundsException expected) {
- // This is success
- }
-
- try {
- // Copy with illegal negative sourceOffset
- stringUnderTest.copyTo(destination, -1, destinationOffset, length);
- fail("Should have thrown an exception when given a negative sourceOffset in "
- + classUnderTest);
- } catch (IndexOutOfBoundsException expected) {
- // This is success
- }
-
- try {
- // Copy with illegal negative destinationOffset
- stringUnderTest.copyTo(destination, 0, -1, length);
- fail("Should have thrown an exception when given a negative destinationOffset in "
- + classUnderTest);
- } catch (IndexOutOfBoundsException expected) {
- // This is success
- }
-
- try {
- // Copy with illegal negative size
- stringUnderTest.copyTo(destination, 0, 0, -1);
- fail("Should have thrown an exception when given a negative size in "
- + classUnderTest);
- } catch (IndexOutOfBoundsException expected) {
- // This is success
- }
-
- try {
- // Copy with illegal too-large sourceOffset
- stringUnderTest.copyTo(destination, 2 * stringUnderTest.size(), 0, length);
- fail("Should have thrown an exception when the destinationOffset is too large in "
- + classUnderTest);
- } catch (IndexOutOfBoundsException expected) {
- // This is success
- }
-
- try {
- // Copy with illegal too-large destinationOffset
- stringUnderTest.copyTo(destination, 0, 2 * destination.length, length);
- fail("Should have thrown an exception when the destinationOffset is too large in "
- + classUnderTest);
- } catch (IndexOutOfBoundsException expected) {
- // This is success
- }
- }
-
- public void testCopyTo_ByteBuffer() {
- ByteBuffer myBuffer = ByteBuffer.allocate(referenceBytes.length);
- stringUnderTest.copyTo(myBuffer);
- assertTrue(classUnderTest + ".copyTo(ByteBuffer) must give back the same bytes",
- Arrays.equals(referenceBytes, myBuffer.array()));
- }
-
- public void testAsReadOnlyByteBuffer() {
- ByteBuffer byteBuffer = stringUnderTest.asReadOnlyByteBuffer();
- byte[] roundTripBytes = new byte[referenceBytes.length];
- assertTrue(byteBuffer.remaining() == referenceBytes.length);
- assertTrue(byteBuffer.isReadOnly());
- byteBuffer.get(roundTripBytes);
- assertTrue(classUnderTest + ".asReadOnlyByteBuffer() must give back the same bytes",
- Arrays.equals(referenceBytes, roundTripBytes));
- }
-
- public void testAsReadOnlyByteBufferList() {
- List<ByteBuffer> byteBuffers = stringUnderTest.asReadOnlyByteBufferList();
- int bytesSeen = 0;
- byte[] roundTripBytes = new byte[referenceBytes.length];
- for (ByteBuffer byteBuffer : byteBuffers) {
- int thisLength = byteBuffer.remaining();
- assertTrue(byteBuffer.isReadOnly());
- assertTrue(bytesSeen + thisLength <= referenceBytes.length);
- byteBuffer.get(roundTripBytes, bytesSeen, thisLength);
- bytesSeen += thisLength;
- }
- assertTrue(bytesSeen == referenceBytes.length);
- assertTrue(classUnderTest + ".asReadOnlyByteBufferTest() must give back the same bytes",
- Arrays.equals(referenceBytes, roundTripBytes));
- }
-
- public void testToByteArray() {
- byte[] roundTripBytes = stringUnderTest.toByteArray();
- assertTrue(classUnderTest + ".toByteArray() must give back the same bytes",
- Arrays.equals(referenceBytes, roundTripBytes));
- }
-
- public void testWriteTo() throws IOException {
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- stringUnderTest.writeTo(bos);
- byte[] roundTripBytes = bos.toByteArray();
- assertTrue(classUnderTest + ".writeTo() must give back the same bytes",
- Arrays.equals(referenceBytes, roundTripBytes));
- }
-
- public void testWriteTo_mutating() throws IOException {
- OutputStream os = new OutputStream() {
- @Override
- public void write(byte[] b, int off, int len) {
- for (int x = 0; x < len; ++x) {
- b[off + x] = (byte) 0;
- }
- }
-
- @Override
- public void write(int b) {
- // Purposefully left blank.
- }
- };
-
- stringUnderTest.writeTo(os);
- byte[] newBytes = stringUnderTest.toByteArray();
- assertTrue(classUnderTest + ".writeTo() must not grant access to underlying array",
- Arrays.equals(referenceBytes, newBytes));
- }
-
- public void testNewOutput() throws IOException {
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- ByteString.Output output = ByteString.newOutput();
- stringUnderTest.writeTo(output);
- assertEquals("Output Size returns correct result",
- output.size(), stringUnderTest.size());
- output.writeTo(bos);
- assertTrue("Output.writeTo() must give back the same bytes",
- Arrays.equals(referenceBytes, bos.toByteArray()));
-
- // write the output stream to itself! This should cause it to double
- output.writeTo(output);
- assertEquals("Writing an output stream to itself is successful",
- stringUnderTest.concat(stringUnderTest), output.toByteString());
-
- output.reset();
- assertEquals("Output.reset() resets the output", 0, output.size());
- assertEquals("Output.reset() resets the output",
- ByteString.EMPTY, output.toByteString());
-
- }
-
- public void testToString() throws UnsupportedEncodingException {
- String testString = "I love unicode \u1234\u5678 characters";
- LiteralByteString unicode = new LiteralByteString(testString.getBytes(UTF_8));
- String roundTripString = unicode.toString(UTF_8);
- assertEquals(classUnderTest + " unicode must match", testString, roundTripString);
- }
-
- public void testEquals() {
- assertEquals(classUnderTest + " must not equal null", false, stringUnderTest.equals(null));
- assertEquals(classUnderTest + " must equal self", stringUnderTest, stringUnderTest);
- assertFalse(classUnderTest + " must not equal the empty string",
- stringUnderTest.equals(ByteString.EMPTY));
- assertEquals(classUnderTest + " empty strings must be equal",
- new LiteralByteString(new byte[]{}), stringUnderTest.substring(55, 55));
- assertEquals(classUnderTest + " must equal another string with the same value",
- stringUnderTest, new LiteralByteString(referenceBytes));
-
- byte[] mungedBytes = new byte[referenceBytes.length];
- System.arraycopy(referenceBytes, 0, mungedBytes, 0, referenceBytes.length);
- mungedBytes[mungedBytes.length - 5] ^= 0xFF;
- assertFalse(classUnderTest + " must not equal every string with the same length",
- stringUnderTest.equals(new LiteralByteString(mungedBytes)));
- }
-
- public void testHashCode() {
- int hash = stringUnderTest.hashCode();
- assertEquals(classUnderTest + " must have expected hashCode", expectedHashCode, hash);
- }
-
- public void testPeekCachedHashCode() {
- assertEquals(classUnderTest + ".peekCachedHashCode() should return zero at first", 0,
- stringUnderTest.peekCachedHashCode());
- stringUnderTest.hashCode();
- assertEquals(classUnderTest + ".peekCachedHashCode should return zero at first",
- expectedHashCode, stringUnderTest.peekCachedHashCode());
- }
-
- public void testPartialHash() {
- // partialHash() is more strenuously tested elsewhere by testing hashes of substrings.
- // This test would fail if the expected hash were 1. It's not.
- int hash = stringUnderTest.partialHash(stringUnderTest.size(), 0, stringUnderTest.size());
- assertEquals(classUnderTest + ".partialHash() must yield expected hashCode",
- expectedHashCode, hash);
- }
-
- public void testNewInput() throws IOException {
- InputStream input = stringUnderTest.newInput();
- assertEquals("InputStream.available() returns correct value",
- stringUnderTest.size(), input.available());
- boolean stillEqual = true;
- for (byte referenceByte : referenceBytes) {
- int expectedInt = (referenceByte & 0xFF);
- stillEqual = (expectedInt == input.read());
- }
- assertEquals("InputStream.available() returns correct value",
- 0, input.available());
- assertTrue(classUnderTest + " must give the same bytes from the InputStream", stillEqual);
- assertEquals(classUnderTest + " InputStream must now be exhausted", -1, input.read());
- }
-
- public void testNewInput_skip() throws IOException {
- InputStream input = stringUnderTest.newInput();
- int stringSize = stringUnderTest.size();
- int nearEndIndex = stringSize * 2 / 3;
- long skipped1 = input.skip(nearEndIndex);
- assertEquals("InputStream.skip()", skipped1, nearEndIndex);
- assertEquals("InputStream.available()",
- stringSize - skipped1, input.available());
- assertTrue("InputStream.mark() is available", input.markSupported());
- input.mark(0);
- assertEquals("InputStream.skip(), read()",
- stringUnderTest.byteAt(nearEndIndex) & 0xFF, input.read());
- assertEquals("InputStream.available()",
- stringSize - skipped1 - 1, input.available());
- long skipped2 = input.skip(stringSize);
- assertEquals("InputStream.skip() incomplete",
- skipped2, stringSize - skipped1 - 1);
- assertEquals("InputStream.skip(), no more input", 0, input.available());
- assertEquals("InputStream.skip(), no more input", -1, input.read());
- input.reset();
- assertEquals("InputStream.reset() succeded",
- stringSize - skipped1, input.available());
- assertEquals("InputStream.reset(), read()",
- stringUnderTest.byteAt(nearEndIndex) & 0xFF, input.read());
- }
-
- public void testNewCodedInput() throws IOException {
- CodedInputStream cis = stringUnderTest.newCodedInput();
- byte[] roundTripBytes = cis.readRawBytes(referenceBytes.length);
- assertTrue(classUnderTest + " must give the same bytes back from the CodedInputStream",
- Arrays.equals(referenceBytes, roundTripBytes));
- assertTrue(classUnderTest + " CodedInputStream must now be exhausted", cis.isAtEnd());
- }
-
- /**
- * Make sure we keep things simple when concatenating with empty. See also
- * {@link ByteStringTest#testConcat_empty()}.
- */
- public void testConcat_empty() {
- assertSame(classUnderTest + " concatenated with empty must give " + classUnderTest,
- stringUnderTest.concat(ByteString.EMPTY), stringUnderTest);
- assertSame("empty concatenated with " + classUnderTest + " must give " + classUnderTest,
- ByteString.EMPTY.concat(stringUnderTest), stringUnderTest);
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/MessageTest.java b/java/src/test/java/com/google/protobuf/MessageTest.java
index abcd3a1..c2f47eb 100644
--- a/java/src/test/java/com/google/protobuf/MessageTest.java
+++ b/java/src/test/java/com/google/protobuf/MessageTest.java
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -38,8 +38,6 @@ import protobuf_unittest.UnittestProto.ForeignMessage;
import junit.framework.TestCase;
-import java.util.List;
-
/**
* Misc. unit tests for message operations that apply to both generated
* and dynamic messages.
@@ -312,42 +310,4 @@ public class MessageTest extends TestCase {
assertEquals("Message missing required fields: a, b, c", e.getMessage());
}
}
-
- /** Test reading unset repeated message from DynamicMessage. */
- public void testDynamicRepeatedMessageNull() throws Exception {
- Descriptors.Descriptor descriptor = TestRequired.getDescriptor();
- DynamicMessage result =
- DynamicMessage.newBuilder(TestAllTypes.getDescriptor())
- .mergeFrom(DynamicMessage.newBuilder(MERGE_SOURCE).build())
- .build();
-
- assertTrue(result.getField(result.getDescriptorForType()
- .findFieldByName("repeated_foreign_message")) instanceof List<?>);
- assertEquals(result.getRepeatedFieldCount(result.getDescriptorForType()
- .findFieldByName("repeated_foreign_message")), 0);
- }
-
- /** Test reading repeated message from DynamicMessage. */
- public void testDynamicRepeatedMessageNotNull() throws Exception {
-
- TestAllTypes REPEATED_NESTED =
- TestAllTypes.newBuilder()
- .setOptionalInt32(1)
- .setOptionalString("foo")
- .setOptionalForeignMessage(ForeignMessage.getDefaultInstance())
- .addRepeatedString("bar")
- .addRepeatedForeignMessage(ForeignMessage.getDefaultInstance())
- .addRepeatedForeignMessage(ForeignMessage.getDefaultInstance())
- .build();
- Descriptors.Descriptor descriptor = TestRequired.getDescriptor();
- DynamicMessage result =
- DynamicMessage.newBuilder(TestAllTypes.getDescriptor())
- .mergeFrom(DynamicMessage.newBuilder(REPEATED_NESTED).build())
- .build();
-
- assertTrue(result.getField(result.getDescriptorForType()
- .findFieldByName("repeated_foreign_message")) instanceof List<?>);
- assertEquals(result.getRepeatedFieldCount(result.getDescriptorForType()
- .findFieldByName("repeated_foreign_message")), 2);
- }
}
diff --git a/java/src/test/java/com/google/protobuf/NanoTest.java b/java/src/test/java/com/google/protobuf/NanoTest.java
index 4c3b416..e831c52 100644
--- a/java/src/test/java/com/google/protobuf/NanoTest.java
+++ b/java/src/test/java/com/google/protobuf/NanoTest.java
@@ -49,7 +49,6 @@ import com.google.protobuf.nano.NanoHasOuterClass.TestAllTypesNanoHas;
import com.google.protobuf.nano.NanoOuterClass;
import com.google.protobuf.nano.NanoOuterClass.TestAllTypesNano;
import com.google.protobuf.nano.NanoReferenceTypes;
-import com.google.protobuf.nano.NanoReferenceTypesCompat;
import com.google.protobuf.nano.NanoRepeatedPackables;
import com.google.protobuf.nano.PackedExtensions;
import com.google.protobuf.nano.RepeatedExtensions;
@@ -2319,42 +2318,6 @@ public class NanoTest extends TestCase {
}
}
- public void testDifferentStringLengthsNano() throws Exception {
- // Test string serialization roundtrip using strings of the following lengths,
- // with ASCII and Unicode characters requiring different UTF-8 byte counts per
- // char, hence causing the length delimiter varint to sometimes require more
- // bytes for the Unicode strings than the ASCII string of the same length.
- int[] lengths = new int[] {
- 0,
- 1,
- (1 << 4) - 1, // 1 byte for ASCII and Unicode
- (1 << 7) - 1, // 1 byte for ASCII, 2 bytes for Unicode
- (1 << 11) - 1, // 2 bytes for ASCII and Unicode
- (1 << 14) - 1, // 2 bytes for ASCII, 3 bytes for Unicode
- (1 << 17) - 1, // 3 bytes for ASCII and Unicode
- };
- for (int i : lengths) {
- testEncodingOfString('q', i); // 1 byte per char
- testEncodingOfString('\u07FF', i); // 2 bytes per char
- testEncodingOfString('\u0981', i); // 3 bytes per char
- }
- }
-
- private void testEncodingOfString(char c, int length) throws InvalidProtocolBufferNanoException {
- TestAllTypesNano testAllTypesNano = new TestAllTypesNano();
- final String fullString = fullString(c, length);
- testAllTypesNano.optionalString = fullString;
- final TestAllTypesNano resultNano = new TestAllTypesNano();
- MessageNano.mergeFrom(resultNano, MessageNano.toByteArray(testAllTypesNano));
- assertEquals(fullString, resultNano.optionalString);
- }
-
- private String fullString(char c, int length) {
- char[] result = new char[length];
- Arrays.fill(result, c);
- return new String(result);
- }
-
public void testNanoWithHasParseFrom() throws Exception {
TestAllTypesNanoHas msg = null;
// Test false on creation, after clear and upon empty parse.
@@ -2817,58 +2780,24 @@ public class NanoTest extends TestCase {
RepeatedExtensions.RepeatedGroup group2 = new RepeatedExtensions.RepeatedGroup();
group2.a = 32;
RepeatedExtensions.RepeatedGroup[] groups = {group1, group2};
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedInt32));
message.setExtension(RepeatedExtensions.repeatedInt32, int32s);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedInt32));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedUint32));
message.setExtension(RepeatedExtensions.repeatedUint32, uint32s);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedUint32));
message.setExtension(RepeatedExtensions.repeatedSint32, sint32s);
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedInt64));
message.setExtension(RepeatedExtensions.repeatedInt64, int64s);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedInt64));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedUint64));
message.setExtension(RepeatedExtensions.repeatedUint64, uint64s);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedUint64));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedSint64));
message.setExtension(RepeatedExtensions.repeatedSint64, sint64s);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedSint64));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedFixed32));
message.setExtension(RepeatedExtensions.repeatedFixed32, fixed32s);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedFixed32));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedSfixed32));
message.setExtension(RepeatedExtensions.repeatedSfixed32, sfixed32s);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedSfixed32));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedFixed64));
message.setExtension(RepeatedExtensions.repeatedFixed64, fixed64s);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedFixed64));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedSfixed64));
message.setExtension(RepeatedExtensions.repeatedSfixed64, sfixed64s);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedSfixed64));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedBool));
message.setExtension(RepeatedExtensions.repeatedBool, bools);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedBool));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedFloat));
message.setExtension(RepeatedExtensions.repeatedFloat, floats);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedFloat));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedDouble));
message.setExtension(RepeatedExtensions.repeatedDouble, doubles);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedDouble));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedEnum));
message.setExtension(RepeatedExtensions.repeatedEnum, enums);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedEnum));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedString));
message.setExtension(RepeatedExtensions.repeatedString, strings);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedString));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedBytes));
message.setExtension(RepeatedExtensions.repeatedBytes, bytess);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedBytes));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedMessage));
message.setExtension(RepeatedExtensions.repeatedMessage, messages);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedMessage));
- assertFalse(message.hasExtension(RepeatedExtensions.repeatedGroup));
message.setExtension(RepeatedExtensions.repeatedGroup, groups);
- assertTrue(message.hasExtension(RepeatedExtensions.repeatedGroup));
byte[] data = MessageNano.toByteArray(message);
message = Extensions.ExtendableMessage.parseFrom(data);
@@ -2932,26 +2861,10 @@ public class NanoTest extends TestCase {
assertEquals(group1.a, deserializedRepeatedGroup[0].a);
assertEquals(group2.a, deserializedRepeatedGroup[1].a);
- message = Extensions.ExtendableMessage.parseFrom(data);
- assertEquals(5, message.field);
- // Test hasExtension using PackedExtensions.
- assertTrue(message.hasExtension(PackedExtensions.packedInt32));
- assertTrue(message.hasExtension(PackedExtensions.packedUint32));
- assertTrue(message.hasExtension(PackedExtensions.packedSint32));
- assertTrue(message.hasExtension(PackedExtensions.packedInt64));
- assertTrue(message.hasExtension(PackedExtensions.packedUint64));
- assertTrue(message.hasExtension(PackedExtensions.packedSint64));
- assertTrue(message.hasExtension(PackedExtensions.packedFixed32));
- assertTrue(message.hasExtension(PackedExtensions.packedSfixed32));
- assertTrue(message.hasExtension(PackedExtensions.packedFixed64));
- assertTrue(message.hasExtension(PackedExtensions.packedSfixed64));
- assertTrue(message.hasExtension(PackedExtensions.packedBool));
- assertTrue(message.hasExtension(PackedExtensions.packedFloat));
- assertTrue(message.hasExtension(PackedExtensions.packedDouble));
- assertTrue(message.hasExtension(PackedExtensions.packedEnum));
-
// Test reading back using PackedExtensions: the arrays should be equal, even the fields
// are non-packed.
+ message = Extensions.ExtendableMessage.parseFrom(data);
+ assertEquals(5, message.field);
assertTrue(Arrays.equals(int32s, message.getExtension(PackedExtensions.packedInt32)));
assertTrue(Arrays.equals(uint32s, message.getExtension(PackedExtensions.packedUint32)));
assertTrue(Arrays.equals(sint32s, message.getExtension(PackedExtensions.packedSint32)));
@@ -3000,28 +2913,19 @@ public class NanoTest extends TestCase {
assertTrue(Arrays.equals(floats, message.getExtension(RepeatedExtensions.repeatedFloat)));
assertTrue(Arrays.equals(doubles, message.getExtension(RepeatedExtensions.repeatedDouble)));
assertTrue(Arrays.equals(enums, message.getExtension(RepeatedExtensions.repeatedEnum)));
-
- // Clone the message and ensure it's still equal.
- Extensions.ExtendableMessage clone = message.clone();
- assertEquals(clone, message);
}
public void testNullExtensions() throws Exception {
// Check that clearing the extension on an empty message is a no-op.
Extensions.ExtendableMessage message = new Extensions.ExtendableMessage();
- assertFalse(message.hasExtension(SingularExtensions.someMessage));
message.setExtension(SingularExtensions.someMessage, null);
- assertFalse(message.hasExtension(SingularExtensions.someMessage));
assertEquals(0, MessageNano.toByteArray(message).length);
// Check that the message is empty after setting and clearing an extension.
AnotherMessage another = new AnotherMessage();
- assertFalse(message.hasExtension(SingularExtensions.someMessage));
message.setExtension(SingularExtensions.someMessage, another);
- assertTrue(message.hasExtension(SingularExtensions.someMessage));
assertTrue(MessageNano.toByteArray(message).length > 0);
message.setExtension(SingularExtensions.someMessage, null);
- assertFalse(message.hasExtension(SingularExtensions.someMessage));
assertEquals(0, MessageNano.toByteArray(message).length);
}
@@ -3253,9 +3157,6 @@ public class NanoTest extends TestCase {
TestAllTypesNano a = createMessageForHashCodeEqualsTest();
TestAllTypesNano aEquivalent = createMessageForHashCodeEqualsTest();
- assertTrue(MessageNano.messageNanoEquals(a, aEquivalent));
- assertFalse(MessageNano.messageNanoEquals(a, new TestAllTypesNano()));
-
// Null and empty array for repeated fields equality:
TestAllTypesNano b = createMessageForHashCodeEqualsTest();
b.repeatedBool = null;
@@ -3794,11 +3695,6 @@ public class NanoTest extends TestCase {
assertTrue(Arrays.equals(new boolean[] {false, true, false, true}, nonPacked.bools));
}
- public void testRepeatedFieldInitializedInReftypesCompatMode() {
- NanoReferenceTypesCompat.TestAllTypesNano proto = new NanoReferenceTypesCompat.TestAllTypesNano();
- assertNotNull(proto.repeatedString);
- }
-
private void assertRepeatedPackablesEqual(
NanoRepeatedPackables.NonPacked nonPacked, NanoRepeatedPackables.Packed packed) {
// Not using MessageNano.equals() -- that belongs to a separate test.
@@ -3818,22 +3714,6 @@ public class NanoTest extends TestCase {
assertTrue(Arrays.equals(nonPacked.enums, packed.enums));
}
- public void testClone() throws Exception {
- // A simple message.
- AnotherMessage anotherMessage = new AnotherMessage();
- anotherMessage.string = "Hello";
- anotherMessage.value = true;
- anotherMessage.integers = new int[] { 1, 2, 3 };
-
- AnotherMessage clone = anotherMessage.clone();
- assertEquals(clone, anotherMessage);
-
- // Verify it was a deep clone - changes to the clone shouldn't affect the
- // original.
- clone.integers[1] = 100;
- assertFalse(clone.equals(anotherMessage));
- }
-
private void assertHasWireData(MessageNano message, boolean expected) {
byte[] bytes = MessageNano.toByteArray(message);
int wireLength = bytes.length;
diff --git a/java/src/test/java/com/google/protobuf/NestedBuildersTest.java b/java/src/test/java/com/google/protobuf/NestedBuildersTest.java
deleted file mode 100644
index 2365312..0000000
--- a/java/src/test/java/com/google/protobuf/NestedBuildersTest.java
+++ /dev/null
@@ -1,185 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import protobuf_unittest.Vehicle;
-import protobuf_unittest.Wheel;
-
-import junit.framework.TestCase;
-
-import java.util.List;
-import java.util.ArrayList;
-
-/**
- * Test cases that exercise end-to-end use cases involving
- * {@link SingleFieldBuilder} and {@link RepeatedFieldBuilder}.
- *
- * @author jonp@google.com (Jon Perlow)
- */
-public class NestedBuildersTest extends TestCase {
-
- public void testMessagesAndBuilders() {
- Vehicle.Builder vehicleBuilder = Vehicle.newBuilder();
- vehicleBuilder.addWheelBuilder()
- .setRadius(4)
- .setWidth(1);
- vehicleBuilder.addWheelBuilder()
- .setRadius(4)
- .setWidth(2);
- vehicleBuilder.addWheelBuilder()
- .setRadius(4)
- .setWidth(3);
- vehicleBuilder.addWheelBuilder()
- .setRadius(4)
- .setWidth(4);
- vehicleBuilder.getEngineBuilder()
- .setLiters(10);
-
- Vehicle vehicle = vehicleBuilder.build();
- assertEquals(4, vehicle.getWheelCount());
- for (int i = 0; i < 4; i++) {
- Wheel wheel = vehicle.getWheel(i);
- assertEquals(4, wheel.getRadius());
- assertEquals(i + 1, wheel.getWidth());
- }
- assertEquals(10, vehicle.getEngine().getLiters());
-
- for (int i = 0; i < 4; i++) {
- vehicleBuilder.getWheelBuilder(i)
- .setRadius(5)
- .setWidth(i + 10);
- }
- vehicleBuilder.getEngineBuilder().setLiters(20);
-
- vehicle = vehicleBuilder.build();
- for (int i = 0; i < 4; i++) {
- Wheel wheel = vehicle.getWheel(i);
- assertEquals(5, wheel.getRadius());
- assertEquals(i + 10, wheel.getWidth());
- }
- assertEquals(20, vehicle.getEngine().getLiters());
- assertTrue(vehicle.hasEngine());
- }
-
- public void testMessagesAreCached() {
- Vehicle.Builder vehicleBuilder = Vehicle.newBuilder();
- vehicleBuilder.addWheelBuilder()
- .setRadius(1)
- .setWidth(2);
- vehicleBuilder.addWheelBuilder()
- .setRadius(3)
- .setWidth(4);
- vehicleBuilder.addWheelBuilder()
- .setRadius(5)
- .setWidth(6);
- vehicleBuilder.addWheelBuilder()
- .setRadius(7)
- .setWidth(8);
-
- // Make sure messages are cached.
- List<Wheel> wheels = new ArrayList<Wheel>(vehicleBuilder.getWheelList());
- for (int i = 0; i < wheels.size(); i++) {
- assertSame(wheels.get(i), vehicleBuilder.getWheel(i));
- }
-
- // Now get builders and check they didn't change.
- for (int i = 0; i < wheels.size(); i++) {
- vehicleBuilder.getWheel(i);
- }
- for (int i = 0; i < wheels.size(); i++) {
- assertSame(wheels.get(i), vehicleBuilder.getWheel(i));
- }
-
- // Change just one
- vehicleBuilder.getWheelBuilder(3)
- .setRadius(20).setWidth(20);
-
- // Now get wheels and check that only that one changed
- for (int i = 0; i < wheels.size(); i++) {
- if (i < 3) {
- assertSame(wheels.get(i), vehicleBuilder.getWheel(i));
- } else {
- assertNotSame(wheels.get(i), vehicleBuilder.getWheel(i));
- }
- }
- }
-
- public void testRemove_WithNestedBuilders() {
- Vehicle.Builder vehicleBuilder = Vehicle.newBuilder();
- vehicleBuilder.addWheelBuilder()
- .setRadius(1)
- .setWidth(1);
- vehicleBuilder.addWheelBuilder()
- .setRadius(2)
- .setWidth(2);
- vehicleBuilder.removeWheel(0);
-
- assertEquals(1, vehicleBuilder.getWheelCount());
- assertEquals(2, vehicleBuilder.getWheel(0).getRadius());
- }
-
- public void testRemove_WithNestedMessages() {
- Vehicle.Builder vehicleBuilder = Vehicle.newBuilder();
- vehicleBuilder.addWheel(Wheel.newBuilder()
- .setRadius(1)
- .setWidth(1));
- vehicleBuilder.addWheel(Wheel.newBuilder()
- .setRadius(2)
- .setWidth(2));
- vehicleBuilder.removeWheel(0);
-
- assertEquals(1, vehicleBuilder.getWheelCount());
- assertEquals(2, vehicleBuilder.getWheel(0).getRadius());
- }
-
- public void testMerge() {
- Vehicle vehicle1 = Vehicle.newBuilder()
- .addWheel(Wheel.newBuilder().setRadius(1).build())
- .addWheel(Wheel.newBuilder().setRadius(2).build())
- .build();
-
- Vehicle vehicle2 = Vehicle.newBuilder()
- .mergeFrom(vehicle1)
- .build();
- // List should be the same -- no allocation
- assertSame(vehicle1.getWheelList(), vehicle2.getWheelList());
-
- Vehicle vehicle3 = vehicle1.toBuilder().build();
- assertSame(vehicle1.getWheelList(), vehicle3.getWheelList());
- }
-
- public void testGettingBuilderMarksFieldAsHaving() {
- Vehicle.Builder vehicleBuilder = Vehicle.newBuilder();
- vehicleBuilder.getEngineBuilder();
- Vehicle vehicle = vehicleBuilder.buildPartial();
- assertTrue(vehicle.hasEngine());
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/ParserTest.java b/java/src/test/java/com/google/protobuf/ParserTest.java
deleted file mode 100644
index b11d8cb..0000000
--- a/java/src/test/java/com/google/protobuf/ParserTest.java
+++ /dev/null
@@ -1,381 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import com.google.protobuf.UnittestLite.TestAllTypesLite;
-import com.google.protobuf.UnittestLite.TestPackedExtensionsLite;
-import com.google.protobuf.UnittestLite.TestParsingMergeLite;
-import protobuf_unittest.UnittestOptimizeFor.TestOptimizedForSize;
-import protobuf_unittest.UnittestOptimizeFor.TestRequiredOptimizedForSize;
-import protobuf_unittest.UnittestOptimizeFor;
-import protobuf_unittest.UnittestProto.ForeignMessage;
-import protobuf_unittest.UnittestProto.TestAllTypes;
-import protobuf_unittest.UnittestProto.TestEmptyMessage;
-import protobuf_unittest.UnittestProto.TestParsingMerge;
-import protobuf_unittest.UnittestProto.TestRequired;
-import protobuf_unittest.UnittestProto;
-
-import junit.framework.TestCase;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Unit test for {@link Parser}.
- *
- * @author liujisi@google.com (Pherl Liu)
- */
-public class ParserTest extends TestCase {
- public void testGeneratedMessageParserSingleton() throws Exception {
- for (int i = 0; i < 10; i++) {
- assertEquals(TestAllTypes.PARSER,
- TestUtil.getAllSet().getParserForType());
- }
- }
-
- private void assertRoundTripEquals(MessageLite message,
- ExtensionRegistryLite registry)
- throws Exception {
- final byte[] data = message.toByteArray();
- final int offset = 20;
- final int length = data.length;
- final int padding = 30;
- Parser<? extends MessageLite> parser = message.getParserForType();
- assertMessageEquals(message, parser.parseFrom(data, registry));
- assertMessageEquals(message, parser.parseFrom(
- generatePaddingArray(data, offset, padding),
- offset, length, registry));
- assertMessageEquals(message, parser.parseFrom(
- message.toByteString(), registry));
- assertMessageEquals(message, parser.parseFrom(
- new ByteArrayInputStream(data), registry));
- assertMessageEquals(message, parser.parseFrom(
- CodedInputStream.newInstance(data), registry));
- }
-
- @SuppressWarnings("unchecked")
- private void assertRoundTripEquals(MessageLite message) throws Exception {
- final byte[] data = message.toByteArray();
- final int offset = 20;
- final int length = data.length;
- final int padding = 30;
-
- Parser<MessageLite> parser =
- (Parser<MessageLite>) message.getParserForType();
- assertMessageEquals(message, parser.parseFrom(data));
- assertMessageEquals(message, parser.parseFrom(
- generatePaddingArray(data, offset, padding),
- offset, length));
- assertMessageEquals(message, parser.parseFrom(message.toByteString()));
- assertMessageEquals(message, parser.parseFrom(
- new ByteArrayInputStream(data)));
- assertMessageEquals(message, parser.parseFrom(
- CodedInputStream.newInstance(data)));
- }
-
- private void assertMessageEquals(
- MessageLite expected, MessageLite actual)
- throws Exception {
- if (expected instanceof Message) {
- assertEquals(expected, actual);
- } else {
- assertEquals(expected.toByteString(), actual.toByteString());
- }
- }
-
- private byte[] generatePaddingArray(byte[] data, int offset, int padding) {
- byte[] result = new byte[offset + data.length + padding];
- System.arraycopy(data, 0, result, offset, data.length);
- return result;
- }
-
- public void testNormalMessage() throws Exception {
- assertRoundTripEquals(TestUtil.getAllSet());
- }
-
-
- public void testParsePartial() throws Exception {
- assertParsePartial(TestRequired.PARSER,
- TestRequired.newBuilder().setA(1).buildPartial());
- }
-
- private <T extends MessageLite> void assertParsePartial(
- Parser<T> parser, T partialMessage) throws Exception {
- final String errorString =
- "Should throw exceptions when the parsed message isn't initialized.";
-
- // parsePartialFrom should pass.
- byte[] data = partialMessage.toByteArray();
- assertEquals(partialMessage, parser.parsePartialFrom(data));
- assertEquals(partialMessage, parser.parsePartialFrom(
- partialMessage.toByteString()));
- assertEquals(partialMessage, parser.parsePartialFrom(
- new ByteArrayInputStream(data)));
- assertEquals(partialMessage, parser.parsePartialFrom(
- CodedInputStream.newInstance(data)));
-
- // parseFrom(ByteArray)
- try {
- parser.parseFrom(partialMessage.toByteArray());
- fail(errorString);
- } catch (InvalidProtocolBufferException e) {
- // pass.
- }
-
- // parseFrom(ByteString)
- try {
- parser.parseFrom(partialMessage.toByteString());
- fail(errorString);
- } catch (InvalidProtocolBufferException e) {
- // pass.
- }
-
- // parseFrom(InputStream)
- try {
- parser.parseFrom(new ByteArrayInputStream(partialMessage.toByteArray()));
- fail(errorString);
- } catch (IOException e) {
- // pass.
- }
-
- // parseFrom(CodedInputStream)
- try {
- parser.parseFrom(CodedInputStream.newInstance(
- partialMessage.toByteArray()));
- fail(errorString);
- } catch (IOException e) {
- // pass.
- }
- }
-
- public void testParseExtensions() throws Exception {
- assertRoundTripEquals(TestUtil.getAllExtensionsSet(),
- TestUtil.getExtensionRegistry());
- assertRoundTripEquals(TestUtil.getAllLiteExtensionsSet(),
- TestUtil.getExtensionRegistryLite());
- }
-
- public void testParsePacked() throws Exception {
- assertRoundTripEquals(TestUtil.getPackedSet());
- assertRoundTripEquals(TestUtil.getPackedExtensionsSet(),
- TestUtil.getExtensionRegistry());
- assertRoundTripEquals(TestUtil.getLitePackedExtensionsSet(),
- TestUtil.getExtensionRegistryLite());
- }
-
- public void testParseDelimitedTo() throws Exception {
- // Write normal Message.
- TestAllTypes normalMessage = TestUtil.getAllSet();
- ByteArrayOutputStream output = new ByteArrayOutputStream();
- normalMessage.writeDelimitedTo(output);
-
- // Write MessageLite with packed extension fields.
- TestPackedExtensionsLite packedMessage =
- TestUtil.getLitePackedExtensionsSet();
- packedMessage.writeDelimitedTo(output);
-
- InputStream input = new ByteArrayInputStream(output.toByteArray());
- assertMessageEquals(
- normalMessage,
- normalMessage.getParserForType().parseDelimitedFrom(input));
- assertMessageEquals(
- packedMessage,
- packedMessage.getParserForType().parseDelimitedFrom(
- input, TestUtil.getExtensionRegistryLite()));
- }
-
- public void testParseUnknownFields() throws Exception {
- // All fields will be treated as unknown fields in emptyMessage.
- TestEmptyMessage emptyMessage = TestEmptyMessage.PARSER.parseFrom(
- TestUtil.getAllSet().toByteString());
- assertEquals(
- TestUtil.getAllSet().toByteString(),
- emptyMessage.toByteString());
- }
-
-
- public void testOptimizeForSize() throws Exception {
- TestOptimizedForSize.Builder builder = TestOptimizedForSize.newBuilder();
- builder.setI(12).setMsg(ForeignMessage.newBuilder().setC(34).build());
- builder.setExtension(TestOptimizedForSize.testExtension, 56);
- builder.setExtension(TestOptimizedForSize.testExtension2,
- TestRequiredOptimizedForSize.newBuilder().setX(78).build());
-
- TestOptimizedForSize message = builder.build();
- ExtensionRegistry registry = ExtensionRegistry.newInstance();
- UnittestOptimizeFor.registerAllExtensions(registry);
-
- assertRoundTripEquals(message, registry);
- }
-
- /** Helper method for {@link #testParsingMerge()}.*/
- private void assertMessageMerged(TestAllTypes allTypes)
- throws Exception {
- assertEquals(3, allTypes.getOptionalInt32());
- assertEquals(2, allTypes.getOptionalInt64());
- assertEquals("hello", allTypes.getOptionalString());
- }
-
- /** Helper method for {@link #testParsingMergeLite()}.*/
- private void assertMessageMerged(TestAllTypesLite allTypes)
- throws Exception {
- assertEquals(3, allTypes.getOptionalInt32());
- assertEquals(2, allTypes.getOptionalInt64());
- assertEquals("hello", allTypes.getOptionalString());
- }
-
- public void testParsingMerge() throws Exception {
- // Build messages.
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- TestAllTypes msg1 = builder.setOptionalInt32(1).build();
- builder.clear();
- TestAllTypes msg2 = builder.setOptionalInt64(2).build();
- builder.clear();
- TestAllTypes msg3 = builder.setOptionalInt32(3)
- .setOptionalString("hello").build();
-
- // Build groups.
- TestParsingMerge.RepeatedFieldsGenerator.Group1 optionalG1 =
- TestParsingMerge.RepeatedFieldsGenerator.Group1.newBuilder()
- .setField1(msg1).build();
- TestParsingMerge.RepeatedFieldsGenerator.Group1 optionalG2 =
- TestParsingMerge.RepeatedFieldsGenerator.Group1.newBuilder()
- .setField1(msg2).build();
- TestParsingMerge.RepeatedFieldsGenerator.Group1 optionalG3 =
- TestParsingMerge.RepeatedFieldsGenerator.Group1.newBuilder()
- .setField1(msg3).build();
- TestParsingMerge.RepeatedFieldsGenerator.Group2 repeatedG1 =
- TestParsingMerge.RepeatedFieldsGenerator.Group2.newBuilder()
- .setField1(msg1).build();
- TestParsingMerge.RepeatedFieldsGenerator.Group2 repeatedG2 =
- TestParsingMerge.RepeatedFieldsGenerator.Group2.newBuilder()
- .setField1(msg2).build();
- TestParsingMerge.RepeatedFieldsGenerator.Group2 repeatedG3 =
- TestParsingMerge.RepeatedFieldsGenerator.Group2.newBuilder()
- .setField1(msg3).build();
-
- // Assign and serialize RepeatedFieldsGenerator.
- ByteString data = TestParsingMerge.RepeatedFieldsGenerator.newBuilder()
- .addField1(msg1).addField1(msg2).addField1(msg3)
- .addField2(msg1).addField2(msg2).addField2(msg3)
- .addField3(msg1).addField3(msg2).addField3(msg3)
- .addGroup1(optionalG1).addGroup1(optionalG2).addGroup1(optionalG3)
- .addGroup2(repeatedG1).addGroup2(repeatedG2).addGroup2(repeatedG3)
- .addExt1(msg1).addExt1(msg2).addExt1(msg3)
- .addExt2(msg1).addExt2(msg2).addExt2(msg3)
- .build().toByteString();
-
- // Parse TestParsingMerge.
- ExtensionRegistry registry = ExtensionRegistry.newInstance();
- UnittestProto.registerAllExtensions(registry);
- TestParsingMerge parsingMerge =
- TestParsingMerge.PARSER.parseFrom(data, registry);
-
- // Required and optional fields should be merged.
- assertMessageMerged(parsingMerge.getRequiredAllTypes());
- assertMessageMerged(parsingMerge.getOptionalAllTypes());
- assertMessageMerged(
- parsingMerge.getOptionalGroup().getOptionalGroupAllTypes());
- assertMessageMerged(parsingMerge.getExtension(
- TestParsingMerge.optionalExt));
-
- // Repeated fields should not be merged.
- assertEquals(3, parsingMerge.getRepeatedAllTypesCount());
- assertEquals(3, parsingMerge.getRepeatedGroupCount());
- assertEquals(3, parsingMerge.getExtensionCount(
- TestParsingMerge.repeatedExt));
- }
-
- public void testParsingMergeLite() throws Exception {
- // Build messages.
- TestAllTypesLite.Builder builder =
- TestAllTypesLite.newBuilder();
- TestAllTypesLite msg1 = builder.setOptionalInt32(1).build();
- builder.clear();
- TestAllTypesLite msg2 = builder.setOptionalInt64(2).build();
- builder.clear();
- TestAllTypesLite msg3 = builder.setOptionalInt32(3)
- .setOptionalString("hello").build();
-
- // Build groups.
- TestParsingMergeLite.RepeatedFieldsGenerator.Group1 optionalG1 =
- TestParsingMergeLite.RepeatedFieldsGenerator.Group1.newBuilder()
- .setField1(msg1).build();
- TestParsingMergeLite.RepeatedFieldsGenerator.Group1 optionalG2 =
- TestParsingMergeLite.RepeatedFieldsGenerator.Group1.newBuilder()
- .setField1(msg2).build();
- TestParsingMergeLite.RepeatedFieldsGenerator.Group1 optionalG3 =
- TestParsingMergeLite.RepeatedFieldsGenerator.Group1.newBuilder()
- .setField1(msg3).build();
- TestParsingMergeLite.RepeatedFieldsGenerator.Group2 repeatedG1 =
- TestParsingMergeLite.RepeatedFieldsGenerator.Group2.newBuilder()
- .setField1(msg1).build();
- TestParsingMergeLite.RepeatedFieldsGenerator.Group2 repeatedG2 =
- TestParsingMergeLite.RepeatedFieldsGenerator.Group2.newBuilder()
- .setField1(msg2).build();
- TestParsingMergeLite.RepeatedFieldsGenerator.Group2 repeatedG3 =
- TestParsingMergeLite.RepeatedFieldsGenerator.Group2.newBuilder()
- .setField1(msg3).build();
-
- // Assign and serialize RepeatedFieldsGenerator.
- ByteString data = TestParsingMergeLite.RepeatedFieldsGenerator.newBuilder()
- .addField1(msg1).addField1(msg2).addField1(msg3)
- .addField2(msg1).addField2(msg2).addField2(msg3)
- .addField3(msg1).addField3(msg2).addField3(msg3)
- .addGroup1(optionalG1).addGroup1(optionalG2).addGroup1(optionalG3)
- .addGroup2(repeatedG1).addGroup2(repeatedG2).addGroup2(repeatedG3)
- .addExt1(msg1).addExt1(msg2).addExt1(msg3)
- .addExt2(msg1).addExt2(msg2).addExt2(msg3)
- .build().toByteString();
-
- // Parse TestParsingMergeLite.
- ExtensionRegistry registry = ExtensionRegistry.newInstance();
- UnittestLite.registerAllExtensions(registry);
- TestParsingMergeLite parsingMerge =
- TestParsingMergeLite.PARSER.parseFrom(data, registry);
-
- // Required and optional fields should be merged.
- assertMessageMerged(parsingMerge.getRequiredAllTypes());
- assertMessageMerged(parsingMerge.getOptionalAllTypes());
- assertMessageMerged(
- parsingMerge.getOptionalGroup().getOptionalGroupAllTypes());
- assertMessageMerged(parsingMerge.getExtension(
- TestParsingMergeLite.optionalExt));
-
- // Repeated fields should not be merged.
- assertEquals(3, parsingMerge.getRepeatedAllTypesCount());
- assertEquals(3, parsingMerge.getRepeatedGroupCount());
- assertEquals(3, parsingMerge.getExtensionCount(
- TestParsingMergeLite.repeatedExt));
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java b/java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java
deleted file mode 100644
index 49d5232..0000000
--- a/java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java
+++ /dev/null
@@ -1,190 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import protobuf_unittest.UnittestProto.TestAllTypes;
-import protobuf_unittest.UnittestProto.TestAllTypesOrBuilder;
-
-import junit.framework.TestCase;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Tests for {@link RepeatedFieldBuilder}. This tests basic functionality.
- * More extensive testing is provided via other tests that exercise the
- * builder.
- *
- * @author jonp@google.com (Jon Perlow)
- */
-public class RepeatedFieldBuilderTest extends TestCase {
-
- public void testBasicUse() {
- TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent();
- RepeatedFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder> builder = newRepeatedFieldBuilder(mockParent);
- builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(0).build());
- builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(1).build());
- assertEquals(0, builder.getMessage(0).getOptionalInt32());
- assertEquals(1, builder.getMessage(1).getOptionalInt32());
-
- List<TestAllTypes> list = builder.build();
- assertEquals(2, list.size());
- assertEquals(0, list.get(0).getOptionalInt32());
- assertEquals(1, list.get(1).getOptionalInt32());
- assertIsUnmodifiable(list);
-
- // Make sure it doesn't change.
- List<TestAllTypes> list2 = builder.build();
- assertSame(list, list2);
- assertEquals(0, mockParent.getInvalidationCount());
- }
-
- public void testGoingBackAndForth() {
- TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent();
- RepeatedFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder> builder = newRepeatedFieldBuilder(mockParent);
- builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(0).build());
- builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(1).build());
- assertEquals(0, builder.getMessage(0).getOptionalInt32());
- assertEquals(1, builder.getMessage(1).getOptionalInt32());
-
- // Convert to list
- List<TestAllTypes> list = builder.build();
- assertEquals(2, list.size());
- assertEquals(0, list.get(0).getOptionalInt32());
- assertEquals(1, list.get(1).getOptionalInt32());
- assertIsUnmodifiable(list);
-
- // Update 0th item
- assertEquals(0, mockParent.getInvalidationCount());
- builder.getBuilder(0).setOptionalString("foo");
- assertEquals(1, mockParent.getInvalidationCount());
- list = builder.build();
- assertEquals(2, list.size());
- assertEquals(0, list.get(0).getOptionalInt32());
- assertEquals("foo", list.get(0).getOptionalString());
- assertEquals(1, list.get(1).getOptionalInt32());
- assertIsUnmodifiable(list);
- assertEquals(1, mockParent.getInvalidationCount());
- }
-
- public void testVariousMethods() {
- TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent();
- RepeatedFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder> builder = newRepeatedFieldBuilder(mockParent);
- builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(1).build());
- builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(2).build());
- builder.addBuilder(0, TestAllTypes.getDefaultInstance())
- .setOptionalInt32(0);
- builder.addBuilder(TestAllTypes.getDefaultInstance()).setOptionalInt32(3);
-
- assertEquals(0, builder.getMessage(0).getOptionalInt32());
- assertEquals(1, builder.getMessage(1).getOptionalInt32());
- assertEquals(2, builder.getMessage(2).getOptionalInt32());
- assertEquals(3, builder.getMessage(3).getOptionalInt32());
-
- assertEquals(0, mockParent.getInvalidationCount());
- List<TestAllTypes> messages = builder.build();
- assertEquals(4, messages.size());
- assertSame(messages, builder.build()); // expect same list
-
- // Remove a message.
- builder.remove(2);
- assertEquals(1, mockParent.getInvalidationCount());
- assertEquals(3, builder.getCount());
- assertEquals(0, builder.getMessage(0).getOptionalInt32());
- assertEquals(1, builder.getMessage(1).getOptionalInt32());
- assertEquals(3, builder.getMessage(2).getOptionalInt32());
-
- // Remove a builder.
- builder.remove(0);
- assertEquals(1, mockParent.getInvalidationCount());
- assertEquals(2, builder.getCount());
- assertEquals(1, builder.getMessage(0).getOptionalInt32());
- assertEquals(3, builder.getMessage(1).getOptionalInt32());
-
- // Test clear.
- builder.clear();
- assertEquals(1, mockParent.getInvalidationCount());
- assertEquals(0, builder.getCount());
- assertTrue(builder.isEmpty());
- }
-
- public void testLists() {
- TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent();
- RepeatedFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder> builder = newRepeatedFieldBuilder(mockParent);
- builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(1).build());
- builder.addMessage(0,
- TestAllTypes.newBuilder().setOptionalInt32(0).build());
- assertEquals(0, builder.getMessage(0).getOptionalInt32());
- assertEquals(1, builder.getMessage(1).getOptionalInt32());
-
- // Use list of builders.
- List<TestAllTypes.Builder> builders = builder.getBuilderList();
- assertEquals(0, builders.get(0).getOptionalInt32());
- assertEquals(1, builders.get(1).getOptionalInt32());
- builders.get(0).setOptionalInt32(10);
- builders.get(1).setOptionalInt32(11);
-
- // Use list of protos
- List<TestAllTypes> protos = builder.getMessageList();
- assertEquals(10, protos.get(0).getOptionalInt32());
- assertEquals(11, protos.get(1).getOptionalInt32());
-
- // Add an item to the builders and verify it's updated in both
- builder.addMessage(TestAllTypes.newBuilder().setOptionalInt32(12).build());
- assertEquals(3, builders.size());
- assertEquals(3, protos.size());
- }
-
- private void assertIsUnmodifiable(List<?> list) {
- if (list == Collections.emptyList()) {
- // OKAY -- Need to check this b/c EmptyList allows you to call clear.
- } else {
- try {
- list.clear();
- fail("List wasn't immutable");
- } catch (UnsupportedOperationException e) {
- // good
- }
- }
- }
-
- private RepeatedFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder>
- newRepeatedFieldBuilder(GeneratedMessage.BuilderParent parent) {
- return new RepeatedFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder>(Collections.<TestAllTypes>emptyList(), false,
- parent, false);
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java b/java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java
deleted file mode 100644
index 212f8d6..0000000
--- a/java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import java.io.UnsupportedEncodingException;
-import java.util.Iterator;
-
-/**
- * This class tests {@link RopeByteString#substring(int, int)} by inheriting the tests from
- * {@link LiteralByteStringTest}. Only a couple of methods are overridden.
- *
- * @author carlanton@google.com (Carl Haverl)
- */
-public class RopeByteStringSubstringTest extends LiteralByteStringTest {
-
- @Override
- protected void setUp() throws Exception {
- classUnderTest = "RopeByteString";
- byte[] sourceBytes = ByteStringTest.getTestBytes(22341, 22337766L);
- Iterator<ByteString> iter = ByteStringTest.makeConcretePieces(sourceBytes).iterator();
- ByteString sourceString = iter.next();
- while (iter.hasNext()) {
- sourceString = sourceString.concat(iter.next());
- }
-
- int from = 1130;
- int to = sourceBytes.length - 5555;
- stringUnderTest = sourceString.substring(from, to);
- referenceBytes = new byte[to - from];
- System.arraycopy(sourceBytes, from, referenceBytes, 0, to - from);
- expectedHashCode = -1259260680;
- }
-
- @Override
- public void testGetTreeDepth() {
- assertEquals(classUnderTest + " must have the expected tree depth",
- 3, stringUnderTest.getTreeDepth());
- }
-
- @Override
- public void testToString() throws UnsupportedEncodingException {
- String sourceString = "I love unicode \u1234\u5678 characters";
- ByteString sourceByteString = ByteString.copyFromUtf8(sourceString);
- int copies = 250;
-
- // By building the RopeByteString by concatenating, this is actually a fairly strenuous test.
- StringBuilder builder = new StringBuilder(copies * sourceString.length());
- ByteString unicode = ByteString.EMPTY;
- for (int i = 0; i < copies; ++i) {
- builder.append(sourceString);
- unicode = RopeByteString.concatenate(unicode, sourceByteString);
- }
- String testString = builder.toString();
-
- // Do the substring part
- testString = testString.substring(2, testString.length() - 6);
- unicode = unicode.substring(2, unicode.size() - 6);
-
- assertEquals(classUnderTest + " from string must have the expected type",
- classUnderTest, getActualClassName(unicode));
- String roundTripString = unicode.toString(UTF_8);
- assertEquals(classUnderTest + " unicode bytes must match",
- testString, roundTripString);
- ByteString flatString = ByteString.copyFromUtf8(testString);
- assertEquals(classUnderTest + " string must equal the flat string", flatString, unicode);
- assertEquals(classUnderTest + " string must must have same hashCode as the flat string",
- flatString.hashCode(), unicode.hashCode());
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/RopeByteStringTest.java b/java/src/test/java/com/google/protobuf/RopeByteStringTest.java
deleted file mode 100644
index 9676f52..0000000
--- a/java/src/test/java/com/google/protobuf/RopeByteStringTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import java.io.UnsupportedEncodingException;
-import java.util.Arrays;
-import java.util.Iterator;
-
-/**
- * This class tests {@link RopeByteString} by inheriting the tests from
- * {@link LiteralByteStringTest}. Only a couple of methods are overridden.
- *
- * <p>A full test of the result of {@link RopeByteString#substring(int, int)} is found in the
- * separate class {@link RopeByteStringSubstringTest}.
- *
- * @author carlanton@google.com (Carl Haverl)
- */
-public class RopeByteStringTest extends LiteralByteStringTest {
-
- @Override
- protected void setUp() throws Exception {
- classUnderTest = "RopeByteString";
- referenceBytes = ByteStringTest.getTestBytes(22341, 22337766L);
- Iterator<ByteString> iter = ByteStringTest.makeConcretePieces(referenceBytes).iterator();
- stringUnderTest = iter.next();
- while (iter.hasNext()) {
- stringUnderTest = stringUnderTest.concat(iter.next());
- }
- expectedHashCode = -1214197238;
- }
-
- @Override
- public void testGetTreeDepth() {
- assertEquals(classUnderTest + " must have the expected tree depth",
- 4, stringUnderTest.getTreeDepth());
- }
-
- public void testBalance() {
- int numberOfPieces = 10000;
- int pieceSize = 64;
- byte[] testBytes = ByteStringTest.getTestBytes(numberOfPieces * pieceSize, 113377L);
-
- // Build up a big ByteString from smaller pieces to force a rebalance
- ByteString concatenated = ByteString.EMPTY;
- for (int i = 0; i < numberOfPieces; ++i) {
- concatenated = concatenated.concat(ByteString.copyFrom(testBytes, i * pieceSize, pieceSize));
- }
-
- assertEquals(classUnderTest + " from string must have the expected type",
- classUnderTest, getActualClassName(concatenated));
- assertTrue(classUnderTest + " underlying bytes must match after balancing",
- Arrays.equals(testBytes, concatenated.toByteArray()));
- ByteString testString = ByteString.copyFrom(testBytes);
- assertTrue(classUnderTest + " balanced string must equal flat string",
- concatenated.equals(testString));
- assertTrue(classUnderTest + " flat string must equal balanced string",
- testString.equals(concatenated));
- assertEquals(classUnderTest + " balanced string must have same hash code as flat string",
- testString.hashCode(), concatenated.hashCode());
- }
-
- @Override
- public void testToString() throws UnsupportedEncodingException {
- String sourceString = "I love unicode \u1234\u5678 characters";
- ByteString sourceByteString = ByteString.copyFromUtf8(sourceString);
- int copies = 250;
-
- // By building the RopeByteString by concatenating, this is actually a fairly strenuous test.
- StringBuilder builder = new StringBuilder(copies * sourceString.length());
- ByteString unicode = ByteString.EMPTY;
- for (int i = 0; i < copies; ++i) {
- builder.append(sourceString);
- unicode = RopeByteString.concatenate(unicode, sourceByteString);
- }
- String testString = builder.toString();
-
- assertEquals(classUnderTest + " from string must have the expected type",
- classUnderTest, getActualClassName(unicode));
- String roundTripString = unicode.toString(UTF_8);
- assertEquals(classUnderTest + " unicode bytes must match",
- testString, roundTripString);
- ByteString flatString = ByteString.copyFromUtf8(testString);
- assertEquals(classUnderTest + " string must equal the flat string", flatString, unicode);
- assertEquals(classUnderTest + " string must must have same hashCode as the flat string",
- flatString.hashCode(), unicode.hashCode());
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/ServiceTest.java b/java/src/test/java/com/google/protobuf/ServiceTest.java
index ff980d6..e10322d 100644
--- a/java/src/test/java/com/google/protobuf/ServiceTest.java
+++ b/java/src/test/java/com/google/protobuf/ServiceTest.java
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -205,6 +205,12 @@ public class ServiceTest extends TestCase {
MethodDescriptor fooMethod =
ServiceWithNoOuter.getDescriptor().findMethodByName("Foo");
MessageWithNoOuter request = MessageWithNoOuter.getDefaultInstance();
+ RpcCallback<Message> callback = new RpcCallback<Message>() {
+ public void run(Message parameter) {
+ // No reason this should be run.
+ fail();
+ }
+ };
TestAllTypes expectedResponse = TestAllTypes.getDefaultInstance();
EasyMock.expect(impl.foo(EasyMock.same(controller), EasyMock.same(request)))
@@ -244,14 +250,6 @@ public class ServiceTest extends TestCase {
// make assumptions, so I'm just going to accept any character as the
// separator.
assertTrue(fullName.startsWith(outerName));
-
- if (!Service.class.isAssignableFrom(innerClass) &&
- !Message.class.isAssignableFrom(innerClass) &&
- !ProtocolMessageEnum.class.isAssignableFrom(innerClass)) {
- // Ignore any classes not generated by the base code generator.
- continue;
- }
-
innerClassNames.add(fullName.substring(outerName.length() + 1));
}
diff --git a/java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java b/java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java
deleted file mode 100644
index 58b8000..0000000
--- a/java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java
+++ /dev/null
@@ -1,155 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import protobuf_unittest.UnittestProto.TestAllTypes;
-import protobuf_unittest.UnittestProto.TestAllTypesOrBuilder;
-
-import junit.framework.TestCase;
-
-/**
- * Tests for {@link SingleFieldBuilder}. This tests basic functionality.
- * More extensive testing is provided via other tests that exercise the
- * builder.
- *
- * @author jonp@google.com (Jon Perlow)
- */
-public class SingleFieldBuilderTest extends TestCase {
-
- public void testBasicUseAndInvalidations() {
- TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent();
- SingleFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder> builder =
- new SingleFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder>(
- TestAllTypes.getDefaultInstance(),
- mockParent,
- false);
- assertSame(TestAllTypes.getDefaultInstance(), builder.getMessage());
- assertEquals(TestAllTypes.getDefaultInstance(),
- builder.getBuilder().buildPartial());
- assertEquals(0, mockParent.getInvalidationCount());
-
- builder.getBuilder().setOptionalInt32(10);
- assertEquals(0, mockParent.getInvalidationCount());
- TestAllTypes message = builder.build();
- assertEquals(10, message.getOptionalInt32());
-
- // Test that we receive invalidations now that build has been called.
- assertEquals(0, mockParent.getInvalidationCount());
- builder.getBuilder().setOptionalInt32(20);
- assertEquals(1, mockParent.getInvalidationCount());
-
- // Test that we don't keep getting invalidations on every change
- builder.getBuilder().setOptionalInt32(30);
- assertEquals(1, mockParent.getInvalidationCount());
-
- }
-
- public void testSetMessage() {
- TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent();
- SingleFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder> builder =
- new SingleFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder>(
- TestAllTypes.getDefaultInstance(),
- mockParent,
- false);
- builder.setMessage(TestAllTypes.newBuilder().setOptionalInt32(0).build());
- assertEquals(0, builder.getMessage().getOptionalInt32());
-
- // Update message using the builder
- builder.getBuilder().setOptionalInt32(1);
- assertEquals(0, mockParent.getInvalidationCount());
- assertEquals(1, builder.getBuilder().getOptionalInt32());
- assertEquals(1, builder.getMessage().getOptionalInt32());
- builder.build();
- builder.getBuilder().setOptionalInt32(2);
- assertEquals(2, builder.getBuilder().getOptionalInt32());
- assertEquals(2, builder.getMessage().getOptionalInt32());
-
- // Make sure message stays cached
- assertSame(builder.getMessage(), builder.getMessage());
- }
-
- public void testClear() {
- TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent();
- SingleFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder> builder =
- new SingleFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder>(
- TestAllTypes.getDefaultInstance(),
- mockParent,
- false);
- builder.setMessage(TestAllTypes.newBuilder().setOptionalInt32(0).build());
- assertNotSame(TestAllTypes.getDefaultInstance(), builder.getMessage());
- builder.clear();
- assertSame(TestAllTypes.getDefaultInstance(), builder.getMessage());
-
- builder.getBuilder().setOptionalInt32(1);
- assertNotSame(TestAllTypes.getDefaultInstance(), builder.getMessage());
- builder.clear();
- assertSame(TestAllTypes.getDefaultInstance(), builder.getMessage());
- }
-
- public void testMerge() {
- TestUtil.MockBuilderParent mockParent = new TestUtil.MockBuilderParent();
- SingleFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder> builder =
- new SingleFieldBuilder<TestAllTypes, TestAllTypes.Builder,
- TestAllTypesOrBuilder>(
- TestAllTypes.getDefaultInstance(),
- mockParent,
- false);
-
- // Merge into default field.
- builder.mergeFrom(TestAllTypes.getDefaultInstance());
- assertSame(TestAllTypes.getDefaultInstance(), builder.getMessage());
-
- // Merge into non-default field on existing builder.
- builder.getBuilder().setOptionalInt32(2);
- builder.mergeFrom(TestAllTypes.newBuilder()
- .setOptionalDouble(4.0)
- .buildPartial());
- assertEquals(2, builder.getMessage().getOptionalInt32());
- assertEquals(4.0, builder.getMessage().getOptionalDouble());
-
- // Merge into non-default field on existing message
- builder.setMessage(TestAllTypes.newBuilder()
- .setOptionalInt32(10)
- .buildPartial());
- builder.mergeFrom(TestAllTypes.newBuilder()
- .setOptionalDouble(5.0)
- .buildPartial());
- assertEquals(10, builder.getMessage().getOptionalInt32());
- assertEquals(5.0, builder.getMessage().getOptionalDouble());
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java b/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java
deleted file mode 100644
index 366086d..0000000
--- a/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java
+++ /dev/null
@@ -1,420 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import junit.framework.TestCase;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-
-/**
- * @author darick@google.com Darick Tong
- */
-public class SmallSortedMapTest extends TestCase {
- // java.util.AbstractMap.SimpleEntry is private in JDK 1.5. We re-implement it
- // here for JDK 1.5 users.
- private static class SimpleEntry<K, V> implements Map.Entry<K, V> {
- private final K key;
- private V value;
-
- SimpleEntry(K key, V value) {
- this.key = key;
- this.value = value;
- }
-
- public K getKey() {
- return key;
- }
-
- public V getValue() {
- return value;
- }
-
- public V setValue(V value) {
- V oldValue = this.value;
- this.value = value;
- return oldValue;
- }
-
- private static boolean eq(Object o1, Object o2) {
- return o1 == null ? o2 == null : o1.equals(o2);
- }
-
- @Override
- public boolean equals(Object o) {
- if (!(o instanceof Map.Entry))
- return false;
- Map.Entry e = (Map.Entry) o;
- return eq(key, e.getKey()) && eq(value, e.getValue());
- }
-
- @Override
- public int hashCode() {
- return ((key == null) ? 0 : key.hashCode()) ^
- ((value == null) ? 0 : value.hashCode());
- }
- }
-
- public void testPutAndGetArrayEntriesOnly() {
- runPutAndGetTest(3);
- }
-
- public void testPutAndGetOverflowEntries() {
- runPutAndGetTest(6);
- }
-
- private void runPutAndGetTest(int numElements) {
- // Test with even and odd arraySize
- SmallSortedMap<Integer, Integer> map1 =
- SmallSortedMap.newInstanceForTest(3);
- SmallSortedMap<Integer, Integer> map2 =
- SmallSortedMap.newInstanceForTest(4);
- SmallSortedMap<Integer, Integer> map3 =
- SmallSortedMap.newInstanceForTest(3);
- SmallSortedMap<Integer, Integer> map4 =
- SmallSortedMap.newInstanceForTest(4);
-
- // Test with puts in ascending order.
- for (int i = 0; i < numElements; i++) {
- assertNull(map1.put(i, i + 1));
- assertNull(map2.put(i, i + 1));
- }
- // Test with puts in descending order.
- for (int i = numElements - 1; i >= 0; i--) {
- assertNull(map3.put(i, i + 1));
- assertNull(map4.put(i, i + 1));
- }
-
- assertEquals(Math.min(3, numElements), map1.getNumArrayEntries());
- assertEquals(Math.min(4, numElements), map2.getNumArrayEntries());
- assertEquals(Math.min(3, numElements), map3.getNumArrayEntries());
- assertEquals(Math.min(4, numElements), map4.getNumArrayEntries());
-
- List<SmallSortedMap<Integer, Integer>> allMaps =
- new ArrayList<SmallSortedMap<Integer, Integer>>();
- allMaps.add(map1);
- allMaps.add(map2);
- allMaps.add(map3);
- allMaps.add(map4);
-
- for (SmallSortedMap<Integer, Integer> map : allMaps) {
- assertEquals(numElements, map.size());
- for (int i = 0; i < numElements; i++) {
- assertEquals(new Integer(i + 1), map.get(i));
- }
- }
-
- assertEquals(map1, map2);
- assertEquals(map2, map3);
- assertEquals(map3, map4);
- }
-
- public void testReplacingPut() {
- SmallSortedMap<Integer, Integer> map = SmallSortedMap.newInstanceForTest(3);
- for (int i = 0; i < 6; i++) {
- assertNull(map.put(i, i + 1));
- assertNull(map.remove(i + 1));
- }
- for (int i = 0; i < 6; i++) {
- assertEquals(new Integer(i + 1), map.put(i, i + 2));
- }
- }
-
- public void testRemove() {
- SmallSortedMap<Integer, Integer> map = SmallSortedMap.newInstanceForTest(3);
- for (int i = 0; i < 6; i++) {
- assertNull(map.put(i, i + 1));
- assertNull(map.remove(i + 1));
- }
-
- assertEquals(3, map.getNumArrayEntries());
- assertEquals(3, map.getNumOverflowEntries());
- assertEquals(6, map.size());
- assertEquals(makeSortedKeySet(0, 1, 2, 3, 4, 5), map.keySet());
-
- assertEquals(new Integer(2), map.remove(1));
- assertEquals(3, map.getNumArrayEntries());
- assertEquals(2, map.getNumOverflowEntries());
- assertEquals(5, map.size());
- assertEquals(makeSortedKeySet(0, 2, 3, 4, 5), map.keySet());
-
- assertEquals(new Integer(5), map.remove(4));
- assertEquals(3, map.getNumArrayEntries());
- assertEquals(1, map.getNumOverflowEntries());
- assertEquals(4, map.size());
- assertEquals(makeSortedKeySet(0, 2, 3, 5), map.keySet());
-
- assertEquals(new Integer(4), map.remove(3));
- assertEquals(3, map.getNumArrayEntries());
- assertEquals(0, map.getNumOverflowEntries());
- assertEquals(3, map.size());
- assertEquals(makeSortedKeySet(0, 2, 5), map.keySet());
-
- assertNull(map.remove(3));
- assertEquals(3, map.getNumArrayEntries());
- assertEquals(0, map.getNumOverflowEntries());
- assertEquals(3, map.size());
-
- assertEquals(new Integer(1), map.remove(0));
- assertEquals(2, map.getNumArrayEntries());
- assertEquals(0, map.getNumOverflowEntries());
- assertEquals(2, map.size());
- }
-
- public void testClear() {
- SmallSortedMap<Integer, Integer> map = SmallSortedMap.newInstanceForTest(3);
- for (int i = 0; i < 6; i++) {
- assertNull(map.put(i, i + 1));
- }
- map.clear();
- assertEquals(0, map.getNumArrayEntries());
- assertEquals(0, map.getNumOverflowEntries());
- assertEquals(0, map.size());
- }
-
- public void testGetArrayEntryAndOverflowEntries() {
- SmallSortedMap<Integer, Integer> map = SmallSortedMap.newInstanceForTest(3);
- for (int i = 0; i < 6; i++) {
- assertNull(map.put(i, i + 1));
- }
- assertEquals(3, map.getNumArrayEntries());
- for (int i = 0; i < 3; i++) {
- Map.Entry<Integer, Integer> entry = map.getArrayEntryAt(i);
- assertEquals(new Integer(i), entry.getKey());
- assertEquals(new Integer(i + 1), entry.getValue());
- }
- Iterator<Map.Entry<Integer, Integer>> it =
- map.getOverflowEntries().iterator();
- for (int i = 3; i < 6; i++) {
- assertTrue(it.hasNext());
- Map.Entry<Integer, Integer> entry = it.next();
- assertEquals(new Integer(i), entry.getKey());
- assertEquals(new Integer(i + 1), entry.getValue());
- }
- assertFalse(it.hasNext());
- }
-
- public void testEntrySetContains() {
- SmallSortedMap<Integer, Integer> map = SmallSortedMap.newInstanceForTest(3);
- for (int i = 0; i < 6; i++) {
- assertNull(map.put(i, i + 1));
- }
- Set<Map.Entry<Integer, Integer>> entrySet = map.entrySet();
- for (int i = 0; i < 6; i++) {
- assertTrue(
- entrySet.contains(new SimpleEntry<Integer, Integer>(i, i + 1)));
- assertFalse(
- entrySet.contains(new SimpleEntry<Integer, Integer>(i, i)));
- }
- }
-
- public void testEntrySetAdd() {
- SmallSortedMap<Integer, Integer> map = SmallSortedMap.newInstanceForTest(3);
- Set<Map.Entry<Integer, Integer>> entrySet = map.entrySet();
- for (int i = 0; i < 6; i++) {
- Map.Entry<Integer, Integer> entry =
- new SimpleEntry<Integer, Integer>(i, i + 1);
- assertTrue(entrySet.add(entry));
- assertFalse(entrySet.add(entry));
- }
- for (int i = 0; i < 6; i++) {
- assertEquals(new Integer(i + 1), map.get(i));
- }
- assertEquals(3, map.getNumArrayEntries());
- assertEquals(3, map.getNumOverflowEntries());
- assertEquals(6, map.size());
- }
-
- public void testEntrySetRemove() {
- SmallSortedMap<Integer, Integer> map = SmallSortedMap.newInstanceForTest(3);
- Set<Map.Entry<Integer, Integer>> entrySet = map.entrySet();
- for (int i = 0; i < 6; i++) {
- assertNull(map.put(i, i + 1));
- }
- for (int i = 0; i < 6; i++) {
- Map.Entry<Integer, Integer> entry =
- new SimpleEntry<Integer, Integer>(i, i + 1);
- assertTrue(entrySet.remove(entry));
- assertFalse(entrySet.remove(entry));
- }
- assertTrue(map.isEmpty());
- assertEquals(0, map.getNumArrayEntries());
- assertEquals(0, map.getNumOverflowEntries());
- assertEquals(0, map.size());
- }
-
- public void testEntrySetClear() {
- SmallSortedMap<Integer, Integer> map = SmallSortedMap.newInstanceForTest(3);
- for (int i = 0; i < 6; i++) {
- assertNull(map.put(i, i + 1));
- }
- map.entrySet().clear();
- assertTrue(map.isEmpty());
- assertEquals(0, map.getNumArrayEntries());
- assertEquals(0, map.getNumOverflowEntries());
- assertEquals(0, map.size());
- }
-
- public void testEntrySetIteratorNext() {
- SmallSortedMap<Integer, Integer> map = SmallSortedMap.newInstanceForTest(3);
- for (int i = 0; i < 6; i++) {
- assertNull(map.put(i, i + 1));
- }
- Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator();
- for (int i = 0; i < 6; i++) {
- assertTrue(it.hasNext());
- Map.Entry<Integer, Integer> entry = it.next();
- assertEquals(new Integer(i), entry.getKey());
- assertEquals(new Integer(i + 1), entry.getValue());
- }
- assertFalse(it.hasNext());
- }
-
- public void testEntrySetIteratorRemove() {
- SmallSortedMap<Integer, Integer> map = SmallSortedMap.newInstanceForTest(3);
- for (int i = 0; i < 6; i++) {
- assertNull(map.put(i, i + 1));
- }
- Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator();
- for (int i = 0; i < 6; i++) {
- assertTrue(map.containsKey(i));
- it.next();
- it.remove();
- assertFalse(map.containsKey(i));
- assertEquals(6 - i - 1, map.size());
- }
- }
-
- public void testMapEntryModification() {
- SmallSortedMap<Integer, Integer> map = SmallSortedMap.newInstanceForTest(3);
- for (int i = 0; i < 6; i++) {
- assertNull(map.put(i, i + 1));
- }
- Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator();
- for (int i = 0; i < 6; i++) {
- Map.Entry<Integer, Integer> entry = it.next();
- entry.setValue(i + 23);
- }
- for (int i = 0; i < 6; i++) {
- assertEquals(new Integer(i + 23), map.get(i));
- }
- }
-
- public void testMakeImmutable() {
- SmallSortedMap<Integer, Integer> map = SmallSortedMap.newInstanceForTest(3);
- for (int i = 0; i < 6; i++) {
- assertNull(map.put(i, i + 1));
- }
- map.makeImmutable();
- assertEquals(new Integer(1), map.get(0));
- assertEquals(6, map.size());
-
- try {
- map.put(23, 23);
- fail("Expected UnsupportedOperationException");
- } catch (UnsupportedOperationException expected) {
- }
-
- Map<Integer, Integer> other = new HashMap<Integer, Integer>();
- other.put(23, 23);
- try {
- map.putAll(other);
- fail("Expected UnsupportedOperationException");
- } catch (UnsupportedOperationException expected) {
- }
-
- try {
- map.remove(0);
- fail("Expected UnsupportedOperationException");
- } catch (UnsupportedOperationException expected) {
- }
-
- try {
- map.clear();
- fail("Expected UnsupportedOperationException");
- } catch (UnsupportedOperationException expected) {
- }
-
- Set<Map.Entry<Integer, Integer>> entrySet = map.entrySet();
- try {
- entrySet.clear();
- fail("Expected UnsupportedOperationException");
- } catch (UnsupportedOperationException expected) {
- }
-
- Iterator<Map.Entry<Integer, Integer>> it = entrySet.iterator();
- while (it.hasNext()) {
- Map.Entry<Integer, Integer> entry = it.next();
- try {
- entry.setValue(0);
- fail("Expected UnsupportedOperationException");
- } catch (UnsupportedOperationException expected) {
- }
- try {
- it.remove();
- fail("Expected UnsupportedOperationException");
- } catch (UnsupportedOperationException expected) {
- }
- }
-
- Set<Integer> keySet = map.keySet();
- try {
- keySet.clear();
- fail("Expected UnsupportedOperationException");
- } catch (UnsupportedOperationException expected) {
- }
-
- Iterator<Integer> keys = keySet.iterator();
- while (keys.hasNext()) {
- Integer key = keys.next();
- try {
- keySet.remove(key);
- fail("Expected UnsupportedOperationException");
- } catch (UnsupportedOperationException expected) {
- }
- try {
- keys.remove();
- fail("Expected UnsupportedOperationException");
- } catch (UnsupportedOperationException expected) {
- }
- }
- }
-
- private Set<Integer> makeSortedKeySet(Integer... keys) {
- return new TreeSet<Integer>(Arrays.<Integer>asList(keys));
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/TestBadIdentifiers.java b/java/src/test/java/com/google/protobuf/TestBadIdentifiers.java
deleted file mode 100644
index 614ac7f..0000000
--- a/java/src/test/java/com/google/protobuf/TestBadIdentifiers.java
+++ /dev/null
@@ -1,96 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import junit.framework.TestCase;
-
-/**
- * Tests that proto2 api generation doesn't cause compile errors when
- * compiling protocol buffers that have names that would otherwise conflict
- * if not fully qualified (like @Deprecated and @Override).
- *
- * @author jonp@google.com (Jon Perlow)
- */
-public class TestBadIdentifiers extends TestCase {
-
- public void testCompilation() {
- // If this compiles, it means the generation was correct.
- TestBadIdentifiersProto.Deprecated.newBuilder();
- TestBadIdentifiersProto.Override.newBuilder();
- }
-
- public void testGetDescriptor() {
- Descriptors.FileDescriptor fileDescriptor =
- TestBadIdentifiersProto.getDescriptor();
- String descriptorField = TestBadIdentifiersProto.Descriptor
- .getDefaultInstance().getDescriptor();
- Descriptors.Descriptor protoDescriptor = TestBadIdentifiersProto.Descriptor
- .getDefaultInstance().getDescriptorForType();
- String nestedDescriptorField = TestBadIdentifiersProto.Descriptor
- .NestedDescriptor.getDefaultInstance().getDescriptor();
- Descriptors.Descriptor nestedProtoDescriptor = TestBadIdentifiersProto
- .Descriptor.NestedDescriptor.getDefaultInstance()
- .getDescriptorForType();
- }
-
- public void testConflictingFieldNames() throws Exception {
- TestBadIdentifiersProto.TestConflictingFieldNames message =
- TestBadIdentifiersProto.TestConflictingFieldNames.getDefaultInstance();
- // Make sure generated accessors are properly named.
- assertEquals(0, message.getInt32Field1Count());
- assertEquals(0, message.getEnumField2Count());
- assertEquals(0, message.getStringField3Count());
- assertEquals(0, message.getBytesField4Count());
- assertEquals(0, message.getMessageField5Count());
-
- assertEquals(0, message.getInt32FieldCount11());
- assertEquals(1, message.getEnumFieldCount12().getNumber());
- assertEquals("", message.getStringFieldCount13());
- assertEquals(ByteString.EMPTY, message.getBytesFieldCount14());
- assertEquals(0, message.getMessageFieldCount15().getSerializedSize());
-
- assertEquals(0, message.getInt32Field21Count());
- assertEquals(0, message.getEnumField22Count());
- assertEquals(0, message.getStringField23Count());
- assertEquals(0, message.getBytesField24Count());
- assertEquals(0, message.getMessageField25Count());
-
- assertEquals(0, message.getInt32Field1List().size());
- assertEquals(0, message.getInt32FieldList31());
-
- assertEquals(0, message.getInt64FieldCount());
- assertEquals(0L, message.getExtension(
- TestBadIdentifiersProto.TestConflictingFieldNames.int64FieldCount).longValue());
- assertEquals(0L, message.getExtension(
- TestBadIdentifiersProto.TestConflictingFieldNames.int64FieldList).longValue());
-
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/TestUtil.java b/java/src/test/java/com/google/protobuf/TestUtil.java
index 135a117..2b8b2af 100644
--- a/java/src/test/java/com/google/protobuf/TestUtil.java
+++ b/java/src/test/java/com/google/protobuf/TestUtil.java
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -56,11 +56,6 @@ import static protobuf_unittest.UnittestProto.defaultImportEnumExtension;
import static protobuf_unittest.UnittestProto.defaultStringPieceExtension;
import static protobuf_unittest.UnittestProto.defaultCordExtension;
-import static protobuf_unittest.UnittestProto.oneofUint32Extension;
-import static protobuf_unittest.UnittestProto.oneofNestedMessageExtension;
-import static protobuf_unittest.UnittestProto.oneofStringExtension;
-import static protobuf_unittest.UnittestProto.oneofBytesExtension;
-
import static protobuf_unittest.UnittestProto.optionalInt32Extension;
import static protobuf_unittest.UnittestProto.optionalInt64Extension;
import static protobuf_unittest.UnittestProto.optionalUint32Extension;
@@ -77,16 +72,14 @@ import static protobuf_unittest.UnittestProto.optionalBoolExtension;
import static protobuf_unittest.UnittestProto.optionalStringExtension;
import static protobuf_unittest.UnittestProto.optionalBytesExtension;
import static protobuf_unittest.UnittestProto.optionalGroupExtension;
-import static protobuf_unittest.UnittestProto.optionalCordExtension;
-import static protobuf_unittest.UnittestProto.optionalForeignEnumExtension;
+import static protobuf_unittest.UnittestProto.optionalNestedMessageExtension;
import static protobuf_unittest.UnittestProto.optionalForeignMessageExtension;
-import static protobuf_unittest.UnittestProto.optionalImportEnumExtension;
import static protobuf_unittest.UnittestProto.optionalImportMessageExtension;
import static protobuf_unittest.UnittestProto.optionalNestedEnumExtension;
-import static protobuf_unittest.UnittestProto.optionalNestedMessageExtension;
-import static protobuf_unittest.UnittestProto.optionalPublicImportMessageExtension;
-import static protobuf_unittest.UnittestProto.optionalLazyMessageExtension;
+import static protobuf_unittest.UnittestProto.optionalForeignEnumExtension;
+import static protobuf_unittest.UnittestProto.optionalImportEnumExtension;
import static protobuf_unittest.UnittestProto.optionalStringPieceExtension;
+import static protobuf_unittest.UnittestProto.optionalCordExtension;
import static protobuf_unittest.UnittestProto.repeatedInt32Extension;
import static protobuf_unittest.UnittestProto.repeatedInt64Extension;
@@ -107,7 +100,6 @@ import static protobuf_unittest.UnittestProto.repeatedGroupExtension;
import static protobuf_unittest.UnittestProto.repeatedNestedMessageExtension;
import static protobuf_unittest.UnittestProto.repeatedForeignMessageExtension;
import static protobuf_unittest.UnittestProto.repeatedImportMessageExtension;
-import static protobuf_unittest.UnittestProto.repeatedLazyMessageExtension;
import static protobuf_unittest.UnittestProto.repeatedNestedEnumExtension;
import static protobuf_unittest.UnittestProto.repeatedForeignEnumExtension;
import static protobuf_unittest.UnittestProto.repeatedImportEnumExtension;
@@ -153,11 +145,6 @@ import static com.google.protobuf.UnittestLite.defaultImportEnumExtensionLite;
import static com.google.protobuf.UnittestLite.defaultStringPieceExtensionLite;
import static com.google.protobuf.UnittestLite.defaultCordExtensionLite;
-import static com.google.protobuf.UnittestLite.oneofUint32ExtensionLite;
-import static com.google.protobuf.UnittestLite.oneofNestedMessageExtensionLite;
-import static com.google.protobuf.UnittestLite.oneofStringExtensionLite;
-import static com.google.protobuf.UnittestLite.oneofBytesExtensionLite;
-
import static com.google.protobuf.UnittestLite.optionalInt32ExtensionLite;
import static com.google.protobuf.UnittestLite.optionalInt64ExtensionLite;
import static com.google.protobuf.UnittestLite.optionalUint32ExtensionLite;
@@ -175,13 +162,11 @@ import static com.google.protobuf.UnittestLite.optionalStringExtensionLite;
import static com.google.protobuf.UnittestLite.optionalBytesExtensionLite;
import static com.google.protobuf.UnittestLite.optionalGroupExtensionLite;
import static com.google.protobuf.UnittestLite.optionalNestedMessageExtensionLite;
-import static com.google.protobuf.UnittestLite.optionalForeignEnumExtensionLite;
import static com.google.protobuf.UnittestLite.optionalForeignMessageExtensionLite;
-import static com.google.protobuf.UnittestLite.optionalImportEnumExtensionLite;
import static com.google.protobuf.UnittestLite.optionalImportMessageExtensionLite;
import static com.google.protobuf.UnittestLite.optionalNestedEnumExtensionLite;
-import static com.google.protobuf.UnittestLite.optionalPublicImportMessageExtensionLite;
-import static com.google.protobuf.UnittestLite.optionalLazyMessageExtensionLite;
+import static com.google.protobuf.UnittestLite.optionalForeignEnumExtensionLite;
+import static com.google.protobuf.UnittestLite.optionalImportEnumExtensionLite;
import static com.google.protobuf.UnittestLite.optionalStringPieceExtensionLite;
import static com.google.protobuf.UnittestLite.optionalCordExtensionLite;
@@ -204,7 +189,6 @@ import static com.google.protobuf.UnittestLite.repeatedGroupExtensionLite;
import static com.google.protobuf.UnittestLite.repeatedNestedMessageExtensionLite;
import static com.google.protobuf.UnittestLite.repeatedForeignMessageExtensionLite;
import static com.google.protobuf.UnittestLite.repeatedImportMessageExtensionLite;
-import static com.google.protobuf.UnittestLite.repeatedLazyMessageExtensionLite;
import static com.google.protobuf.UnittestLite.repeatedNestedEnumExtensionLite;
import static com.google.protobuf.UnittestLite.repeatedForeignEnumExtensionLite;
import static com.google.protobuf.UnittestLite.repeatedImportEnumExtensionLite;
@@ -230,28 +214,22 @@ import static com.google.protobuf.UnittestLite.packedBoolExtensionLite;
import static com.google.protobuf.UnittestLite.packedEnumExtensionLite;
import protobuf_unittest.UnittestProto.TestAllExtensions;
-import protobuf_unittest.UnittestProto.TestAllExtensionsOrBuilder;
import protobuf_unittest.UnittestProto.TestAllTypes;
-import protobuf_unittest.UnittestProto.TestAllTypesOrBuilder;
-import protobuf_unittest.UnittestProto.TestOneof2;
import protobuf_unittest.UnittestProto.TestPackedExtensions;
import protobuf_unittest.UnittestProto.TestPackedTypes;
import protobuf_unittest.UnittestProto.TestUnpackedTypes;
import protobuf_unittest.UnittestProto.ForeignMessage;
import protobuf_unittest.UnittestProto.ForeignEnum;
-import com.google.protobuf.test.UnittestImport.ImportEnum;
import com.google.protobuf.test.UnittestImport.ImportMessage;
-import com.google.protobuf.test.UnittestImportPublic.PublicImportMessage;
+import com.google.protobuf.test.UnittestImport.ImportEnum;
import com.google.protobuf.UnittestLite.TestAllTypesLite;
import com.google.protobuf.UnittestLite.TestAllExtensionsLite;
-import com.google.protobuf.UnittestLite.TestAllExtensionsLiteOrBuilder;
import com.google.protobuf.UnittestLite.TestPackedExtensionsLite;
import com.google.protobuf.UnittestLite.ForeignMessageLite;
import com.google.protobuf.UnittestLite.ForeignEnumLite;
-import com.google.protobuf.UnittestImportLite.ImportEnumLite;
import com.google.protobuf.UnittestImportLite.ImportMessageLite;
-import com.google.protobuf.UnittestImportPublicLite.PublicImportMessageLite;
+import com.google.protobuf.UnittestImportLite.ImportEnumLite;
import junit.framework.Assert;
@@ -261,17 +239,14 @@ import java.io.RandomAccessFile;
/**
* Contains methods for setting all fields of {@code TestAllTypes} to
- * some values as well as checking that all the fields are set to those values.
+ * some vaules as well as checking that all the fields are set to those values.
* These are useful for testing various protocol message features, e.g.
* set all fields of a message, serialize it, parse it, and check that all
* fields are set.
*
- * <p>This code is not to be used outside of {@code com.google.protobuf} and
- * subpackages.
- *
* @author kenton@google.com Kenton Varda
*/
-public final class TestUtil {
+class TestUtil {
private TestUtil() {}
/** Helper to convert a String to ByteString. */
@@ -294,16 +269,6 @@ public final class TestUtil {
}
/**
- * Get a {@code TestAllTypes.Builder} with all fields set as they would be by
- * {@link #setAllFields(TestAllTypes.Builder)}.
- */
- public static TestAllTypes.Builder getAllSetBuilder() {
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- setAllFields(builder);
- return builder;
- }
-
- /**
* Get a {@code TestAllExtensions} with all fields set as they would be by
* {@link #setAllExtensions(TestAllExtensions.Builder)}.
*/
@@ -373,10 +338,6 @@ public final class TestUtil {
ForeignMessage.newBuilder().setC(119).build());
message.setOptionalImportMessage(
ImportMessage.newBuilder().setD(120).build());
- message.setOptionalPublicImportMessage(
- PublicImportMessage.newBuilder().setE(126).build());
- message.setOptionalLazyMessage(
- TestAllTypes.NestedMessage.newBuilder().setBb(127).build());
message.setOptionalNestedEnum (TestAllTypes.NestedEnum.BAZ);
message.setOptionalForeignEnum(ForeignEnum.FOREIGN_BAZ);
@@ -411,8 +372,6 @@ public final class TestUtil {
ForeignMessage.newBuilder().setC(219).build());
message.addRepeatedImportMessage(
ImportMessage.newBuilder().setD(220).build());
- message.addRepeatedLazyMessage(
- TestAllTypes.NestedMessage.newBuilder().setBb(227).build());
message.addRepeatedNestedEnum (TestAllTypes.NestedEnum.BAR);
message.addRepeatedForeignEnum(ForeignEnum.FOREIGN_BAR);
@@ -446,8 +405,6 @@ public final class TestUtil {
ForeignMessage.newBuilder().setC(319).build());
message.addRepeatedImportMessage(
ImportMessage.newBuilder().setD(320).build());
- message.addRepeatedLazyMessage(
- TestAllTypes.NestedMessage.newBuilder().setBb(327).build());
message.addRepeatedNestedEnum (TestAllTypes.NestedEnum.BAZ);
message.addRepeatedForeignEnum(ForeignEnum.FOREIGN_BAZ);
@@ -480,12 +437,6 @@ public final class TestUtil {
message.setDefaultStringPiece("424");
message.setDefaultCord("425");
-
- message.setOneofUint32(601);
- message.setOneofNestedMessage(
- TestAllTypes.NestedMessage.newBuilder().setBb(602).build());
- message.setOneofString("603");
- message.setOneofBytes(toBytes("604"));
}
// -------------------------------------------------------------------
@@ -519,8 +470,6 @@ public final class TestUtil {
ForeignMessage.newBuilder().setC(519).build());
message.setRepeatedImportMessage(1,
ImportMessage.newBuilder().setD(520).build());
- message.setRepeatedLazyMessage(1,
- TestAllTypes.NestedMessage.newBuilder().setBb(527).build());
message.setRepeatedNestedEnum (1, TestAllTypes.NestedEnum.FOO);
message.setRepeatedForeignEnum(1, ForeignEnum.FOREIGN_FOO);
@@ -536,7 +485,7 @@ public final class TestUtil {
* Assert (using {@code junit.framework.Assert}} that all fields of
* {@code message} are set to the values assigned by {@code setAllFields}.
*/
- public static void assertAllFieldsSet(TestAllTypesOrBuilder message) {
+ public static void assertAllFieldsSet(TestAllTypes message) {
Assert.assertTrue(message.hasOptionalInt32 ());
Assert.assertTrue(message.hasOptionalInt64 ());
Assert.assertTrue(message.hasOptionalUint32 ());
@@ -586,12 +535,10 @@ public final class TestUtil {
Assert.assertEquals("115", message.getOptionalString ());
Assert.assertEquals(toBytes("116"), message.getOptionalBytes());
- Assert.assertEquals(117, message.getOptionalGroup ().getA());
- Assert.assertEquals(118, message.getOptionalNestedMessage ().getBb());
- Assert.assertEquals(119, message.getOptionalForeignMessage ().getC());
- Assert.assertEquals(120, message.getOptionalImportMessage ().getD());
- Assert.assertEquals(126, message.getOptionalPublicImportMessage().getE());
- Assert.assertEquals(127, message.getOptionalLazyMessage ().getBb());
+ Assert.assertEquals(117, message.getOptionalGroup ().getA());
+ Assert.assertEquals(118, message.getOptionalNestedMessage ().getBb());
+ Assert.assertEquals(119, message.getOptionalForeignMessage().getC());
+ Assert.assertEquals(120, message.getOptionalImportMessage ().getD());
Assert.assertEquals(TestAllTypes.NestedEnum.BAZ, message.getOptionalNestedEnum());
Assert.assertEquals(ForeignEnum.FOREIGN_BAZ, message.getOptionalForeignEnum());
@@ -622,7 +569,6 @@ public final class TestUtil {
Assert.assertEquals(2, message.getRepeatedNestedMessageCount ());
Assert.assertEquals(2, message.getRepeatedForeignMessageCount());
Assert.assertEquals(2, message.getRepeatedImportMessageCount ());
- Assert.assertEquals(2, message.getRepeatedLazyMessageCount ());
Assert.assertEquals(2, message.getRepeatedNestedEnumCount ());
Assert.assertEquals(2, message.getRepeatedForeignEnumCount ());
Assert.assertEquals(2, message.getRepeatedImportEnumCount ());
@@ -650,7 +596,6 @@ public final class TestUtil {
Assert.assertEquals(218, message.getRepeatedNestedMessage (0).getBb());
Assert.assertEquals(219, message.getRepeatedForeignMessage(0).getC());
Assert.assertEquals(220, message.getRepeatedImportMessage (0).getD());
- Assert.assertEquals(227, message.getRepeatedLazyMessage (0).getBb());
Assert.assertEquals(TestAllTypes.NestedEnum.BAR, message.getRepeatedNestedEnum (0));
Assert.assertEquals(ForeignEnum.FOREIGN_BAR, message.getRepeatedForeignEnum(0));
@@ -679,7 +624,6 @@ public final class TestUtil {
Assert.assertEquals(318, message.getRepeatedNestedMessage (1).getBb());
Assert.assertEquals(319, message.getRepeatedForeignMessage(1).getC());
Assert.assertEquals(320, message.getRepeatedImportMessage (1).getD());
- Assert.assertEquals(327, message.getRepeatedLazyMessage (1).getBb());
Assert.assertEquals(TestAllTypes.NestedEnum.BAZ, message.getRepeatedNestedEnum (1));
Assert.assertEquals(ForeignEnum.FOREIGN_BAZ, message.getRepeatedForeignEnum(1));
@@ -735,22 +679,16 @@ public final class TestUtil {
Assert.assertEquals("424", message.getDefaultStringPiece());
Assert.assertEquals("425", message.getDefaultCord());
-
- Assert.assertFalse(message.hasOneofUint32());
- Assert.assertFalse(message.hasOneofNestedMessage());
- Assert.assertFalse(message.hasOneofString());
- Assert.assertTrue(message.hasOneofBytes());
-
- Assert.assertEquals(toBytes("604"), message.getOneofBytes());
}
// -------------------------------------------------------------------
+
/**
* Assert (using {@code junit.framework.Assert}} that all fields of
* {@code message} are cleared, and that getting the fields returns their
* default values.
*/
- public static void assertClear(TestAllTypesOrBuilder message) {
+ public static void assertClear(TestAllTypes message) {
// hasBlah() should initially be false for all optional fields.
Assert.assertFalse(message.hasOptionalInt32 ());
Assert.assertFalse(message.hasOptionalInt64 ());
@@ -798,19 +736,15 @@ public final class TestUtil {
Assert.assertEquals(ByteString.EMPTY, message.getOptionalBytes());
// Embedded messages should also be clear.
- Assert.assertFalse(message.getOptionalGroup ().hasA());
- Assert.assertFalse(message.getOptionalNestedMessage ().hasBb());
- Assert.assertFalse(message.getOptionalForeignMessage ().hasC());
- Assert.assertFalse(message.getOptionalImportMessage ().hasD());
- Assert.assertFalse(message.getOptionalPublicImportMessage().hasE());
- Assert.assertFalse(message.getOptionalLazyMessage ().hasBb());
-
- Assert.assertEquals(0, message.getOptionalGroup ().getA());
- Assert.assertEquals(0, message.getOptionalNestedMessage ().getBb());
- Assert.assertEquals(0, message.getOptionalForeignMessage ().getC());
- Assert.assertEquals(0, message.getOptionalImportMessage ().getD());
- Assert.assertEquals(0, message.getOptionalPublicImportMessage().getE());
- Assert.assertEquals(0, message.getOptionalLazyMessage ().getBb());
+ Assert.assertFalse(message.getOptionalGroup ().hasA());
+ Assert.assertFalse(message.getOptionalNestedMessage ().hasBb());
+ Assert.assertFalse(message.getOptionalForeignMessage().hasC());
+ Assert.assertFalse(message.getOptionalImportMessage ().hasD());
+
+ Assert.assertEquals(0, message.getOptionalGroup ().getA());
+ Assert.assertEquals(0, message.getOptionalNestedMessage ().getBb());
+ Assert.assertEquals(0, message.getOptionalForeignMessage().getC());
+ Assert.assertEquals(0, message.getOptionalImportMessage ().getD());
// Enums without defaults are set to the first value in the enum.
Assert.assertEquals(TestAllTypes.NestedEnum.FOO, message.getOptionalNestedEnum ());
@@ -841,7 +775,6 @@ public final class TestUtil {
Assert.assertEquals(0, message.getRepeatedNestedMessageCount ());
Assert.assertEquals(0, message.getRepeatedForeignMessageCount());
Assert.assertEquals(0, message.getRepeatedImportMessageCount ());
- Assert.assertEquals(0, message.getRepeatedLazyMessageCount ());
Assert.assertEquals(0, message.getRepeatedNestedEnumCount ());
Assert.assertEquals(0, message.getRepeatedForeignEnumCount ());
Assert.assertEquals(0, message.getRepeatedImportEnumCount ());
@@ -896,11 +829,6 @@ public final class TestUtil {
Assert.assertEquals("abc", message.getDefaultStringPiece());
Assert.assertEquals("123", message.getDefaultCord());
-
- Assert.assertFalse(message.hasOneofUint32());
- Assert.assertFalse(message.hasOneofNestedMessage());
- Assert.assertFalse(message.hasOneofString());
- Assert.assertFalse(message.hasOneofBytes());
}
// -------------------------------------------------------------------
@@ -910,8 +838,7 @@ public final class TestUtil {
* {@code message} are set to the values assigned by {@code setAllFields}
* followed by {@code modifyRepeatedFields}.
*/
- public static void assertRepeatedFieldsModified(
- TestAllTypesOrBuilder message) {
+ public static void assertRepeatedFieldsModified(TestAllTypes message) {
// ModifyRepeatedFields only sets the second repeated element of each
// field. In addition to verifying this, we also verify that the first
// element and size were *not* modified.
@@ -935,7 +862,6 @@ public final class TestUtil {
Assert.assertEquals(2, message.getRepeatedNestedMessageCount ());
Assert.assertEquals(2, message.getRepeatedForeignMessageCount());
Assert.assertEquals(2, message.getRepeatedImportMessageCount ());
- Assert.assertEquals(2, message.getRepeatedLazyMessageCount ());
Assert.assertEquals(2, message.getRepeatedNestedEnumCount ());
Assert.assertEquals(2, message.getRepeatedForeignEnumCount ());
Assert.assertEquals(2, message.getRepeatedImportEnumCount ());
@@ -963,7 +889,6 @@ public final class TestUtil {
Assert.assertEquals(218, message.getRepeatedNestedMessage (0).getBb());
Assert.assertEquals(219, message.getRepeatedForeignMessage(0).getC());
Assert.assertEquals(220, message.getRepeatedImportMessage (0).getD());
- Assert.assertEquals(227, message.getRepeatedLazyMessage (0).getBb());
Assert.assertEquals(TestAllTypes.NestedEnum.BAR, message.getRepeatedNestedEnum (0));
Assert.assertEquals(ForeignEnum.FOREIGN_BAR, message.getRepeatedForeignEnum(0));
@@ -993,7 +918,6 @@ public final class TestUtil {
Assert.assertEquals(518, message.getRepeatedNestedMessage (1).getBb());
Assert.assertEquals(519, message.getRepeatedForeignMessage(1).getC());
Assert.assertEquals(520, message.getRepeatedImportMessage (1).getD());
- Assert.assertEquals(527, message.getRepeatedLazyMessage (1).getBb());
Assert.assertEquals(TestAllTypes.NestedEnum.FOO, message.getRepeatedNestedEnum (1));
Assert.assertEquals(ForeignEnum.FOREIGN_FOO, message.getRepeatedForeignEnum(1));
@@ -1280,10 +1204,6 @@ public final class TestUtil {
ForeignMessage.newBuilder().setC(119).build());
message.setExtension(optionalImportMessageExtension,
ImportMessage.newBuilder().setD(120).build());
- message.setExtension(optionalPublicImportMessageExtension,
- PublicImportMessage.newBuilder().setE(126).build());
- message.setExtension(optionalLazyMessageExtension,
- TestAllTypes.NestedMessage.newBuilder().setBb(127).build());
message.setExtension(optionalNestedEnumExtension, TestAllTypes.NestedEnum.BAZ);
message.setExtension(optionalForeignEnumExtension, ForeignEnum.FOREIGN_BAZ);
@@ -1318,8 +1238,6 @@ public final class TestUtil {
ForeignMessage.newBuilder().setC(219).build());
message.addExtension(repeatedImportMessageExtension,
ImportMessage.newBuilder().setD(220).build());
- message.addExtension(repeatedLazyMessageExtension,
- TestAllTypes.NestedMessage.newBuilder().setBb(227).build());
message.addExtension(repeatedNestedEnumExtension, TestAllTypes.NestedEnum.BAR);
message.addExtension(repeatedForeignEnumExtension, ForeignEnum.FOREIGN_BAR);
@@ -1353,8 +1271,6 @@ public final class TestUtil {
ForeignMessage.newBuilder().setC(319).build());
message.addExtension(repeatedImportMessageExtension,
ImportMessage.newBuilder().setD(320).build());
- message.addExtension(repeatedLazyMessageExtension,
- TestAllTypes.NestedMessage.newBuilder().setBb(327).build());
message.addExtension(repeatedNestedEnumExtension, TestAllTypes.NestedEnum.BAZ);
message.addExtension(repeatedForeignEnumExtension, ForeignEnum.FOREIGN_BAZ);
@@ -1387,12 +1303,6 @@ public final class TestUtil {
message.setExtension(defaultStringPieceExtension, "424");
message.setExtension(defaultCordExtension, "425");
-
- message.setExtension(oneofUint32Extension, 601);
- message.setExtension(oneofNestedMessageExtension,
- TestAllTypes.NestedMessage.newBuilder().setBb(602).build());
- message.setExtension(oneofStringExtension, "603");
- message.setExtension(oneofBytesExtension, toBytes("604"));
}
// -------------------------------------------------------------------
@@ -1427,8 +1337,6 @@ public final class TestUtil {
ForeignMessage.newBuilder().setC(519).build());
message.setExtension(repeatedImportMessageExtension, 1,
ImportMessage.newBuilder().setD(520).build());
- message.setExtension(repeatedLazyMessageExtension, 1,
- TestAllTypes.NestedMessage.newBuilder().setBb(527).build());
message.setExtension(repeatedNestedEnumExtension , 1, TestAllTypes.NestedEnum.FOO);
message.setExtension(repeatedForeignEnumExtension, 1, ForeignEnum.FOREIGN_FOO);
@@ -1444,8 +1352,7 @@ public final class TestUtil {
* Assert (using {@code junit.framework.Assert}} that all extensions of
* {@code message} are set to the values assigned by {@code setAllExtensions}.
*/
- public static void assertAllExtensionsSet(
- TestAllExtensionsOrBuilder message) {
+ public static void assertAllExtensionsSet(TestAllExtensions message) {
Assert.assertTrue(message.hasExtension(optionalInt32Extension ));
Assert.assertTrue(message.hasExtension(optionalInt64Extension ));
Assert.assertTrue(message.hasExtension(optionalUint32Extension ));
@@ -1495,12 +1402,10 @@ public final class TestUtil {
assertEqualsExactType("115", message.getExtension(optionalStringExtension ));
assertEqualsExactType(toBytes("116"), message.getExtension(optionalBytesExtension));
- assertEqualsExactType(117, message.getExtension(optionalGroupExtension ).getA());
- assertEqualsExactType(118, message.getExtension(optionalNestedMessageExtension ).getBb());
- assertEqualsExactType(119, message.getExtension(optionalForeignMessageExtension ).getC());
- assertEqualsExactType(120, message.getExtension(optionalImportMessageExtension ).getD());
- assertEqualsExactType(126, message.getExtension(optionalPublicImportMessageExtension).getE());
- assertEqualsExactType(127, message.getExtension(optionalLazyMessageExtension ).getBb());
+ assertEqualsExactType(117, message.getExtension(optionalGroupExtension ).getA());
+ assertEqualsExactType(118, message.getExtension(optionalNestedMessageExtension ).getBb());
+ assertEqualsExactType(119, message.getExtension(optionalForeignMessageExtension).getC());
+ assertEqualsExactType(120, message.getExtension(optionalImportMessageExtension ).getD());
assertEqualsExactType(TestAllTypes.NestedEnum.BAZ,
message.getExtension(optionalNestedEnumExtension));
@@ -1534,7 +1439,6 @@ public final class TestUtil {
Assert.assertEquals(2, message.getExtensionCount(repeatedNestedMessageExtension ));
Assert.assertEquals(2, message.getExtensionCount(repeatedForeignMessageExtension));
Assert.assertEquals(2, message.getExtensionCount(repeatedImportMessageExtension ));
- Assert.assertEquals(2, message.getExtensionCount(repeatedLazyMessageExtension ));
Assert.assertEquals(2, message.getExtensionCount(repeatedNestedEnumExtension ));
Assert.assertEquals(2, message.getExtensionCount(repeatedForeignEnumExtension ));
Assert.assertEquals(2, message.getExtensionCount(repeatedImportEnumExtension ));
@@ -1562,7 +1466,6 @@ public final class TestUtil {
assertEqualsExactType(218, message.getExtension(repeatedNestedMessageExtension , 0).getBb());
assertEqualsExactType(219, message.getExtension(repeatedForeignMessageExtension, 0).getC());
assertEqualsExactType(220, message.getExtension(repeatedImportMessageExtension , 0).getD());
- assertEqualsExactType(227, message.getExtension(repeatedLazyMessageExtension , 0).getBb());
assertEqualsExactType(TestAllTypes.NestedEnum.BAR,
message.getExtension(repeatedNestedEnumExtension, 0));
@@ -1594,7 +1497,6 @@ public final class TestUtil {
assertEqualsExactType(318, message.getExtension(repeatedNestedMessageExtension , 1).getBb());
assertEqualsExactType(319, message.getExtension(repeatedForeignMessageExtension, 1).getC());
assertEqualsExactType(320, message.getExtension(repeatedImportMessageExtension , 1).getD());
- assertEqualsExactType(327, message.getExtension(repeatedLazyMessageExtension , 1).getBb());
assertEqualsExactType(TestAllTypes.NestedEnum.BAZ,
message.getExtension(repeatedNestedEnumExtension, 1));
@@ -1656,10 +1558,6 @@ public final class TestUtil {
assertEqualsExactType("424", message.getExtension(defaultStringPieceExtension));
assertEqualsExactType("425", message.getExtension(defaultCordExtension));
-
- Assert.assertTrue(message.hasExtension(oneofBytesExtension));
-
- assertEqualsExactType(toBytes("604"), message.getExtension(oneofBytesExtension));
}
// -------------------------------------------------------------------
@@ -1669,7 +1567,7 @@ public final class TestUtil {
* {@code message} are cleared, and that getting the extensions returns their
* default values.
*/
- public static void assertExtensionsClear(TestAllExtensionsOrBuilder message) {
+ public static void assertExtensionsClear(TestAllExtensions message) {
// hasBlah() should initially be false for all optional fields.
Assert.assertFalse(message.hasExtension(optionalInt32Extension ));
Assert.assertFalse(message.hasExtension(optionalInt64Extension ));
@@ -1759,7 +1657,6 @@ public final class TestUtil {
Assert.assertEquals(0, message.getExtensionCount(repeatedNestedMessageExtension ));
Assert.assertEquals(0, message.getExtensionCount(repeatedForeignMessageExtension));
Assert.assertEquals(0, message.getExtensionCount(repeatedImportMessageExtension ));
- Assert.assertEquals(0, message.getExtensionCount(repeatedLazyMessageExtension ));
Assert.assertEquals(0, message.getExtensionCount(repeatedNestedEnumExtension ));
Assert.assertEquals(0, message.getExtensionCount(repeatedForeignEnumExtension ));
Assert.assertEquals(0, message.getExtensionCount(repeatedImportEnumExtension ));
@@ -1788,7 +1685,6 @@ public final class TestUtil {
Assert.assertEquals(0, message.getExtension(repeatedNestedMessageExtension ).size());
Assert.assertEquals(0, message.getExtension(repeatedForeignMessageExtension).size());
Assert.assertEquals(0, message.getExtension(repeatedImportMessageExtension ).size());
- Assert.assertEquals(0, message.getExtension(repeatedLazyMessageExtension ).size());
Assert.assertEquals(0, message.getExtension(repeatedNestedEnumExtension ).size());
Assert.assertEquals(0, message.getExtension(repeatedForeignEnumExtension ).size());
Assert.assertEquals(0, message.getExtension(repeatedImportEnumExtension ).size());
@@ -1846,11 +1742,6 @@ public final class TestUtil {
assertEqualsExactType("abc", message.getExtension(defaultStringPieceExtension));
assertEqualsExactType("123", message.getExtension(defaultCordExtension));
-
- Assert.assertFalse(message.hasExtension(oneofUint32Extension));
- Assert.assertFalse(message.hasExtension(oneofNestedMessageExtension));
- Assert.assertFalse(message.hasExtension(oneofStringExtension));
- Assert.assertFalse(message.hasExtension(oneofBytesExtension));
}
// -------------------------------------------------------------------
@@ -1861,7 +1752,7 @@ public final class TestUtil {
* followed by {@code modifyRepeatedExtensions}.
*/
public static void assertRepeatedExtensionsModified(
- TestAllExtensionsOrBuilder message) {
+ TestAllExtensions message) {
// ModifyRepeatedFields only sets the second repeated element of each
// field. In addition to verifying this, we also verify that the first
// element and size were *not* modified.
@@ -1885,7 +1776,6 @@ public final class TestUtil {
Assert.assertEquals(2, message.getExtensionCount(repeatedNestedMessageExtension ));
Assert.assertEquals(2, message.getExtensionCount(repeatedForeignMessageExtension));
Assert.assertEquals(2, message.getExtensionCount(repeatedImportMessageExtension ));
- Assert.assertEquals(2, message.getExtensionCount(repeatedLazyMessageExtension ));
Assert.assertEquals(2, message.getExtensionCount(repeatedNestedEnumExtension ));
Assert.assertEquals(2, message.getExtensionCount(repeatedForeignEnumExtension ));
Assert.assertEquals(2, message.getExtensionCount(repeatedImportEnumExtension ));
@@ -1913,7 +1803,6 @@ public final class TestUtil {
assertEqualsExactType(218, message.getExtension(repeatedNestedMessageExtension , 0).getBb());
assertEqualsExactType(219, message.getExtension(repeatedForeignMessageExtension, 0).getC());
assertEqualsExactType(220, message.getExtension(repeatedImportMessageExtension , 0).getD());
- assertEqualsExactType(227, message.getExtension(repeatedLazyMessageExtension , 0).getBb());
assertEqualsExactType(TestAllTypes.NestedEnum.BAR,
message.getExtension(repeatedNestedEnumExtension, 0));
@@ -1946,7 +1835,6 @@ public final class TestUtil {
assertEqualsExactType(518, message.getExtension(repeatedNestedMessageExtension , 1).getBb());
assertEqualsExactType(519, message.getExtension(repeatedForeignMessageExtension, 1).getC());
assertEqualsExactType(520, message.getExtension(repeatedImportMessageExtension , 1).getD());
- assertEqualsExactType(527, message.getExtension(repeatedLazyMessageExtension , 1).getBb());
assertEqualsExactType(TestAllTypes.NestedEnum.FOO,
message.getExtension(repeatedNestedEnumExtension, 1));
@@ -2070,10 +1958,6 @@ public final class TestUtil {
ForeignMessageLite.newBuilder().setC(119).build());
message.setExtension(optionalImportMessageExtensionLite,
ImportMessageLite.newBuilder().setD(120).build());
- message.setExtension(optionalPublicImportMessageExtensionLite,
- PublicImportMessageLite.newBuilder().setE(126).build());
- message.setExtension(optionalLazyMessageExtensionLite,
- TestAllTypesLite.NestedMessage.newBuilder().setBb(127).build());
message.setExtension(optionalNestedEnumExtensionLite, TestAllTypesLite.NestedEnum.BAZ);
message.setExtension(optionalForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAZ);
@@ -2108,8 +1992,6 @@ public final class TestUtil {
ForeignMessageLite.newBuilder().setC(219).build());
message.addExtension(repeatedImportMessageExtensionLite,
ImportMessageLite.newBuilder().setD(220).build());
- message.addExtension(repeatedLazyMessageExtensionLite,
- TestAllTypesLite.NestedMessage.newBuilder().setBb(227).build());
message.addExtension(repeatedNestedEnumExtensionLite, TestAllTypesLite.NestedEnum.BAR);
message.addExtension(repeatedForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAR);
@@ -2143,8 +2025,6 @@ public final class TestUtil {
ForeignMessageLite.newBuilder().setC(319).build());
message.addExtension(repeatedImportMessageExtensionLite,
ImportMessageLite.newBuilder().setD(320).build());
- message.addExtension(repeatedLazyMessageExtensionLite,
- TestAllTypesLite.NestedMessage.newBuilder().setBb(327).build());
message.addExtension(repeatedNestedEnumExtensionLite, TestAllTypesLite.NestedEnum.BAZ);
message.addExtension(repeatedForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAZ);
@@ -2177,12 +2057,6 @@ public final class TestUtil {
message.setExtension(defaultStringPieceExtensionLite, "424");
message.setExtension(defaultCordExtensionLite, "425");
-
- message.setExtension(oneofUint32ExtensionLite, 601);
- message.setExtension(oneofNestedMessageExtensionLite,
- TestAllTypesLite.NestedMessage.newBuilder().setBb(602).build());
- message.setExtension(oneofStringExtensionLite, "603");
- message.setExtension(oneofBytesExtensionLite, toBytes("604"));
}
// -------------------------------------------------------------------
@@ -2217,8 +2091,6 @@ public final class TestUtil {
ForeignMessageLite.newBuilder().setC(519).build());
message.setExtension(repeatedImportMessageExtensionLite, 1,
ImportMessageLite.newBuilder().setD(520).build());
- message.setExtension(repeatedLazyMessageExtensionLite, 1,
- TestAllTypesLite.NestedMessage.newBuilder().setBb(527).build());
message.setExtension(repeatedNestedEnumExtensionLite , 1, TestAllTypesLite.NestedEnum.FOO);
message.setExtension(repeatedForeignEnumExtensionLite, 1, ForeignEnumLite.FOREIGN_LITE_FOO);
@@ -2234,8 +2106,7 @@ public final class TestUtil {
* Assert (using {@code junit.framework.Assert}} that all extensions of
* {@code message} are set to the values assigned by {@code setAllExtensions}.
*/
- public static void assertAllExtensionsSet(
- TestAllExtensionsLiteOrBuilder message) {
+ public static void assertAllExtensionsSet(TestAllExtensionsLite message) {
Assert.assertTrue(message.hasExtension(optionalInt32ExtensionLite ));
Assert.assertTrue(message.hasExtension(optionalInt64ExtensionLite ));
Assert.assertTrue(message.hasExtension(optionalUint32ExtensionLite ));
@@ -2289,9 +2160,6 @@ public final class TestUtil {
assertEqualsExactType(118, message.getExtension(optionalNestedMessageExtensionLite ).getBb());
assertEqualsExactType(119, message.getExtension(optionalForeignMessageExtensionLite).getC());
assertEqualsExactType(120, message.getExtension(optionalImportMessageExtensionLite ).getD());
- assertEqualsExactType(126, message.getExtension(
- optionalPublicImportMessageExtensionLite).getE());
- assertEqualsExactType(127, message.getExtension(optionalLazyMessageExtensionLite).getBb());
assertEqualsExactType(TestAllTypesLite.NestedEnum.BAZ,
message.getExtension(optionalNestedEnumExtensionLite));
@@ -2325,7 +2193,6 @@ public final class TestUtil {
Assert.assertEquals(2, message.getExtensionCount(repeatedNestedMessageExtensionLite ));
Assert.assertEquals(2, message.getExtensionCount(repeatedForeignMessageExtensionLite));
Assert.assertEquals(2, message.getExtensionCount(repeatedImportMessageExtensionLite ));
- Assert.assertEquals(2, message.getExtensionCount(repeatedLazyMessageExtensionLite ));
Assert.assertEquals(2, message.getExtensionCount(repeatedNestedEnumExtensionLite ));
Assert.assertEquals(2, message.getExtensionCount(repeatedForeignEnumExtensionLite ));
Assert.assertEquals(2, message.getExtensionCount(repeatedImportEnumExtensionLite ));
@@ -2353,7 +2220,6 @@ public final class TestUtil {
assertEqualsExactType(218, message.getExtension(repeatedNestedMessageExtensionLite ,0).getBb());
assertEqualsExactType(219, message.getExtension(repeatedForeignMessageExtensionLite,0).getC());
assertEqualsExactType(220, message.getExtension(repeatedImportMessageExtensionLite ,0).getD());
- assertEqualsExactType(227, message.getExtension(repeatedLazyMessageExtensionLite ,0).getBb());
assertEqualsExactType(TestAllTypesLite.NestedEnum.BAR,
message.getExtension(repeatedNestedEnumExtensionLite, 0));
@@ -2385,7 +2251,6 @@ public final class TestUtil {
assertEqualsExactType(318, message.getExtension(repeatedNestedMessageExtensionLite ,1).getBb());
assertEqualsExactType(319, message.getExtension(repeatedForeignMessageExtensionLite,1).getC());
assertEqualsExactType(320, message.getExtension(repeatedImportMessageExtensionLite ,1).getD());
- assertEqualsExactType(327, message.getExtension(repeatedLazyMessageExtensionLite ,1).getBb());
assertEqualsExactType(TestAllTypesLite.NestedEnum.BAZ,
message.getExtension(repeatedNestedEnumExtensionLite, 1));
@@ -2447,10 +2312,6 @@ public final class TestUtil {
assertEqualsExactType("424", message.getExtension(defaultStringPieceExtensionLite));
assertEqualsExactType("425", message.getExtension(defaultCordExtensionLite));
-
- Assert.assertTrue(message.hasExtension(oneofBytesExtensionLite));
-
- assertEqualsExactType(toBytes("604"), message.getExtension(oneofBytesExtensionLite));
}
// -------------------------------------------------------------------
@@ -2460,8 +2321,7 @@ public final class TestUtil {
* {@code message} are cleared, and that getting the extensions returns their
* default values.
*/
- public static void assertExtensionsClear(
- TestAllExtensionsLiteOrBuilder message) {
+ public static void assertExtensionsClear(TestAllExtensionsLite message) {
// hasBlah() should initially be false for all optional fields.
Assert.assertFalse(message.hasExtension(optionalInt32ExtensionLite ));
Assert.assertFalse(message.hasExtension(optionalInt64ExtensionLite ));
@@ -2479,12 +2339,10 @@ public final class TestUtil {
Assert.assertFalse(message.hasExtension(optionalStringExtensionLite ));
Assert.assertFalse(message.hasExtension(optionalBytesExtensionLite ));
- Assert.assertFalse(message.hasExtension(optionalGroupExtensionLite ));
- Assert.assertFalse(message.hasExtension(optionalNestedMessageExtensionLite ));
- Assert.assertFalse(message.hasExtension(optionalForeignMessageExtensionLite ));
- Assert.assertFalse(message.hasExtension(optionalImportMessageExtensionLite ));
- Assert.assertFalse(message.hasExtension(optionalPublicImportMessageExtensionLite));
- Assert.assertFalse(message.hasExtension(optionalLazyMessageExtensionLite ));
+ Assert.assertFalse(message.hasExtension(optionalGroupExtensionLite ));
+ Assert.assertFalse(message.hasExtension(optionalNestedMessageExtensionLite ));
+ Assert.assertFalse(message.hasExtension(optionalForeignMessageExtensionLite));
+ Assert.assertFalse(message.hasExtension(optionalImportMessageExtensionLite ));
Assert.assertFalse(message.hasExtension(optionalNestedEnumExtensionLite ));
Assert.assertFalse(message.hasExtension(optionalForeignEnumExtensionLite));
@@ -2511,20 +2369,15 @@ public final class TestUtil {
assertEqualsExactType(ByteString.EMPTY, message.getExtension(optionalBytesExtensionLite));
// Embedded messages should also be clear.
- Assert.assertFalse(message.getExtension(optionalGroupExtensionLite ).hasA());
- Assert.assertFalse(message.getExtension(optionalNestedMessageExtensionLite ).hasBb());
- Assert.assertFalse(message.getExtension(optionalForeignMessageExtensionLite ).hasC());
- Assert.assertFalse(message.getExtension(optionalImportMessageExtensionLite ).hasD());
- Assert.assertFalse(message.getExtension(optionalPublicImportMessageExtensionLite).hasE());
- Assert.assertFalse(message.getExtension(optionalLazyMessageExtensionLite ).hasBb());
+ Assert.assertFalse(message.getExtension(optionalGroupExtensionLite ).hasA());
+ Assert.assertFalse(message.getExtension(optionalNestedMessageExtensionLite ).hasBb());
+ Assert.assertFalse(message.getExtension(optionalForeignMessageExtensionLite).hasC());
+ Assert.assertFalse(message.getExtension(optionalImportMessageExtensionLite ).hasD());
assertEqualsExactType(0, message.getExtension(optionalGroupExtensionLite ).getA());
assertEqualsExactType(0, message.getExtension(optionalNestedMessageExtensionLite ).getBb());
assertEqualsExactType(0, message.getExtension(optionalForeignMessageExtensionLite).getC());
assertEqualsExactType(0, message.getExtension(optionalImportMessageExtensionLite ).getD());
- assertEqualsExactType(0, message.getExtension(
- optionalPublicImportMessageExtensionLite).getE());
- assertEqualsExactType(0, message.getExtension(optionalLazyMessageExtensionLite ).getBb());
// Enums without defaults are set to the first value in the enum.
assertEqualsExactType(TestAllTypesLite.NestedEnum.FOO,
@@ -2558,7 +2411,6 @@ public final class TestUtil {
Assert.assertEquals(0, message.getExtensionCount(repeatedNestedMessageExtensionLite ));
Assert.assertEquals(0, message.getExtensionCount(repeatedForeignMessageExtensionLite));
Assert.assertEquals(0, message.getExtensionCount(repeatedImportMessageExtensionLite ));
- Assert.assertEquals(0, message.getExtensionCount(repeatedLazyMessageExtensionLite ));
Assert.assertEquals(0, message.getExtensionCount(repeatedNestedEnumExtensionLite ));
Assert.assertEquals(0, message.getExtensionCount(repeatedForeignEnumExtensionLite ));
Assert.assertEquals(0, message.getExtensionCount(repeatedImportEnumExtensionLite ));
@@ -2616,11 +2468,6 @@ public final class TestUtil {
assertEqualsExactType("abc", message.getExtension(defaultStringPieceExtensionLite));
assertEqualsExactType("123", message.getExtension(defaultCordExtensionLite));
-
- Assert.assertFalse(message.hasExtension(oneofUint32ExtensionLite));
- Assert.assertFalse(message.hasExtension(oneofNestedMessageExtensionLite));
- Assert.assertFalse(message.hasExtension(oneofStringExtensionLite));
- Assert.assertFalse(message.hasExtension(oneofBytesExtensionLite));
}
// -------------------------------------------------------------------
@@ -2631,7 +2478,7 @@ public final class TestUtil {
* followed by {@code modifyRepeatedExtensions}.
*/
public static void assertRepeatedExtensionsModified(
- TestAllExtensionsLiteOrBuilder message) {
+ TestAllExtensionsLite message) {
// ModifyRepeatedFields only sets the second repeated element of each
// field. In addition to verifying this, we also verify that the first
// element and size were *not* modified.
@@ -2655,7 +2502,6 @@ public final class TestUtil {
Assert.assertEquals(2, message.getExtensionCount(repeatedNestedMessageExtensionLite ));
Assert.assertEquals(2, message.getExtensionCount(repeatedForeignMessageExtensionLite));
Assert.assertEquals(2, message.getExtensionCount(repeatedImportMessageExtensionLite ));
- Assert.assertEquals(2, message.getExtensionCount(repeatedLazyMessageExtensionLite ));
Assert.assertEquals(2, message.getExtensionCount(repeatedNestedEnumExtensionLite ));
Assert.assertEquals(2, message.getExtensionCount(repeatedForeignEnumExtensionLite ));
Assert.assertEquals(2, message.getExtensionCount(repeatedImportEnumExtensionLite ));
@@ -2683,7 +2529,6 @@ public final class TestUtil {
assertEqualsExactType(218, message.getExtension(repeatedNestedMessageExtensionLite ,0).getBb());
assertEqualsExactType(219, message.getExtension(repeatedForeignMessageExtensionLite,0).getC());
assertEqualsExactType(220, message.getExtension(repeatedImportMessageExtensionLite ,0).getD());
- assertEqualsExactType(227, message.getExtension(repeatedLazyMessageExtensionLite ,0).getBb());
assertEqualsExactType(TestAllTypesLite.NestedEnum.BAR,
message.getExtension(repeatedNestedEnumExtensionLite, 0));
@@ -2716,7 +2561,6 @@ public final class TestUtil {
assertEqualsExactType(518, message.getExtension(repeatedNestedMessageExtensionLite ,1).getBb());
assertEqualsExactType(519, message.getExtension(repeatedForeignMessageExtensionLite,1).getC());
assertEqualsExactType(520, message.getExtension(repeatedImportMessageExtensionLite ,1).getD());
- assertEqualsExactType(527, message.getExtension(repeatedLazyMessageExtensionLite ,1).getBb());
assertEqualsExactType(TestAllTypesLite.NestedEnum.FOO,
message.getExtension(repeatedNestedEnumExtensionLite, 1));
@@ -2808,82 +2652,6 @@ public final class TestUtil {
message.getExtension(packedEnumExtensionLite, 1));
}
- // ===================================================================
- // oneof
- public static void setOneof(TestOneof2.Builder message) {
- message.setFooLazyMessage(
- TestOneof2.NestedMessage.newBuilder().setQuxInt(100).build());
- message.setBarString("101");
- message.setBazInt(102);
- message.setBazString("103");
- }
-
- public static void assertOneofSet(TestOneof2 message) {
- Assert.assertTrue(message.hasFooLazyMessage ());
- Assert.assertTrue(message.getFooLazyMessage().hasQuxInt());
-
- Assert.assertTrue(message.hasBarString());
- Assert.assertTrue(message.hasBazInt ());
- Assert.assertTrue(message.hasBazString());
-
- Assert.assertEquals(100 , message.getFooLazyMessage().getQuxInt());
- Assert.assertEquals("101", message.getBarString ());
- Assert.assertEquals(102 , message.getBazInt ());
- Assert.assertEquals("103", message.getBazString ());
- }
-
- public static void assertAtMostOneFieldSetOneof(TestOneof2 message) {
- int count = 0;
- if (message.hasFooInt()) { ++count; }
- if (message.hasFooString()) { ++count; }
- if (message.hasFooCord()) { ++count; }
- if (message.hasFooStringPiece()) { ++count; }
- if (message.hasFooBytes()) { ++count; }
- if (message.hasFooEnum()) { ++count; }
- if (message.hasFooMessage()) { ++count; }
- if (message.hasFooGroup()) { ++count; }
- if (message.hasFooLazyMessage()) { ++count; }
- Assert.assertTrue(count <= 1);
-
- count = 0;
- if (message.hasBarInt()) { ++count; }
- if (message.hasBarString()) { ++count; }
- if (message.hasBarCord()) { ++count; }
- if (message.hasBarStringPiece()) { ++count; }
- if (message.hasBarBytes()) { ++count; }
- if (message.hasBarEnum()) { ++count; }
- Assert.assertTrue(count <= 1);
-
- switch (message.getFooCase()) {
- case FOO_INT:
- Assert.assertTrue(message.hasFooInt());
- break;
- case FOO_STRING:
- Assert.assertTrue(message.hasFooString());
- break;
- case FOO_CORD:
- Assert.assertTrue(message.hasFooCord());
- break;
- case FOO_BYTES:
- Assert.assertTrue(message.hasFooBytes());
- break;
- case FOO_ENUM:
- Assert.assertTrue(message.hasFooEnum());
- break;
- case FOO_MESSAGE:
- Assert.assertTrue(message.hasFooMessage());
- break;
- case FOOGROUP:
- Assert.assertTrue(message.hasFooGroup());
- break;
- case FOO_LAZY_MESSAGE:
- Assert.assertTrue(message.hasFooLazyMessage());
- break;
- case FOO_NOT_SET:
- break;
- }
- }
-
// =================================================================
/**
@@ -2897,21 +2665,18 @@ public final class TestUtil {
private final Descriptors.FileDescriptor file;
private final Descriptors.FileDescriptor importFile;
- private final Descriptors.FileDescriptor publicImportFile;
private final Descriptors.Descriptor optionalGroup;
private final Descriptors.Descriptor repeatedGroup;
private final Descriptors.Descriptor nestedMessage;
private final Descriptors.Descriptor foreignMessage;
private final Descriptors.Descriptor importMessage;
- private final Descriptors.Descriptor publicImportMessage;
private final Descriptors.FieldDescriptor groupA;
private final Descriptors.FieldDescriptor repeatedGroupA;
private final Descriptors.FieldDescriptor nestedB;
private final Descriptors.FieldDescriptor foreignC;
private final Descriptors.FieldDescriptor importD;
- private final Descriptors.FieldDescriptor importE;
private final Descriptors.EnumDescriptor nestedEnum;
private final Descriptors.EnumDescriptor foreignEnum;
@@ -2948,7 +2713,6 @@ public final class TestUtil {
this.file = baseDescriptor.getFile();
Assert.assertEquals(1, file.getDependencies().size());
this.importFile = file.getDependencies().get(0);
- this.publicImportFile = importFile.getDependencies().get(0);
Descriptors.Descriptor testAllTypes;
if (baseDescriptor.getName() == "TestAllTypes") {
@@ -2975,8 +2739,6 @@ public final class TestUtil {
this.nestedMessage = testAllTypes.findNestedTypeByName("NestedMessage");
this.foreignMessage = file.findMessageTypeByName("ForeignMessage");
this.importMessage = importFile.findMessageTypeByName("ImportMessage");
- this.publicImportMessage = publicImportFile.findMessageTypeByName(
- "PublicImportMessage");
this.nestedEnum = testAllTypes.findEnumTypeByName("NestedEnum");
this.foreignEnum = file.findEnumTypeByName("ForeignEnum");
@@ -2994,7 +2756,6 @@ public final class TestUtil {
this.nestedB = nestedMessage .findFieldByName("bb");
this.foreignC = foreignMessage.findFieldByName("c");
this.importD = importMessage .findFieldByName("d");
- this.importE = publicImportMessage.findFieldByName("e");
this.nestedFoo = nestedEnum.findValueByName("FOO");
this.nestedBar = nestedEnum.findValueByName("BAR");
this.nestedBaz = nestedEnum.findValueByName("BAZ");
@@ -3013,7 +2774,6 @@ public final class TestUtil {
Assert.assertNotNull(nestedB );
Assert.assertNotNull(foreignC );
Assert.assertNotNull(importD );
- Assert.assertNotNull(importE );
Assert.assertNotNull(nestedFoo );
Assert.assertNotNull(nestedBar );
Assert.assertNotNull(nestedBaz );
@@ -3050,8 +2810,8 @@ public final class TestUtil {
return parent.newBuilderForField(field);
} else {
ExtensionRegistry.ExtensionInfo extension =
- extensionRegistry.findImmutableExtensionByNumber(
- field.getContainingType(), field.getNumber());
+ extensionRegistry.findExtensionByNumber(field.getContainingType(),
+ field.getNumber());
Assert.assertNotNull(extension);
Assert.assertNotNull(extension.defaultInstance);
return extension.defaultInstance.newBuilderForType();
@@ -3094,12 +2854,6 @@ public final class TestUtil {
message.setField(f("optional_import_message"),
newBuilderForField(message, f("optional_import_message"))
.setField(importD, 120).build());
- message.setField(f("optional_public_import_message"),
- newBuilderForField(message, f("optional_public_import_message"))
- .setField(importE, 126).build());
- message.setField(f("optional_lazy_message"),
- newBuilderForField(message, f("optional_lazy_message"))
- .setField(nestedB, 127).build());
message.setField(f("optional_nested_enum" ), nestedBaz);
message.setField(f("optional_foreign_enum"), foreignBaz);
@@ -3138,9 +2892,6 @@ public final class TestUtil {
message.addRepeatedField(f("repeated_import_message"),
newBuilderForField(message, f("repeated_import_message"))
.setField(importD, 220).build());
- message.addRepeatedField(f("repeated_lazy_message"),
- newBuilderForField(message, f("repeated_lazy_message"))
- .setField(nestedB, 227).build());
message.addRepeatedField(f("repeated_nested_enum" ), nestedBar);
message.addRepeatedField(f("repeated_foreign_enum"), foreignBar);
@@ -3178,9 +2929,6 @@ public final class TestUtil {
message.addRepeatedField(f("repeated_import_message"),
newBuilderForField(message, f("repeated_import_message"))
.setField(importD, 320).build());
- message.addRepeatedField(f("repeated_lazy_message"),
- newBuilderForField(message, f("repeated_lazy_message"))
- .setField(nestedB, 327).build());
message.addRepeatedField(f("repeated_nested_enum" ), nestedBaz);
message.addRepeatedField(f("repeated_foreign_enum"), foreignBaz);
@@ -3213,13 +2961,6 @@ public final class TestUtil {
message.setField(f("default_string_piece" ), "424");
message.setField(f("default_cord" ), "425");
-
- message.setField(f("oneof_uint32" ), 601);
- message.setField(f("oneof_nested_message"),
- newBuilderForField(message, f("oneof_nested_message"))
- .setField(nestedB, 602).build());
- message.setField(f("oneof_string" ), "603");
- message.setField(f("oneof_bytes" ), toBytes("604"));
}
// -------------------------------------------------------------------
@@ -3258,9 +2999,6 @@ public final class TestUtil {
message.setRepeatedField(f("repeated_import_message"), 1,
newBuilderForField(message, f("repeated_import_message"))
.setField(importD, 520).build());
- message.setRepeatedField(f("repeated_lazy_message"), 1,
- newBuilderForField(message, f("repeated_lazy_message"))
- .setField(nestedB, 527).build());
message.setRepeatedField(f("repeated_nested_enum" ), 1, nestedFoo);
message.setRepeatedField(f("repeated_foreign_enum"), 1, foreignFoo);
@@ -3277,7 +3015,7 @@ public final class TestUtil {
* {@code message} are set to the values assigned by {@code setAllFields},
* using the {@link Message} reflection interface.
*/
- public void assertAllFieldsSetViaReflection(MessageOrBuilder message) {
+ public void assertAllFieldsSetViaReflection(Message message) {
Assert.assertTrue(message.hasField(f("optional_int32" )));
Assert.assertTrue(message.hasField(f("optional_int64" )));
Assert.assertTrue(message.hasField(f("optional_uint32" )));
@@ -3345,12 +3083,6 @@ public final class TestUtil {
Assert.assertEquals(120,
((Message)message.getField(f("optional_import_message")))
.getField(importD));
- Assert.assertEquals(126,
- ((Message)message.getField(f("optional_public_import_message")))
- .getField(importE));
- Assert.assertEquals(127,
- ((Message)message.getField(f("optional_lazy_message")))
- .getField(nestedB));
Assert.assertEquals( nestedBaz, message.getField(f("optional_nested_enum" )));
Assert.assertEquals(foreignBaz, message.getField(f("optional_foreign_enum")));
@@ -3381,7 +3113,6 @@ public final class TestUtil {
Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_nested_message" )));
Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_foreign_message")));
Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_import_message" )));
- Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_lazy_message" )));
Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_nested_enum" )));
Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_foreign_enum" )));
Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_import_enum" )));
@@ -3417,9 +3148,6 @@ public final class TestUtil {
Assert.assertEquals(220,
((Message)message.getRepeatedField(f("repeated_import_message"), 0))
.getField(importD));
- Assert.assertEquals(227,
- ((Message)message.getRepeatedField(f("repeated_lazy_message"), 0))
- .getField(nestedB));
Assert.assertEquals( nestedBar, message.getRepeatedField(f("repeated_nested_enum" ),0));
Assert.assertEquals(foreignBar, message.getRepeatedField(f("repeated_foreign_enum"),0));
@@ -3456,9 +3184,6 @@ public final class TestUtil {
Assert.assertEquals(320,
((Message)message.getRepeatedField(f("repeated_import_message"), 1))
.getField(importD));
- Assert.assertEquals(327,
- ((Message)message.getRepeatedField(f("repeated_lazy_message"), 1))
- .getField(nestedB));
Assert.assertEquals( nestedBaz, message.getRepeatedField(f("repeated_nested_enum" ),1));
Assert.assertEquals(foreignBaz, message.getRepeatedField(f("repeated_foreign_enum"),1));
@@ -3514,24 +3239,6 @@ public final class TestUtil {
Assert.assertEquals("424", message.getField(f("default_string_piece")));
Assert.assertEquals("425", message.getField(f("default_cord")));
-
- Assert.assertTrue(message.hasField(f("oneof_bytes")));
- Assert.assertEquals(toBytes("604"), message.getField(f("oneof_bytes")));
-
- if (extensionRegistry == null) {
- Assert.assertFalse(message.hasField(f("oneof_uint32")));
- Assert.assertFalse(message.hasField(f("oneof_nested_message")));
- Assert.assertFalse(message.hasField(f("oneof_string")));
- } else {
- Assert.assertTrue(message.hasField(f("oneof_uint32")));
- Assert.assertTrue(message.hasField(f("oneof_nested_message")));
- Assert.assertTrue(message.hasField(f("oneof_string")));
- Assert.assertEquals(601, message.getField(f("oneof_uint32")));
- Assert.assertEquals(602,
- ((MessageOrBuilder) message.getField(f("oneof_nested_message")))
- .getField(nestedB));
- Assert.assertEquals("603", message.getField(f("oneof_string")));
- }
}
// -------------------------------------------------------------------
@@ -3541,7 +3248,7 @@ public final class TestUtil {
* {@code message} are cleared, and that getting the fields returns their
* default values, using the {@link Message} reflection interface.
*/
- public void assertClearViaReflection(MessageOrBuilder message) {
+ public void assertClearViaReflection(Message message) {
// has_blah() should initially be false for all optional fields.
Assert.assertFalse(message.hasField(f("optional_int32" )));
Assert.assertFalse(message.hasField(f("optional_int64" )));
@@ -3600,12 +3307,6 @@ public final class TestUtil {
Assert.assertFalse(
((Message)message.getField(f("optional_import_message")))
.hasField(importD));
- Assert.assertFalse(
- ((Message)message.getField(f("optional_public_import_message")))
- .hasField(importE));
- Assert.assertFalse(
- ((Message)message.getField(f("optional_lazy_message")))
- .hasField(nestedB));
Assert.assertEquals(0,
((Message)message.getField(f("optionalgroup"))).getField(groupA));
@@ -3618,12 +3319,6 @@ public final class TestUtil {
Assert.assertEquals(0,
((Message)message.getField(f("optional_import_message")))
.getField(importD));
- Assert.assertEquals(0,
- ((Message)message.getField(f("optional_public_import_message")))
- .getField(importE));
- Assert.assertEquals(0,
- ((Message)message.getField(f("optional_lazy_message")))
- .getField(nestedB));
// Enums without defaults are set to the first value in the enum.
Assert.assertEquals( nestedFoo, message.getField(f("optional_nested_enum" )));
@@ -3654,7 +3349,6 @@ public final class TestUtil {
Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_nested_message" )));
Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_foreign_message")));
Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_import_message" )));
- Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_lazy_message" )));
Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_nested_enum" )));
Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_foreign_enum" )));
Assert.assertEquals(0, message.getRepeatedFieldCount(f("repeated_import_enum" )));
@@ -3709,22 +3403,11 @@ public final class TestUtil {
Assert.assertEquals("abc", message.getField(f("default_string_piece")));
Assert.assertEquals("123", message.getField(f("default_cord")));
-
- Assert.assertFalse(message.hasField(f("oneof_uint32")));
- Assert.assertFalse(message.hasField(f("oneof_nested_message")));
- Assert.assertFalse(message.hasField(f("oneof_string")));
- Assert.assertFalse(message.hasField(f("oneof_bytes")));
-
- Assert.assertEquals(0, message.getField(f("oneof_uint32")));
- Assert.assertEquals("", message.getField(f("oneof_string")));
- Assert.assertEquals(toBytes(""), message.getField(f("oneof_bytes")));
}
-
// ---------------------------------------------------------------
- public void assertRepeatedFieldsModifiedViaReflection(
- MessageOrBuilder message) {
+ public void assertRepeatedFieldsModifiedViaReflection(Message message) {
// ModifyRepeatedFields only sets the second repeated element of each
// field. In addition to verifying this, we also verify that the first
// element and size were *not* modified.
@@ -3748,7 +3431,6 @@ public final class TestUtil {
Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_nested_message" )));
Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_foreign_message")));
Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_import_message" )));
- Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_lazy_message" )));
Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_nested_enum" )));
Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_foreign_enum" )));
Assert.assertEquals(2, message.getRepeatedFieldCount(f("repeated_import_enum" )));
@@ -3784,9 +3466,6 @@ public final class TestUtil {
Assert.assertEquals(220,
((Message)message.getRepeatedField(f("repeated_import_message"), 0))
.getField(importD));
- Assert.assertEquals(227,
- ((Message)message.getRepeatedField(f("repeated_lazy_message"), 0))
- .getField(nestedB));
Assert.assertEquals( nestedBar, message.getRepeatedField(f("repeated_nested_enum" ),0));
Assert.assertEquals(foreignBar, message.getRepeatedField(f("repeated_foreign_enum"),0));
@@ -3823,9 +3502,6 @@ public final class TestUtil {
Assert.assertEquals(520,
((Message)message.getRepeatedField(f("repeated_import_message"), 1))
.getField(importD));
- Assert.assertEquals(527,
- ((Message)message.getRepeatedField(f("repeated_lazy_message"), 1))
- .getField(nestedB));
Assert.assertEquals( nestedFoo, message.getRepeatedField(f("repeated_nested_enum" ),1));
Assert.assertEquals(foreignFoo, message.getRepeatedField(f("repeated_foreign_enum"),1));
@@ -3867,7 +3543,7 @@ public final class TestUtil {
message.addRepeatedField(f("packed_enum" ), foreignBaz);
}
- public void assertPackedFieldsSetViaReflection(MessageOrBuilder message) {
+ public void assertPackedFieldsSetViaReflection(Message message) {
Assert.assertEquals(2, message.getRepeatedFieldCount(f("packed_int32" )));
Assert.assertEquals(2, message.getRepeatedFieldCount(f("packed_int64" )));
Assert.assertEquals(2, message.getRepeatedFieldCount(f("packed_uint32" )));
@@ -4023,7 +3699,7 @@ public final class TestUtil {
/**
* @param filePath The path relative to
- * {@link #getTestDataDir}.
+ * {@link com.google.testing.util.TestUtil#getDefaultSrcDir}.
*/
public static String readTextFromFile(String filePath) {
return readBytesFromFile(filePath).toStringUtf8();
@@ -4052,8 +3728,8 @@ public final class TestUtil {
}
/**
- * @param filename The path relative to
- * {@link #getTestDataDir}.
+ * @param filePath The path relative to
+ * {@link com.google.testing.util.TestUtil#getDefaultSrcDir}.
*/
public static ByteString readBytesFromFile(String filename) {
File fullPath = new File(getTestDataDir(), filename);
@@ -4073,13 +3749,13 @@ public final class TestUtil {
/**
* Get the bytes of the "golden message". This is a serialized TestAllTypes
* with all fields set as they would be by
- * {@link #setAllFields(TestAllTypes.Builder)}, but it is loaded from a file
+ * {@link setAllFields(TestAllTypes.Builder)}, but it is loaded from a file
* on disk rather than generated dynamically. The file is actually generated
* by C++ code, so testing against it verifies compatibility with C++.
*/
public static ByteString getGoldenMessage() {
if (goldenMessage == null) {
- goldenMessage = readBytesFromFile("golden_message_oneof_implemented");
+ goldenMessage = readBytesFromFile("golden_message");
}
return goldenMessage;
}
@@ -4088,7 +3764,7 @@ public final class TestUtil {
/**
* Get the bytes of the "golden packed fields message". This is a serialized
* TestPackedTypes with all fields set as they would be by
- * {@link #setPackedFields(TestPackedTypes.Builder)}, but it is loaded from a
+ * {@link setPackedFields(TestPackedTypes.Builder)}, but it is loaded from a
* file on disk rather than generated dynamically. The file is actually
* generated by C++ code, so testing against it verifies compatibility with
* C++.
@@ -4101,24 +3777,4 @@ public final class TestUtil {
return goldenPackedFieldsMessage;
}
private static ByteString goldenPackedFieldsMessage = null;
-
- /**
- * Mock implementation of {@link GeneratedMessage.BuilderParent} for testing.
- *
- * @author jonp@google.com (Jon Perlow)
- */
- public static class MockBuilderParent
- implements GeneratedMessage.BuilderParent {
-
- private int invalidations;
-
- //@Override (Java 1.6 override semantics, but we must support 1.5)
- public void markDirty() {
- invalidations++;
- }
-
- public int getInvalidationCount() {
- return invalidations;
- }
- }
}
diff --git a/java/src/test/java/com/google/protobuf/TextFormatTest.java b/java/src/test/java/com/google/protobuf/TextFormatTest.java
index 152bdad..60bd800 100644
--- a/java/src/test/java/com/google/protobuf/TextFormatTest.java
+++ b/java/src/test/java/com/google/protobuf/TextFormatTest.java
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -31,16 +31,14 @@
package com.google.protobuf;
import com.google.protobuf.Descriptors.FieldDescriptor;
-import com.google.protobuf.TextFormat.Parser.SingularOverwritePolicy;
-import protobuf_unittest.UnittestMset.TestMessageSet;
-import protobuf_unittest.UnittestMset.TestMessageSetExtension1;
-import protobuf_unittest.UnittestMset.TestMessageSetExtension2;
import protobuf_unittest.UnittestProto.OneString;
-import protobuf_unittest.UnittestProto.TestAllExtensions;
import protobuf_unittest.UnittestProto.TestAllTypes;
-import protobuf_unittest.UnittestProto.TestAllTypes.NestedMessage;
+import protobuf_unittest.UnittestProto.TestAllExtensions;
import protobuf_unittest.UnittestProto.TestEmptyMessage;
-import protobuf_unittest.UnittestProto.TestOneof2;
+import protobuf_unittest.UnittestProto.TestAllTypes.NestedMessage;
+import protobuf_unittest.UnittestMset.TestMessageSet;
+import protobuf_unittest.UnittestMset.TestMessageSetExtension1;
+import protobuf_unittest.UnittestMset.TestMessageSetExtension2;
import junit.framework.TestCase;
@@ -62,11 +60,11 @@ public class TextFormatTest extends TestCase {
// A representation of the above string with all the characters escaped.
private final static String kEscapeTestStringEscaped =
- "\\\"A string with \\' characters \\n and \\r newlines "
- + "and \\t tabs and \\001 slashes \\\\";
+ "\"\\\"A string with \\' characters \\n and \\r newlines "
+ + "and \\t tabs and \\001 slashes \\\\\"";
private static String allFieldsSetText = TestUtil.readTextFromFile(
- "text_format_unittest_data_oneof_implemented.txt");
+ "text_format_unittest_data.txt");
private static String allExtensionsSetText = TestUtil.readTextFromFile(
"text_format_unittest_extensions_data.txt");
@@ -111,23 +109,6 @@ public class TextFormatTest extends TestCase {
" str: \"foo\"\n" +
"}\n";
- private String messageSetTextWithRepeatedExtension =
- "[protobuf_unittest.TestMessageSetExtension1] {\n" +
- " i: 123\n" +
- "}\n" +
- "[protobuf_unittest.TestMessageSetExtension1] {\n" +
- " i: 456\n" +
- "}\n";
-
- private final TextFormat.Parser parserWithOverwriteForbidden =
- TextFormat.Parser.newBuilder()
- .setSingularOverwritePolicy(
- SingularOverwritePolicy.FORBID_SINGULAR_OVERWRITES)
- .build();
-
- private final TextFormat.Parser defaultParser =
- TextFormat.Parser.newBuilder().build();
-
/** Print TestAllTypes and compare with golden file. */
public void testPrintMessage() throws Exception {
String javaText = TextFormat.printToString(TestUtil.getAllSet());
@@ -140,18 +121,6 @@ public class TextFormatTest extends TestCase {
assertEquals(allFieldsSetText, javaText);
}
- /** Print TestAllTypes as Builder and compare with golden file. */
- public void testPrintMessageBuilder() throws Exception {
- String javaText = TextFormat.printToString(TestUtil.getAllSetBuilder());
-
- // Java likes to add a trailing ".0" to floats and doubles. C printf
- // (with %g format) does not. Our golden files are used for both
- // C++ and Java TextFormat classes, so we need to conform.
- javaText = javaText.replace(".0\n", "\n");
-
- assertEquals(allFieldsSetText, javaText);
- }
-
/** Print TestAllExtensions and compare with golden file. */
public void testPrintExtensions() throws Exception {
String javaText = TextFormat.printToString(TestUtil.getAllExtensionsSet());
@@ -164,44 +133,40 @@ public class TextFormatTest extends TestCase {
assertEquals(allExtensionsSetText, javaText);
}
- // Creates an example unknown field set.
- private UnknownFieldSet makeUnknownFieldSet() {
- return UnknownFieldSet.newBuilder()
- .addField(5,
- UnknownFieldSet.Field.newBuilder()
- .addVarint(1)
- .addFixed32(2)
- .addFixed64(3)
- .addLengthDelimited(ByteString.copyFromUtf8("4"))
- .addGroup(
- UnknownFieldSet.newBuilder()
- .addField(10,
- UnknownFieldSet.Field.newBuilder()
- .addVarint(5)
- .build())
- .build())
- .build())
- .addField(8,
- UnknownFieldSet.Field.newBuilder()
- .addVarint(1)
- .addVarint(2)
- .addVarint(3)
- .build())
- .addField(15,
- UnknownFieldSet.Field.newBuilder()
- .addVarint(0xABCDEF1234567890L)
- .addFixed32(0xABCD1234)
- .addFixed64(0xABCDEF1234567890L)
- .build())
- .build();
- }
-
public void testPrintUnknownFields() throws Exception {
// Test printing of unknown fields in a message.
TestEmptyMessage message =
TestEmptyMessage.newBuilder()
- .setUnknownFields(makeUnknownFieldSet())
+ .setUnknownFields(
+ UnknownFieldSet.newBuilder()
+ .addField(5,
+ UnknownFieldSet.Field.newBuilder()
+ .addVarint(1)
+ .addFixed32(2)
+ .addFixed64(3)
+ .addLengthDelimited(ByteString.copyFromUtf8("4"))
+ .addGroup(
+ UnknownFieldSet.newBuilder()
+ .addField(10,
+ UnknownFieldSet.Field.newBuilder()
+ .addVarint(5)
+ .build())
+ .build())
+ .build())
+ .addField(8,
+ UnknownFieldSet.Field.newBuilder()
+ .addVarint(1)
+ .addVarint(2)
+ .addVarint(3)
+ .build())
+ .addField(15,
+ UnknownFieldSet.Field.newBuilder()
+ .addVarint(0xABCDEF1234567890L)
+ .addFixed32(0xABCD1234)
+ .addFixed64(0xABCDEF1234567890L)
+ .build())
+ .build())
.build();
assertEquals(
@@ -269,8 +234,8 @@ public class TextFormatTest extends TestCase {
.addRepeatedInt32 (1 << 31)
.addRepeatedUint32(1 << 31)
- .addRepeatedInt64 (1L << 63)
- .addRepeatedUint64(1L << 63)
+ .addRepeatedInt64 (1l << 63)
+ .addRepeatedUint64(1l << 63)
// Floats of various precisions and exponents.
.addRepeatedDouble(123)
@@ -390,40 +355,6 @@ public class TextFormatTest extends TestCase {
TestMessageSetExtension2.messageSetExtension));
assertEquals("foo", messageSet.getExtension(
TestMessageSetExtension2.messageSetExtension).getStr());
-
- builder = TestMessageSet.newBuilder();
- TextFormat.merge(messageSetTextWithRepeatedExtension, extensionRegistry,
- builder);
- messageSet = builder.build();
- assertEquals(456, messageSet.getExtension(
- TestMessageSetExtension1.messageSetExtension).getI());
- }
-
- public void testParseMessageSetWithOverwriteForbidden() throws Exception {
- ExtensionRegistry extensionRegistry = ExtensionRegistry.newInstance();
- extensionRegistry.add(TestMessageSetExtension1.messageSetExtension);
- extensionRegistry.add(TestMessageSetExtension2.messageSetExtension);
-
- TestMessageSet.Builder builder = TestMessageSet.newBuilder();
- parserWithOverwriteForbidden.merge(
- messageSetText, extensionRegistry, builder);
- TestMessageSet messageSet = builder.build();
- assertEquals(123, messageSet.getExtension(
- TestMessageSetExtension1.messageSetExtension).getI());
- assertEquals("foo", messageSet.getExtension(
- TestMessageSetExtension2.messageSetExtension).getStr());
-
- builder = TestMessageSet.newBuilder();
- try {
- parserWithOverwriteForbidden.merge(
- messageSetTextWithRepeatedExtension, extensionRegistry, builder);
- fail("expected parse exception");
- } catch (TextFormat.ParseException e) {
- assertEquals("6:1: Non-repeated field "
- + "\"protobuf_unittest.TestMessageSetExtension1.message_set_extension\""
- + " cannot be overwritten.",
- e.getMessage());
- }
}
public void testParseNumericEnum() throws Exception {
@@ -460,32 +391,12 @@ public class TextFormatTest extends TestCase {
}
}
- private void assertParseErrorWithOverwriteForbidden(String error,
- String text) {
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- try {
- parserWithOverwriteForbidden.merge(
- text, TestUtil.getExtensionRegistry(), builder);
- fail("Expected parse exception.");
- } catch (TextFormat.ParseException e) {
- assertEquals(error, e.getMessage());
- }
- }
-
- private TestAllTypes assertParseSuccessWithOverwriteForbidden(
- String text) throws TextFormat.ParseException {
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- parserWithOverwriteForbidden.merge(
- text, TestUtil.getExtensionRegistry(), builder);
- return builder.build();
- }
-
public void testParseErrors() throws Exception {
assertParseError(
"1:16: Expected \":\".",
"optional_int32 123");
assertParseError(
- "1:23: Expected identifier. Found '?'",
+ "1:23: Expected identifier.",
"optional_nested_enum: ?");
assertParseError(
"1:18: Couldn't parse integer: Number must be positive: -1",
@@ -498,9 +409,6 @@ public class TextFormatTest extends TestCase {
"1:16: Expected \"true\" or \"false\".",
"optional_bool: maybe");
assertParseError(
- "1:16: Expected \"true\" or \"false\".",
- "optional_bool: 2");
- assertParseError(
"1:18: Expected string.",
"optional_string: 123");
assertParseError(
@@ -542,10 +450,10 @@ public class TextFormatTest extends TestCase {
// Delimiters must match.
assertParseError(
- "1:22: Expected identifier. Found '}'",
+ "1:22: Expected identifier.",
"OptionalGroup < a: 1 }");
assertParseError(
- "1:22: Expected identifier. Found '>'",
+ "1:22: Expected identifier.",
"OptionalGroup { a: 1 >");
}
@@ -561,10 +469,6 @@ public class TextFormatTest extends TestCase {
TextFormat.unescapeBytes("\\000\\001\\a\\b\\f\\n\\r\\t\\v\\\\\\'\\\""));
assertEquals("\0\001\007\b\f\n\r\t\013\\\'\"",
TextFormat.unescapeText("\\000\\001\\a\\b\\f\\n\\r\\t\\v\\\\\\'\\\""));
- assertEquals(kEscapeTestStringEscaped,
- TextFormat.escapeText(kEscapeTestString));
- assertEquals(kEscapeTestString,
- TextFormat.unescapeText(kEscapeTestStringEscaped));
// Unicode handling.
assertEquals("\\341\\210\\264", TextFormat.escapeText("\u1234"));
@@ -577,11 +481,6 @@ public class TextFormatTest extends TestCase {
assertEquals(bytes(0xe1, 0x88, 0xb4),
TextFormat.unescapeBytes("\\xe1\\x88\\xb4"));
- // Handling of strings with unescaped Unicode characters > 255.
- final String zh = "\u9999\u6e2f\u4e0a\u6d77\ud84f\udf80\u8c50\u9280\u884c";
- ByteString zhByteString = ByteString.copyFromUtf8(zh);
- assertEquals(zhByteString, TextFormat.unescapeBytes(zh));
-
// Errors.
try {
TextFormat.unescapeText("\\x");
@@ -723,13 +622,6 @@ public class TextFormatTest extends TestCase {
}
}
- public void testParseString() throws Exception {
- final String zh = "\u9999\u6e2f\u4e0a\u6d77\ud84f\udf80\u8c50\u9280\u884c";
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- TextFormat.merge("optional_string: \"" + zh + "\"", builder);
- assertEquals(zh, builder.getOptionalString());
- }
-
public void testParseLongString() throws Exception {
String longText =
"123456789012345678901234567890123456789012345678901234567890" +
@@ -758,237 +650,9 @@ public class TextFormatTest extends TestCase {
assertEquals(longText, builder.getOptionalString());
}
- public void testParseBoolean() throws Exception {
- String goodText =
- "repeated_bool: t repeated_bool : 0\n" +
- "repeated_bool :f repeated_bool:1";
- String goodTextCanonical =
- "repeated_bool: true\n" +
- "repeated_bool: false\n" +
- "repeated_bool: false\n" +
- "repeated_bool: true\n";
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- TextFormat.merge(goodText, builder);
- assertEquals(goodTextCanonical, builder.build().toString());
-
- try {
- TestAllTypes.Builder badBuilder = TestAllTypes.newBuilder();
- TextFormat.merge("optional_bool:2", badBuilder);
- fail("Should have thrown an exception.");
- } catch (TextFormat.ParseException e) {
- // success
- }
- try {
- TestAllTypes.Builder badBuilder = TestAllTypes.newBuilder();
- TextFormat.merge("optional_bool: foo", badBuilder);
- fail("Should have thrown an exception.");
- } catch (TextFormat.ParseException e) {
- // success
- }
- }
-
public void testParseAdjacentStringLiterals() throws Exception {
TestAllTypes.Builder builder = TestAllTypes.newBuilder();
TextFormat.merge("optional_string: \"foo\" 'corge' \"grault\"", builder);
assertEquals("foocorgegrault", builder.getOptionalString());
}
-
- public void testPrintFieldValue() throws Exception {
- assertPrintFieldValue("\"Hello\"", "Hello", "repeated_string");
- assertPrintFieldValue("123.0", 123f, "repeated_float");
- assertPrintFieldValue("123.0", 123d, "repeated_double");
- assertPrintFieldValue("123", 123, "repeated_int32");
- assertPrintFieldValue("123", 123L, "repeated_int64");
- assertPrintFieldValue("true", true, "repeated_bool");
- assertPrintFieldValue("4294967295", 0xFFFFFFFF, "repeated_uint32");
- assertPrintFieldValue("18446744073709551615", 0xFFFFFFFFFFFFFFFFL,
- "repeated_uint64");
- assertPrintFieldValue("\"\\001\\002\\003\"",
- ByteString.copyFrom(new byte[] {1, 2, 3}), "repeated_bytes");
- }
-
- private void assertPrintFieldValue(String expect, Object value,
- String fieldName) throws Exception {
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- StringBuilder sb = new StringBuilder();
- TextFormat.printFieldValue(
- TestAllTypes.getDescriptor().findFieldByName(fieldName),
- value, sb);
- assertEquals(expect, sb.toString());
- }
-
- public void testShortDebugString() {
- assertEquals("optional_nested_message { bb: 42 } repeated_int32: 1"
- + " repeated_uint32: 2",
- TextFormat.shortDebugString(TestAllTypes.newBuilder()
- .addRepeatedInt32(1)
- .addRepeatedUint32(2)
- .setOptionalNestedMessage(
- NestedMessage.newBuilder().setBb(42).build())
- .build()));
- }
-
- public void testShortDebugString_unknown() {
- assertEquals("5: 1 5: 0x00000002 5: 0x0000000000000003 5: \"4\" 5 { 10: 5 }"
- + " 8: 1 8: 2 8: 3 15: 12379813812177893520 15: 0xabcd1234 15:"
- + " 0xabcdef1234567890",
- TextFormat.shortDebugString(makeUnknownFieldSet()));
- }
-
- public void testPrintToUnicodeString() throws Exception {
- assertEquals(
- "optional_string: \"abc\u3042efg\"\n" +
- "optional_bytes: \"\\343\\201\\202\"\n" +
- "repeated_string: \"\u3093XYZ\"\n",
- TextFormat.printToUnicodeString(TestAllTypes.newBuilder()
- .setOptionalString("abc\u3042efg")
- .setOptionalBytes(bytes(0xe3, 0x81, 0x82))
- .addRepeatedString("\u3093XYZ")
- .build()));
-
- // Double quotes and backslashes should be escaped
- assertEquals(
- "optional_string: \"a\\\\bc\\\"ef\\\"g\"\n",
- TextFormat.printToUnicodeString(TestAllTypes.newBuilder()
- .setOptionalString("a\\bc\"ef\"g")
- .build()));
-
- // Test escaping roundtrip
- TestAllTypes message = TestAllTypes.newBuilder()
- .setOptionalString("a\\bc\\\"ef\"g")
- .build();
- TestAllTypes.Builder builder = TestAllTypes.newBuilder();
- TextFormat.merge(TextFormat.printToUnicodeString(message), builder);
- assertEquals(message.getOptionalString(), builder.getOptionalString());
- }
-
- public void testPrintToUnicodeStringWithNewlines() {
- // No newlines at start and end
- assertEquals("optional_string: \"test newlines\n\nin\nstring\"\n",
- TextFormat.printToUnicodeString(TestAllTypes.newBuilder()
- .setOptionalString("test newlines\n\nin\nstring")
- .build()));
-
- // Newlines at start and end
- assertEquals("optional_string: \"\ntest\nnewlines\n\nin\nstring\n\"\n",
- TextFormat.printToUnicodeString(TestAllTypes.newBuilder()
- .setOptionalString("\ntest\nnewlines\n\nin\nstring\n")
- .build()));
-
- // Strings with 0, 1 and 2 newlines.
- assertEquals("optional_string: \"\"\n",
- TextFormat.printToUnicodeString(TestAllTypes.newBuilder()
- .setOptionalString("")
- .build()));
- assertEquals("optional_string: \"\n\"\n",
- TextFormat.printToUnicodeString(TestAllTypes.newBuilder()
- .setOptionalString("\n")
- .build()));
- assertEquals("optional_string: \"\n\n\"\n",
- TextFormat.printToUnicodeString(TestAllTypes.newBuilder()
- .setOptionalString("\n\n")
- .build()));
- }
-
- public void testPrintToUnicodeString_unknown() {
- assertEquals(
- "1: \"\\343\\201\\202\"\n",
- TextFormat.printToUnicodeString(UnknownFieldSet.newBuilder()
- .addField(1,
- UnknownFieldSet.Field.newBuilder()
- .addLengthDelimited(bytes(0xe3, 0x81, 0x82)).build())
- .build()));
- }
-
- public void testParseNonRepeatedFields() throws Exception {
- assertParseSuccessWithOverwriteForbidden(
- "repeated_int32: 1\n" +
- "repeated_int32: 2\n");
- assertParseSuccessWithOverwriteForbidden(
- "RepeatedGroup { a: 1 }\n" +
- "RepeatedGroup { a: 2 }\n");
- assertParseSuccessWithOverwriteForbidden(
- "repeated_nested_message { bb: 1 }\n" +
- "repeated_nested_message { bb: 2 }\n");
- assertParseErrorWithOverwriteForbidden(
- "3:17: Non-repeated field " +
- "\"protobuf_unittest.TestAllTypes.optional_int32\" " +
- "cannot be overwritten.",
- "optional_int32: 1\n" +
- "optional_bool: true\n" +
- "optional_int32: 1\n");
- assertParseErrorWithOverwriteForbidden(
- "2:17: Non-repeated field " +
- "\"protobuf_unittest.TestAllTypes.optionalgroup\" " +
- "cannot be overwritten.",
- "OptionalGroup { a: 1 }\n" +
- "OptionalGroup { }\n");
- assertParseErrorWithOverwriteForbidden(
- "2:33: Non-repeated field " +
- "\"protobuf_unittest.TestAllTypes.optional_nested_message\" " +
- "cannot be overwritten.",
- "optional_nested_message { }\n" +
- "optional_nested_message { bb: 3 }\n");
- assertParseErrorWithOverwriteForbidden(
- "2:16: Non-repeated field " +
- "\"protobuf_unittest.TestAllTypes.default_int32\" " +
- "cannot be overwritten.",
- "default_int32: 41\n" + // the default value
- "default_int32: 41\n");
- assertParseErrorWithOverwriteForbidden(
- "2:17: Non-repeated field " +
- "\"protobuf_unittest.TestAllTypes.default_string\" " +
- "cannot be overwritten.",
- "default_string: \"zxcv\"\n" +
- "default_string: \"asdf\"\n");
- }
-
- public void testParseShortRepeatedFormOfRepeatedFields() throws Exception {
- assertParseSuccessWithOverwriteForbidden("repeated_foreign_enum: [FOREIGN_FOO, FOREIGN_BAR]");
- assertParseSuccessWithOverwriteForbidden("repeated_int32: [ 1, 2 ]\n");
- assertParseSuccessWithOverwriteForbidden("RepeatedGroup [{ a: 1 },{ a: 2 }]\n");
- assertParseSuccessWithOverwriteForbidden("repeated_nested_message [{ bb: 1 }, { bb: 2 }]\n");
- }
-
- public void testParseShortRepeatedFormOfNonRepeatedFields() throws Exception {
- assertParseErrorWithOverwriteForbidden(
- "1:17: Couldn't parse integer: For input string: \"[\"",
- "optional_int32: [1]\n");
- }
-
- // =======================================================================
- // test oneof
-
- public void testOneofTextFormat() throws Exception {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- TestUtil.setOneof(builder);
- TestOneof2 message = builder.build();
- TestOneof2.Builder dest = TestOneof2.newBuilder();
- TextFormat.merge(TextFormat.printToUnicodeString(message), dest);
- TestUtil.assertOneofSet(dest.build());
- }
-
- public void testOneofOverwriteForbidden() throws Exception {
- String input = "foo_string: \"stringvalue\" foo_int: 123";
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- try {
- parserWithOverwriteForbidden.merge(
- input, TestUtil.getExtensionRegistry(), builder);
- fail("Expected parse exception.");
- } catch (TextFormat.ParseException e) {
- assertEquals("1:36: Field \"protobuf_unittest.TestOneof2.foo_int\""
- + " is specified along with field \"protobuf_unittest.TestOneof2.foo_string\","
- + " another member of oneof \"foo\".", e.getMessage());
- }
- }
-
- public void testOneofOverwriteAllowed() throws Exception {
- String input = "foo_string: \"stringvalue\" foo_int: 123";
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- defaultParser.merge(input, TestUtil.getExtensionRegistry(), builder);
- // Only the last value sticks.
- TestOneof2 oneof = builder.build();
- assertFalse(oneof.hasFooString());
- assertTrue(oneof.hasFooInt());
- }
}
diff --git a/java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java b/java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java
index 93a5ee2..ea088b3 100644
--- a/java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java
+++ b/java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -31,13 +31,10 @@
package com.google.protobuf;
import protobuf_unittest.UnittestProto;
-import protobuf_unittest.UnittestProto.ForeignEnum;
import protobuf_unittest.UnittestProto.TestAllExtensions;
import protobuf_unittest.UnittestProto.TestAllTypes;
import protobuf_unittest.UnittestProto.TestEmptyMessage;
import protobuf_unittest.UnittestProto.TestEmptyMessageWithExtensions;
-import protobuf_unittest.UnittestProto.TestPackedExtensions;
-import protobuf_unittest.UnittestProto.TestPackedTypes;
import junit.framework.TestCase;
@@ -207,13 +204,6 @@ public class UnknownFieldSetTest extends TestCase {
TestEmptyMessage.newBuilder().mergeFrom(emptyMessage).clear().build();
assertEquals(0, message.getSerializedSize());
}
-
- public void testClearField() throws Exception {
- int fieldNumber = unknownFields.asMap().keySet().iterator().next();
- UnknownFieldSet fields =
- UnknownFieldSet.newBuilder().mergeFrom(unknownFields).clearField(fieldNumber).build();
- assertFalse(fields.hasField(fieldNumber));
- }
public void testParseKnownAndUnknown() throws Exception {
// Test mixing known and unknown fields when parsing.
@@ -444,210 +434,4 @@ public class UnknownFieldSetTest extends TestCase {
assertEquals(copy, set);
assertEquals(set.hashCode(), copy.hashCode());
}
-
- // =================================================================
-
- public void testSerializeLite() throws Exception {
- UnittestLite.TestEmptyMessageLite emptyMessageLite =
- UnittestLite.TestEmptyMessageLite.parseFrom(allFieldsData);
- assertEquals(allFieldsData.size(), emptyMessageLite.getSerializedSize());
- ByteString data = emptyMessageLite.toByteString();
- TestAllTypes message = TestAllTypes.parseFrom(data);
- TestUtil.assertAllFieldsSet(message);
- assertEquals(allFieldsData, data);
- }
-
- public void testAllExtensionsLite() throws Exception {
- TestAllExtensions allExtensions = TestUtil.getAllExtensionsSet();
- ByteString allExtensionsData = allExtensions.toByteString();
- UnittestLite.TestEmptyMessageLite emptyMessageLite =
- UnittestLite.TestEmptyMessageLite.PARSER.parseFrom(allExtensionsData);
- ByteString data = emptyMessageLite.toByteString();
- TestAllExtensions message =
- TestAllExtensions.parseFrom(data, TestUtil.getExtensionRegistry());
- TestUtil.assertAllExtensionsSet(message);
- assertEquals(allExtensionsData, data);
- }
-
- public void testAllPackedFieldsLite() throws Exception {
- TestPackedTypes allPackedFields = TestUtil.getPackedSet();
- ByteString allPackedData = allPackedFields.toByteString();
- UnittestLite.TestEmptyMessageLite emptyMessageLite =
- UnittestLite.TestEmptyMessageLite.parseFrom(allPackedData);
- ByteString data = emptyMessageLite.toByteString();
- TestPackedTypes message =
- TestPackedTypes.parseFrom(data, TestUtil.getExtensionRegistry());
- TestUtil.assertPackedFieldsSet(message);
- assertEquals(allPackedData, data);
- }
-
- public void testAllPackedExtensionsLite() throws Exception {
- TestPackedExtensions allPackedExtensions = TestUtil.getPackedExtensionsSet();
- ByteString allPackedExtensionsData = allPackedExtensions.toByteString();
- UnittestLite.TestEmptyMessageLite emptyMessageLite =
- UnittestLite.TestEmptyMessageLite.parseFrom(allPackedExtensionsData);
- ByteString data = emptyMessageLite.toByteString();
- TestPackedExtensions message =
- TestPackedExtensions.parseFrom(data, TestUtil.getExtensionRegistry());
- TestUtil.assertPackedExtensionsSet(message);
- assertEquals(allPackedExtensionsData, data);
- }
-
- public void testCopyFromLite() throws Exception {
- UnittestLite.TestEmptyMessageLite emptyMessageLite =
- UnittestLite.TestEmptyMessageLite.parseFrom(allFieldsData);
- UnittestLite.TestEmptyMessageLite emptyMessageLite2 =
- UnittestLite.TestEmptyMessageLite.newBuilder()
- .mergeFrom(emptyMessageLite).build();
- assertEquals(emptyMessageLite.toByteString(), emptyMessageLite2.toByteString());
- }
-
- public void testMergeFromLite() throws Exception {
- TestAllTypes message1 = TestAllTypes.newBuilder()
- .setOptionalInt32(1)
- .setOptionalString("foo")
- .addRepeatedString("bar")
- .setOptionalNestedEnum(TestAllTypes.NestedEnum.BAZ)
- .build();
-
- TestAllTypes message2 = TestAllTypes.newBuilder()
- .setOptionalInt64(2)
- .setOptionalString("baz")
- .addRepeatedString("qux")
- .setOptionalForeignEnum(ForeignEnum.FOREIGN_BAZ)
- .build();
-
- ByteString data1 = message1.toByteString();
- UnittestLite.TestEmptyMessageLite emptyMessageLite1 =
- UnittestLite.TestEmptyMessageLite.parseFrom(data1);
- ByteString data2 = message2.toByteString();
- UnittestLite.TestEmptyMessageLite emptyMessageLite2 =
- UnittestLite.TestEmptyMessageLite.parseFrom(data2);
-
- message1 = TestAllTypes.newBuilder(message1).mergeFrom(message2).build();
- emptyMessageLite1 = UnittestLite.TestEmptyMessageLite.newBuilder(emptyMessageLite1)
- .mergeFrom(emptyMessageLite2).build();
-
- data1 = emptyMessageLite1.toByteString();
- message2 = TestAllTypes.parseFrom(data1);
-
- assertEquals(message1, message2);
- }
-
- public void testWrongTypeTreatedAsUnknownLite() throws Exception {
- // Test that fields of the wrong wire type are treated like unknown fields
- // when parsing.
-
- ByteString bizarroData = getBizarroData();
- TestAllTypes allTypesMessage = TestAllTypes.parseFrom(bizarroData);
- UnittestLite.TestEmptyMessageLite emptyMessageLite =
- UnittestLite.TestEmptyMessageLite.parseFrom(bizarroData);
- ByteString data = emptyMessageLite.toByteString();
- TestAllTypes allTypesMessage2 = TestAllTypes.parseFrom(data);
-
- assertEquals(allTypesMessage.toString(), allTypesMessage2.toString());
- }
-
- public void testUnknownExtensionsLite() throws Exception {
- // Make sure fields are properly parsed to the UnknownFieldSet even when
- // they are declared as extension numbers.
-
- UnittestLite.TestEmptyMessageWithExtensionsLite message =
- UnittestLite.TestEmptyMessageWithExtensionsLite.parseFrom(allFieldsData);
-
- assertEquals(allFieldsData, message.toByteString());
- }
-
- public void testWrongExtensionTypeTreatedAsUnknownLite() throws Exception {
- // Test that fields of the wrong wire type are treated like unknown fields
- // when parsing extensions.
-
- ByteString bizarroData = getBizarroData();
- TestAllExtensions allExtensionsMessage =
- TestAllExtensions.parseFrom(bizarroData);
- UnittestLite.TestEmptyMessageLite emptyMessageLite =
- UnittestLite.TestEmptyMessageLite.parseFrom(bizarroData);
-
- // All fields should have been interpreted as unknown, so the byte strings
- // should be the same.
- assertEquals(emptyMessageLite.toByteString(),
- allExtensionsMessage.toByteString());
- }
-
- public void testParseUnknownEnumValueLite() throws Exception {
- Descriptors.FieldDescriptor singularField =
- TestAllTypes.getDescriptor().findFieldByName("optional_nested_enum");
- Descriptors.FieldDescriptor repeatedField =
- TestAllTypes.getDescriptor().findFieldByName("repeated_nested_enum");
- assertNotNull(singularField);
- assertNotNull(repeatedField);
-
- ByteString data =
- UnknownFieldSet.newBuilder()
- .addField(singularField.getNumber(),
- UnknownFieldSet.Field.newBuilder()
- .addVarint(TestAllTypes.NestedEnum.BAR.getNumber())
- .addVarint(5) // not valid
- .build())
- .addField(repeatedField.getNumber(),
- UnknownFieldSet.Field.newBuilder()
- .addVarint(TestAllTypes.NestedEnum.FOO.getNumber())
- .addVarint(4) // not valid
- .addVarint(TestAllTypes.NestedEnum.BAZ.getNumber())
- .addVarint(6) // not valid
- .build())
- .build()
- .toByteString();
-
- UnittestLite.TestEmptyMessageLite emptyMessageLite =
- UnittestLite.TestEmptyMessageLite.parseFrom(data);
- data = emptyMessageLite.toByteString();
-
- {
- TestAllTypes message = TestAllTypes.parseFrom(data);
- assertEquals(TestAllTypes.NestedEnum.BAR,
- message.getOptionalNestedEnum());
- assertEquals(
- Arrays.asList(TestAllTypes.NestedEnum.FOO, TestAllTypes.NestedEnum.BAZ),
- message.getRepeatedNestedEnumList());
- assertEquals(Arrays.asList(5L),
- message.getUnknownFields()
- .getField(singularField.getNumber())
- .getVarintList());
- assertEquals(Arrays.asList(4L, 6L),
- message.getUnknownFields()
- .getField(repeatedField.getNumber())
- .getVarintList());
- }
-
- {
- TestAllExtensions message =
- TestAllExtensions.parseFrom(data, TestUtil.getExtensionRegistry());
- assertEquals(TestAllTypes.NestedEnum.BAR,
- message.getExtension(UnittestProto.optionalNestedEnumExtension));
- assertEquals(
- Arrays.asList(TestAllTypes.NestedEnum.FOO, TestAllTypes.NestedEnum.BAZ),
- message.getExtension(UnittestProto.repeatedNestedEnumExtension));
- assertEquals(Arrays.asList(5L),
- message.getUnknownFields()
- .getField(singularField.getNumber())
- .getVarintList());
- assertEquals(Arrays.asList(4L, 6L),
- message.getUnknownFields()
- .getField(repeatedField.getNumber())
- .getVarintList());
- }
- }
-
- public void testClearLite() throws Exception {
- UnittestLite.TestEmptyMessageLite emptyMessageLite1 =
- UnittestLite.TestEmptyMessageLite.parseFrom(allFieldsData);
- UnittestLite.TestEmptyMessageLite emptyMessageLite2 =
- UnittestLite.TestEmptyMessageLite.newBuilder()
- .mergeFrom(emptyMessageLite1).clear().build();
- assertEquals(0, emptyMessageLite2.getSerializedSize());
- ByteString data = emptyMessageLite2.toByteString();
- assertEquals(0, data.size());
- }
-
}
diff --git a/java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java b/java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java
deleted file mode 100644
index b1c75fc..0000000
--- a/java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java
+++ /dev/null
@@ -1,227 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package com.google.protobuf;
-
-import junit.framework.TestCase;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-/**
- * Tests for {@link UnmodifiableLazyStringList}.
- *
- * @author jonp@google.com (Jon Perlow)
- */
-public class UnmodifiableLazyStringListTest extends TestCase {
-
- private static String STRING_A = "A";
- private static String STRING_B = "B";
- private static String STRING_C = "C";
-
- private static ByteString BYTE_STRING_A = ByteString.copyFromUtf8("A");
- private static ByteString BYTE_STRING_B = ByteString.copyFromUtf8("B");
- private static ByteString BYTE_STRING_C = ByteString.copyFromUtf8("C");
-
- public void testReadOnlyMethods() {
- LazyStringArrayList rawList = createSampleList();
- UnmodifiableLazyStringList list = new UnmodifiableLazyStringList(rawList);
- assertEquals(3, list.size());
- assertSame(STRING_A, list.get(0));
- assertSame(STRING_B, list.get(1));
- assertSame(STRING_C, list.get(2));
- assertEquals(BYTE_STRING_A, list.getByteString(0));
- assertEquals(BYTE_STRING_B, list.getByteString(1));
- assertEquals(BYTE_STRING_C, list.getByteString(2));
-
- List<ByteString> byteStringList = list.asByteStringList();
- assertSame(list.getByteString(0), byteStringList.get(0));
- assertSame(list.getByteString(1), byteStringList.get(1));
- assertSame(list.getByteString(2), byteStringList.get(2));
- }
-
- public void testModifyMethods() {
- LazyStringArrayList rawList = createSampleList();
- UnmodifiableLazyStringList list = new UnmodifiableLazyStringList(rawList);
-
- try {
- list.remove(0);
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- assertEquals(3, list.size());
-
- try {
- list.add(STRING_B);
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- assertEquals(3, list.size());
-
- try {
- list.set(1, STRING_B);
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- assertEquals(3, list.size());
-
- List<ByteString> byteStringList = list.asByteStringList();
- try {
- byteStringList.remove(0);
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- assertEquals(3, list.size());
- assertEquals(3, byteStringList.size());
-
- try {
- byteStringList.add(BYTE_STRING_B);
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- assertEquals(3, list.size());
- assertEquals(3, byteStringList.size());
-
- try {
- byteStringList.set(1, BYTE_STRING_B);
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- assertEquals(3, list.size());
- assertEquals(3, byteStringList.size());
- }
-
- public void testIterator() {
- LazyStringArrayList rawList = createSampleList();
- UnmodifiableLazyStringList list = new UnmodifiableLazyStringList(rawList);
-
- Iterator<String> iter = list.iterator();
- int count = 0;
- while (iter.hasNext()) {
- iter.next();
- count++;
- try {
- iter.remove();
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- }
- assertEquals(3, count);
-
- List<ByteString> byteStringList = list.asByteStringList();
- Iterator<ByteString> byteIter = byteStringList.iterator();
- count = 0;
- while (byteIter.hasNext()) {
- byteIter.next();
- count++;
- try {
- byteIter.remove();
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- }
- assertEquals(3, count);
- }
-
- public void testListIterator() {
- LazyStringArrayList rawList = createSampleList();
- UnmodifiableLazyStringList list = new UnmodifiableLazyStringList(rawList);
-
- ListIterator<String> iter = list.listIterator();
- int count = 0;
- while (iter.hasNext()) {
- iter.next();
- count++;
- try {
- iter.remove();
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- try {
- iter.set("bar");
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- try {
- iter.add("bar");
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- }
- assertEquals(3, count);
-
- List<ByteString> byteStringList = list.asByteStringList();
- ListIterator<ByteString> byteIter = byteStringList.listIterator();
- count = 0;
- while (byteIter.hasNext()) {
- byteIter.next();
- count++;
- try {
- byteIter.remove();
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- try {
- byteIter.set(BYTE_STRING_A);
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- try {
- byteIter.add(BYTE_STRING_A);
- fail();
- } catch (UnsupportedOperationException e) {
- // expected
- }
- }
- assertEquals(3, count);
- }
-
- private LazyStringArrayList createSampleList() {
- LazyStringArrayList rawList = new LazyStringArrayList();
- rawList.add(STRING_A);
- rawList.add(STRING_B);
- rawList.add(STRING_C);
- return rawList;
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/WireFormatTest.java b/java/src/test/java/com/google/protobuf/WireFormatTest.java
index 6858524..5ea1dd6 100644
--- a/java/src/test/java/com/google/protobuf/WireFormatTest.java
+++ b/java/src/test/java/com/google/protobuf/WireFormatTest.java
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -34,14 +34,11 @@ import junit.framework.TestCase;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
-import java.util.List;
import protobuf_unittest.UnittestProto;
import protobuf_unittest.UnittestProto.TestAllExtensions;
import protobuf_unittest.UnittestProto.TestAllTypes;
import protobuf_unittest.UnittestProto.TestFieldOrderings;
-import protobuf_unittest.UnittestProto.TestOneof2;
-import protobuf_unittest.UnittestProto.TestOneofBackwardsCompatible;
import protobuf_unittest.UnittestProto.TestPackedExtensions;
import protobuf_unittest.UnittestProto.TestPackedTypes;
import protobuf_unittest.UnittestMset.TestMessageSet;
@@ -220,8 +217,8 @@ public class WireFormatTest extends TestCase {
}
public void testExtensionsSerializedSize() throws Exception {
- assertNotSame(TestUtil.getAllSet().getSerializedSize(),
- TestUtil.getAllExtensionsSet().getSerializedSize());
+ assertEquals(TestUtil.getAllSet().getSerializedSize(),
+ TestUtil.getAllExtensionsSet().getSerializedSize());
}
public void testSerializeDelimited() throws Exception {
@@ -331,17 +328,7 @@ public class WireFormatTest extends TestCase {
private static final int TYPE_ID_2 =
TestMessageSetExtension2.getDescriptor().getExtensions().get(0).getNumber();
- public void testSerializeMessageSetEagerly() throws Exception {
- testSerializeMessageSetWithFlag(true);
- }
-
- public void testSerializeMessageSetNotEagerly() throws Exception {
- testSerializeMessageSetWithFlag(false);
- }
-
- private void testSerializeMessageSetWithFlag(boolean eagerParsing)
- throws Exception {
- ExtensionRegistryLite.setEagerlyParseMessageSets(eagerParsing);
+ public void testSerializeMessageSet() throws Exception {
// Set up a TestMessageSet with two known messages and an unknown one.
TestMessageSet messageSet =
TestMessageSet.newBuilder()
@@ -385,17 +372,7 @@ public class WireFormatTest extends TestCase {
assertEquals("bar", raw.getItem(2).getMessage().toStringUtf8());
}
- public void testParseMessageSetEagerly() throws Exception {
- testParseMessageSetWithFlag(true);
- }
-
- public void testParseMessageSetNotEagerly()throws Exception {
- testParseMessageSetWithFlag(false);
- }
-
- private void testParseMessageSetWithFlag(boolean eagerParsing)
- throws Exception {
- ExtensionRegistryLite.setEagerlyParseMessageSets(eagerParsing);
+ public void testParseMessageSet() throws Exception {
ExtensionRegistry extensionRegistry = ExtensionRegistry.newInstance();
extensionRegistry.add(TestMessageSetExtension1.messageSetExtension);
extensionRegistry.add(TestMessageSetExtension2.messageSetExtension);
@@ -447,160 +424,4 @@ public class WireFormatTest extends TestCase {
assertEquals(1, field.getLengthDelimitedList().size());
assertEquals("bar", field.getLengthDelimitedList().get(0).toStringUtf8());
}
-
- public void testParseMessageSetExtensionEagerly() throws Exception {
- testParseMessageSetExtensionWithFlag(true);
- }
-
- public void testParseMessageSetExtensionNotEagerly() throws Exception {
- testParseMessageSetExtensionWithFlag(false);
- }
-
- private void testParseMessageSetExtensionWithFlag(boolean eagerParsing)
- throws Exception {
- ExtensionRegistryLite.setEagerlyParseMessageSets(eagerParsing);
- ExtensionRegistry extensionRegistry = ExtensionRegistry.newInstance();
- extensionRegistry.add(TestMessageSetExtension1.messageSetExtension);
-
- // Set up a RawMessageSet with a known messages.
- int TYPE_ID_1 =
- TestMessageSetExtension1
- .getDescriptor().getExtensions().get(0).getNumber();
- RawMessageSet raw =
- RawMessageSet.newBuilder()
- .addItem(
- RawMessageSet.Item.newBuilder()
- .setTypeId(TYPE_ID_1)
- .setMessage(
- TestMessageSetExtension1.newBuilder()
- .setI(123)
- .build().toByteString())
- .build())
- .build();
-
- ByteString data = raw.toByteString();
-
- // Parse as a TestMessageSet and check the contents.
- TestMessageSet messageSet =
- TestMessageSet.parseFrom(data, extensionRegistry);
- assertEquals(123, messageSet.getExtension(
- TestMessageSetExtension1.messageSetExtension).getI());
- }
-
- public void testMergeLazyMessageSetExtensionEagerly() throws Exception {
- testMergeLazyMessageSetExtensionWithFlag(true);
- }
-
- public void testMergeLazyMessageSetExtensionNotEagerly() throws Exception {
- testMergeLazyMessageSetExtensionWithFlag(false);
- }
-
- private void testMergeLazyMessageSetExtensionWithFlag(boolean eagerParsing)
- throws Exception {
- ExtensionRegistryLite.setEagerlyParseMessageSets(eagerParsing);
- ExtensionRegistry extensionRegistry = ExtensionRegistry.newInstance();
- extensionRegistry.add(TestMessageSetExtension1.messageSetExtension);
-
- // Set up a RawMessageSet with a known messages.
- int TYPE_ID_1 =
- TestMessageSetExtension1
- .getDescriptor().getExtensions().get(0).getNumber();
- RawMessageSet raw =
- RawMessageSet.newBuilder()
- .addItem(
- RawMessageSet.Item.newBuilder()
- .setTypeId(TYPE_ID_1)
- .setMessage(
- TestMessageSetExtension1.newBuilder()
- .setI(123)
- .build().toByteString())
- .build())
- .build();
-
- ByteString data = raw.toByteString();
-
- // Parse as a TestMessageSet and store value into lazy field
- TestMessageSet messageSet =
- TestMessageSet.parseFrom(data, extensionRegistry);
- // Merge lazy field check the contents.
- messageSet =
- messageSet.toBuilder().mergeFrom(data, extensionRegistry).build();
- assertEquals(123, messageSet.getExtension(
- TestMessageSetExtension1.messageSetExtension).getI());
- }
-
- public void testMergeMessageSetExtensionEagerly() throws Exception {
- testMergeMessageSetExtensionWithFlag(true);
- }
-
- public void testMergeMessageSetExtensionNotEagerly() throws Exception {
- testMergeMessageSetExtensionWithFlag(false);
- }
-
- private void testMergeMessageSetExtensionWithFlag(boolean eagerParsing)
- throws Exception {
- ExtensionRegistryLite.setEagerlyParseMessageSets(eagerParsing);
- ExtensionRegistry extensionRegistry = ExtensionRegistry.newInstance();
- extensionRegistry.add(TestMessageSetExtension1.messageSetExtension);
-
- // Set up a RawMessageSet with a known messages.
- int TYPE_ID_1 =
- TestMessageSetExtension1
- .getDescriptor().getExtensions().get(0).getNumber();
- RawMessageSet raw =
- RawMessageSet.newBuilder()
- .addItem(
- RawMessageSet.Item.newBuilder()
- .setTypeId(TYPE_ID_1)
- .setMessage(
- TestMessageSetExtension1.newBuilder()
- .setI(123)
- .build().toByteString())
- .build())
- .build();
-
- // Serialize RawMessageSet unnormally (message value before type id)
- ByteString.CodedBuilder out = ByteString.newCodedBuilder(
- raw.getSerializedSize());
- CodedOutputStream output = out.getCodedOutput();
- List<RawMessageSet.Item> items = raw.getItemList();
- for (int i = 0; i < items.size(); i++) {
- RawMessageSet.Item item = items.get(i);
- output.writeTag(1, WireFormat.WIRETYPE_START_GROUP);
- output.writeBytes(3, item.getMessage());
- output.writeInt32(2, item.getTypeId());
- output.writeTag(1, WireFormat.WIRETYPE_END_GROUP);
- }
- ByteString data = out.build();
-
- // Merge bytes into TestMessageSet and check the contents.
- TestMessageSet messageSet =
- TestMessageSet.newBuilder().mergeFrom(data, extensionRegistry).build();
- assertEquals(123, messageSet.getExtension(
- TestMessageSetExtension1.messageSetExtension).getI());
- }
-
- // ================================================================
- // oneof
- public void testOneofWireFormat() throws Exception {
- TestOneof2.Builder builder = TestOneof2.newBuilder();
- TestUtil.setOneof(builder);
- TestOneof2 message = builder.build();
- ByteString rawBytes = message.toByteString();
-
- assertEquals(rawBytes.size(), message.getSerializedSize());
-
- TestOneof2 message2 = TestOneof2.parseFrom(rawBytes);
- TestUtil.assertOneofSet(message2);
- }
-
- public void testOneofOnlyLastSet() throws Exception {
- TestOneofBackwardsCompatible source = TestOneofBackwardsCompatible
- .newBuilder().setFooInt(100).setFooString("101").build();
-
- ByteString rawBytes = source.toByteString();
- TestOneof2 message = TestOneof2.parseFrom(rawBytes);
- assertFalse(message.hasFooInt());
- assertTrue(message.hasFooString());
- }
}
diff --git a/java/src/test/java/com/google/protobuf/lazy_fields_lite.proto b/java/src/test/java/com/google/protobuf/lazy_fields_lite.proto
deleted file mode 100644
index baed4e1..0000000
--- a/java/src/test/java/com/google/protobuf/lazy_fields_lite.proto
+++ /dev/null
@@ -1,61 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: Naoki Iwasaki (niwasaki@google.com)
-//
-// A proto file with lazy fields
-
-
-package protobuf_unittest;
-
-option optimize_for = LITE_RUNTIME;
-
-message LazyMessageLite {
- optional int32 num = 1;
- optional int32 num_with_default = 2 [default = 421];
- optional LazyInnerMessageLite inner = 3 [lazy = true];
- repeated LazyInnerMessageLite repeated_inner = 4 [lazy = true];
-
- oneof oneof_field {
- int32 oneof_num = 5;
- LazyInnerMessageLite oneof_inner = 6 [lazy = true];
- }
-}
-
-message LazyInnerMessageLite {
- optional int32 num = 1;
- optional int32 num_with_default = 2 [default = 42];
- optional LazyNestedInnerMessageLite nested = 3 [lazy = true];
-}
-
-message LazyNestedInnerMessageLite {
- optional int32 num = 1;
- optional int32 num_with_default = 2 [default = 4];
-}
diff --git a/java/src/test/java/com/google/protobuf/lite_equals_and_hash.proto b/java/src/test/java/com/google/protobuf/lite_equals_and_hash.proto
deleted file mode 100644
index 6861567..0000000
--- a/java/src/test/java/com/google/protobuf/lite_equals_and_hash.proto
+++ /dev/null
@@ -1,55 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: pbogle@google.com (Phil Bogle)
-
-
-package protobuf_unittest.lite_equals_and_hash;
-
-// This proto definition is used to test that java_generate_equals_and_hash
-// works correctly with the LITE_RUNTIME.
-option java_generate_equals_and_hash = true;
-option optimize_for = LITE_RUNTIME;
-
-message Foo {
- optional int32 value = 1;
- repeated Bar bar = 2;
-}
-
-message Bar {
- optional string name = 1;
-}
-
-message BarPrime {
- optional string name = 1;
-}
-
-message Empty {
-}
diff --git a/java/src/test/java/com/google/protobuf/multiple_files_test.proto b/java/src/test/java/com/google/protobuf/multiple_files_test.proto
index 7ec89a0..060f159 100644
--- a/java/src/test/java/com/google/protobuf/multiple_files_test.proto
+++ b/java/src/test/java/com/google/protobuf/multiple_files_test.proto
@@ -1,6 +1,6 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
+// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@@ -33,19 +33,13 @@
// A proto file which tests the java_multiple_files option.
-// Some generic_services option(s) added automatically.
-// See: http://go/proto2-generic-services-default
-option java_generic_services = true; // auto-added
-
import "google/protobuf/unittest.proto";
-import "google/protobuf/descriptor.proto";
package protobuf_unittest;
option java_multiple_files = true;
option java_outer_classname = "MultipleFilesTestProto";
-
message MessageWithNoOuter {
message NestedMessage {
optional int32 i = 1;
@@ -59,12 +53,8 @@ message MessageWithNoOuter {
optional EnumWithNoOuter foreign_enum = 4;
}
-extend google.protobuf.EnumValueOptions {
- optional int32 enum_value_option = 7654321;
-}
-
enum EnumWithNoOuter {
- FOO = 1 [(enum_value_option) = 12345];
+ FOO = 1;
BAR = 2;
}
diff --git a/java/src/test/java/com/google/protobuf/nested_builders_test.proto b/java/src/test/java/com/google/protobuf/nested_builders_test.proto
deleted file mode 100644
index 8ab4a43..0000000
--- a/java/src/test/java/com/google/protobuf/nested_builders_test.proto
+++ /dev/null
@@ -1,53 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: jonp@google.com (Jon Perlow)
-//
-
-package protobuf_unittest;
-
-option java_multiple_files = true;
-option java_outer_classname = "NestedBuilders";
-
-
-message Vehicle {
- optional Engine engine = 1;
- repeated Wheel wheel = 2;
-}
-
-message Engine {
- optional int32 cylinder = 1;
- optional int32 liters = 2;
-}
-
-message Wheel {
- optional int32 radius = 1;
- optional int32 width = 2;
-}
diff --git a/java/src/test/java/com/google/protobuf/nested_extension.proto b/java/src/test/java/com/google/protobuf/nested_extension.proto
deleted file mode 100644
index 8649286..0000000
--- a/java/src/test/java/com/google/protobuf/nested_extension.proto
+++ /dev/null
@@ -1,46 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: Darick Tong (darick@google.com)
-//
-// A proto file with nested extensions. Note that this must be defined in
-// a separate file to properly test the initialization of the outer class.
-
-
-import "com/google/protobuf/non_nested_extension.proto";
-
-package protobuf_unittest;
-
-
-message MyNestedExtension {
- extend MessageToBeExtended {
- optional MessageToBeExtended recursiveExtension = 2;
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/nested_extension_lite.proto b/java/src/test/java/com/google/protobuf/nested_extension_lite.proto
deleted file mode 100644
index 9c68682..0000000
--- a/java/src/test/java/com/google/protobuf/nested_extension_lite.proto
+++ /dev/null
@@ -1,48 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: Darick Tong (darick@google.com)
-//
-// A proto file with nested extensions for a MessageLite messages. Note that
-// this must be defined in a separate file to properly test the initialization
-// of the outer class.
-
-
-package protobuf_unittest;
-
-option optimize_for = LITE_RUNTIME;
-
-import "com/google/protobuf/non_nested_extension_lite.proto";
-
-message MyNestedExtensionLite {
- extend MessageLiteToBeExtended {
- optional MessageLiteToBeExtended recursiveExtensionLite = 3;
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/non_nested_extension.proto b/java/src/test/java/com/google/protobuf/non_nested_extension.proto
deleted file mode 100644
index cb2f8b0..0000000
--- a/java/src/test/java/com/google/protobuf/non_nested_extension.proto
+++ /dev/null
@@ -1,49 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: Darick Tong (darick@google.com)
-//
-// A proto file with extensions.
-
-
-package protobuf_unittest;
-
-
-message MessageToBeExtended {
- extensions 1 to max;
-}
-
-message MyNonNestedExtension {
-}
-
-extend MessageToBeExtended {
- optional MyNonNestedExtension nonNestedExtension = 1;
-}
-
diff --git a/java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto b/java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto
deleted file mode 100644
index c1f744b..0000000
--- a/java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto
+++ /dev/null
@@ -1,50 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: Darick Tong (darick@google.com)
-//
-// A proto file with extensions for a MessageLite messages.
-
-
-package protobuf_unittest;
-
-option optimize_for = LITE_RUNTIME;
-
-message MessageLiteToBeExtended {
- extensions 1 to max;
-}
-
-message MyNonNestedExtensionLite {
-}
-
-extend MessageLiteToBeExtended {
- optional MyNonNestedExtensionLite nonNestedExtensionLite = 1;
-}
-
diff --git a/java/src/test/java/com/google/protobuf/outer_class_name_test.proto b/java/src/test/java/com/google/protobuf/outer_class_name_test.proto
deleted file mode 100644
index c5114f8..0000000
--- a/java/src/test/java/com/google/protobuf/outer_class_name_test.proto
+++ /dev/null
@@ -1,38 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package protobuf_unittest;
-
-
-// This message's name is the same with the default outer class name of this
-// proto file. It's used to test if the compiler can avoid this conflict
-// correctly.
-message OuterClassNameTest {
-}
diff --git a/java/src/test/java/com/google/protobuf/outer_class_name_test2.proto b/java/src/test/java/com/google/protobuf/outer_class_name_test2.proto
deleted file mode 100644
index 741cd28..0000000
--- a/java/src/test/java/com/google/protobuf/outer_class_name_test2.proto
+++ /dev/null
@@ -1,42 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package protobuf_unittest;
-
-
-message TestMessage2 {
- message NestedMessage {
- // This message's name is the same with the default outer class name of this
- // proto file. It's used to test if the compiler can avoid this conflict
- // correctly.
- message OuterClassNameTest2 {
- }
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/outer_class_name_test3.proto b/java/src/test/java/com/google/protobuf/outer_class_name_test3.proto
deleted file mode 100644
index 5d5d4ac..0000000
--- a/java/src/test/java/com/google/protobuf/outer_class_name_test3.proto
+++ /dev/null
@@ -1,43 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package protobuf_unittest;
-
-
-message TestMessage3 {
- message NestedMessage {
- // This enum's name is the same with the default outer class name of this
- // proto file. It's used to test if the compiler can avoid this conflict
- // correctly.
- enum OuterClassNameTest3 {
- DUMMY_VALUE = 1;
- }
- }
-}
diff --git a/java/src/test/java/com/google/protobuf/test_bad_identifiers.proto b/java/src/test/java/com/google/protobuf/test_bad_identifiers.proto
deleted file mode 100644
index 202e8c9..0000000
--- a/java/src/test/java/com/google/protobuf/test_bad_identifiers.proto
+++ /dev/null
@@ -1,157 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: jonp@google.com (Jon Perlow)
-
-// This file tests that various identifiers work as field and type names even
-// though the same identifiers are used internally by the java code generator.
-
-
-// Some generic_services option(s) added automatically.
-// See: http://go/proto2-generic-services-default
-option java_generic_services = true; // auto-added
-
-package io_protocol_tests;
-
-option java_package = "com.google.protobuf";
-option java_outer_classname = "TestBadIdentifiersProto";
-option java_generate_equals_and_hash = true;
-
-message TestMessage {
- optional string cached_size = 1;
- optional string serialized_size = 2;
- optional string class = 3;
-}
-
-message Descriptor {
- option no_standard_descriptor_accessor = true;
- optional string descriptor = 1;
- message NestedDescriptor {
- option no_standard_descriptor_accessor = true;
- optional string descriptor = 1;
- }
- optional NestedDescriptor nested_descriptor = 2;
- enum NestedEnum {
- FOO = 1;
- }
-}
-
-message Parser {
- enum ParserEnum {
- PARSER = 1;
- }
- optional ParserEnum parser = 1;
-}
-
-message Deprecated {
- enum TestEnum {
- FOO = 1;
-
- // Test if @Deprecated annotation conflicts with Deprecated message name.
- BAR = 2 [ deprecated = true ];
- }
-
- optional int32 field1 = 1 [deprecated=true];
- optional TestEnum field2 = 2 [deprecated=true];
- optional TestMessage field3 = 3 [deprecated=true];
-}
-
-message Override {
- optional int32 override = 1;
-}
-
-message Object {
- optional int32 object = 1;
- optional string string_object = 2;
-}
-
-message String {
- optional string string = 1;
-}
-
-message Integer {
- optional int32 integer = 1;
-}
-
-message Long {
- optional int32 long = 1;
-}
-
-message Float {
- optional float float = 1;
-}
-
-message Double {
- optional double double = 1;
-}
-
-service TestConflictingMethodNames {
- rpc Override(TestMessage) returns (TestMessage);
-}
-
-message TestConflictingFieldNames {
- enum TestEnum {
- FOO = 1;
- }
- message TestMessage {
- }
- repeated int32 int32_field = 1;
- repeated TestEnum enum_field = 2;
- repeated string string_field = 3;
- repeated bytes bytes_field = 4;
- repeated TestMessage message_field = 5;
-
- optional int32 int32_field_count = 11;
- optional TestEnum enum_field_count = 12;
- optional string string_field_count = 13;
- optional bytes bytes_field_count = 14;
- optional TestMessage message_field_count = 15;
-
- repeated int32 Int32Field = 21;
- repeated TestEnum EnumField = 22;
- repeated string StringField = 23;
- repeated bytes BytesField = 24;
- repeated TestMessage MessageField = 25;
-
- // This field conflicts with "int32_field" as they both generate
- // the method getInt32FieldList().
- required int32 int32_field_list = 31;
-
- extensions 1000 to max;
-
- repeated int64 int64_field = 41;
- extend TestConflictingFieldNames {
- // We don't generate accessors for extensions so the following extension
- // fields don't conflict with the repeated field "int64_field".
- optional int64 int64_field_count = 1001;
- optional int64 int64_field_list = 1002;
- }
-}
-
diff --git a/java/src/test/java/com/google/protobuf/test_check_utf8.proto b/java/src/test/java/com/google/protobuf/test_check_utf8.proto
deleted file mode 100644
index 206946d..0000000
--- a/java/src/test/java/com/google/protobuf/test_check_utf8.proto
+++ /dev/null
@@ -1,50 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: Jacob Butcher (jbaum@google.com)
-//
-// Test file option java_string_check_utf8.
-
-package proto2_test_check_utf8;
-
-option java_outer_classname = "TestCheckUtf8";
-option java_string_check_utf8 = true;
-
-message StringWrapper {
- required string req = 1;
- optional string opt = 2;
- repeated string rep = 3;
-}
-
-message BytesWrapper {
- required bytes req = 1;
- optional bytes opt = 2;
- repeated bytes rep = 3;
-}
diff --git a/java/src/test/java/com/google/protobuf/test_check_utf8_size.proto b/java/src/test/java/com/google/protobuf/test_check_utf8_size.proto
deleted file mode 100644
index fa057a8..0000000
--- a/java/src/test/java/com/google/protobuf/test_check_utf8_size.proto
+++ /dev/null
@@ -1,51 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: Jacob Butcher (jbaum@google.com)
-//
-// Test file option java_string_check_utf8.
-
-package proto2_test_check_utf8_size;
-
-option java_outer_classname = "TestCheckUtf8Size";
-option java_string_check_utf8 = true;
-option optimize_for = CODE_SIZE;
-
-message StringWrapperSize {
- required string req = 1;
- optional string opt = 2;
- repeated string rep = 3;
-}
-
-message BytesWrapperSize {
- required bytes req = 1;
- optional bytes opt = 2;
- repeated bytes rep = 3;
-}
diff --git a/java/src/test/java/com/google/protobuf/test_custom_options.proto b/java/src/test/java/com/google/protobuf/test_custom_options.proto
deleted file mode 100644
index f6a5ecd..0000000
--- a/java/src/test/java/com/google/protobuf/test_custom_options.proto
+++ /dev/null
@@ -1,43 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: Feng Xiao (xiaofeng@google.com)
-//
-// Test that custom options defined in a proto file's dependencies are properly
-// initialized.
-
-package protobuf_unittest;
-
-
-import "google/protobuf/unittest_custom_options.proto";
-
-message TestMessageWithCustomOptionsContainer {
- optional TestMessageWithCustomOptions field = 1;
-}
diff --git a/java/src/test/java/com/google/protobuf/test_extra_interfaces.proto b/java/src/test/java/com/google/protobuf/test_extra_interfaces.proto
deleted file mode 100644
index 72e05a3..0000000
--- a/java/src/test/java/com/google/protobuf/test_extra_interfaces.proto
+++ /dev/null
@@ -1,60 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: Darick Tong (darick@google.com)
-
-package protobuf_unittest;
-
-message Proto1 {
- option experimental_java_message_interface =
- "com.google.protobuf.ExtraInterfaces.HasBoolValue";
-
- option experimental_java_interface_extends =
- "com.google.protobuf.ExtraInterfaces.HasByteValue";
-
- option experimental_java_message_interface =
- "com.google.protobuf.ExtraInterfaces.HasStringValue<Proto1>";
-
- option experimental_java_builder_interface =
- "com.google.protobuf.ExtraInterfaces.HasStringValueBuilder"
- "<Proto1, Builder>";
-
- optional string string_value = 1;
- optional bool bool_value = 2;
- optional bytes byte_value = 3;
- optional int32 int_value = 4;
-}
-
-message Proto2 {
- option experimental_java_message_interface =
- "com.google.protobuf.ExtraInterfaces.HasBoolValue";
-
- optional bool bool_value = 1;
-}