diff options
author | Wink Saville <wink@google.com> | 2010-05-29 13:00:38 -0700 |
---|---|---|
committer | Wink Saville <wink@google.com> | 2010-05-29 13:00:38 -0700 |
commit | d0332953cda33fb4f8e24ebff9c49159b69c43d6 (patch) | |
tree | 81612e8b12f590310aeb0ebf1da37b304eb7baa6 /java/src/test | |
parent | ede38fe9b9f93888e6e41afc7abb09525f44da95 (diff) | |
download | external_protobuf-d0332953cda33fb4f8e24ebff9c49159b69c43d6.zip external_protobuf-d0332953cda33fb4f8e24ebff9c49159b69c43d6.tar.gz external_protobuf-d0332953cda33fb4f8e24ebff9c49159b69c43d6.tar.bz2 |
Add protobuf 2.3.0 sources
This is the contents of protobuf-2.3.0.tar.bz2 from
http://code.google.com/p/protobuf/downloads/list.
Change-Id: Idfde09ce7ef5ac027b07ee83f2674fbbed5c30b2
Diffstat (limited to 'java/src/test')
11 files changed, 365 insertions, 2978 deletions
diff --git a/java/src/test/java/com/google/protobuf/AbstractMessageTest.java b/java/src/test/java/com/google/protobuf/AbstractMessageTest.java index 2c59fd0..c44d660 100644 --- a/java/src/test/java/com/google/protobuf/AbstractMessageTest.java +++ b/java/src/test/java/com/google/protobuf/AbstractMessageTest.java @@ -38,6 +38,7 @@ import protobuf_unittest.UnittestProto.TestAllTypes; import protobuf_unittest.UnittestProto.TestPackedTypes; import protobuf_unittest.UnittestProto.TestRequired; import protobuf_unittest.UnittestProto.TestRequiredForeign; +import protobuf_unittest.UnittestProto.TestUnpackedTypes; import junit.framework.TestCase; @@ -238,6 +239,43 @@ public class AbstractMessageTest extends TestCase { TestUtil.assertPackedFieldsSet((TestPackedTypes) message.wrappedMessage); } + public void testUnpackedSerialization() throws Exception { + Message abstractMessage = + new AbstractMessageWrapper(TestUtil.getUnpackedSet()); + + TestUtil.assertUnpackedFieldsSet( + TestUnpackedTypes.parseFrom(abstractMessage.toByteString())); + + assertEquals(TestUtil.getUnpackedSet().toByteString(), + abstractMessage.toByteString()); + } + + public void testParsePackedToUnpacked() throws Exception { + AbstractMessageWrapper.Builder builder = + new AbstractMessageWrapper.Builder(TestUnpackedTypes.newBuilder()); + AbstractMessageWrapper message = + builder.mergeFrom(TestUtil.getPackedSet().toByteString()).build(); + TestUtil.assertUnpackedFieldsSet( + (TestUnpackedTypes) message.wrappedMessage); + } + + public void testParseUnpackedToPacked() throws Exception { + AbstractMessageWrapper.Builder builder = + new AbstractMessageWrapper.Builder(TestPackedTypes.newBuilder()); + AbstractMessageWrapper message = + builder.mergeFrom(TestUtil.getUnpackedSet().toByteString()).build(); + TestUtil.assertPackedFieldsSet((TestPackedTypes) message.wrappedMessage); + } + + public void testUnpackedParsing() throws Exception { + AbstractMessageWrapper.Builder builder = + new AbstractMessageWrapper.Builder(TestUnpackedTypes.newBuilder()); + AbstractMessageWrapper message = + builder.mergeFrom(TestUtil.getUnpackedSet().toByteString()).build(); + TestUtil.assertUnpackedFieldsSet( + (TestUnpackedTypes) message.wrappedMessage); + } + public void testOptimizedForSize() throws Exception { // We're mostly only checking that this class was compiled successfully. TestOptimizedForSize message = diff --git a/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java b/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java index 850b8aa..6acd322 100644 --- a/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java +++ b/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java @@ -434,6 +434,7 @@ public class CodedInputStreamTest extends TestCase { new SmallBlockInputStream(new byte[256], 8)); input.setSizeLimit(16); input.readRawBytes(16); + assertEquals(16, input.getTotalBytesRead()); try { input.readRawByte(); @@ -443,7 +444,10 @@ public class CodedInputStreamTest extends TestCase { } input.resetSizeCounter(); + assertEquals(0, input.getTotalBytesRead()); input.readRawByte(); // No exception thrown. + input.resetSizeCounter(); + assertEquals(0, input.getTotalBytesRead()); try { input.readRawBytes(16); // Hits limit again. @@ -477,10 +481,27 @@ public class CodedInputStreamTest extends TestCase { 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()); } // eof assertEquals(0, in.readTag()); + assertEquals(5, in.getTotalBytesRead()); + } + + public void testInvalidTag() throws Exception { + // Any tag number which corresponds to field number zero is invalid and + // should throw InvalidProtocolBufferException. + for (int i = 0; i < 8; i++) { + try { + CodedInputStream.newInstance(bytes(i)).readTag(); + fail("Should have thrown an exception."); + } catch (InvalidProtocolBufferException e) { + assertEquals(InvalidProtocolBufferException.invalidTag().getMessage(), + e.getMessage()); + } + } } } diff --git a/java/src/test/java/com/google/protobuf/DescriptorsTest.java b/java/src/test/java/com/google/protobuf/DescriptorsTest.java index c5c38b2..f41d070 100644 --- a/java/src/test/java/com/google/protobuf/DescriptorsTest.java +++ b/java/src/test/java/com/google/protobuf/DescriptorsTest.java @@ -30,6 +30,10 @@ package com.google.protobuf; +import com.google.protobuf.DescriptorProtos.DescriptorProto; +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; @@ -63,6 +67,22 @@ import java.util.Collections; * @author kenton@google.com Kenton Varda */ public class DescriptorsTest extends TestCase { + + // Regression test for bug where referencing a FieldDescriptor.Type value + // before a FieldDescriptorProto.Type value would yield a + // ExceptionInInitializerError. + private static final Object STATIC_INIT_TEST = FieldDescriptor.Type.BOOL; + + public void testFieldTypeEnumMapping() throws Exception { + assertEquals(FieldDescriptor.Type.values().length, + FieldDescriptorProto.Type.values().length); + for (FieldDescriptor.Type type : FieldDescriptor.Type.values()) { + FieldDescriptorProto.Type protoType = type.toProto(); + assertEquals("TYPE_" + type.name(), protoType.name()); + assertEquals(type, FieldDescriptor.Type.valueOf(protoType)); + } + } + public void testFileDescriptor() throws Exception { FileDescriptor file = UnittestProto.getDescriptor(); @@ -405,4 +425,35 @@ public class DescriptorsTest extends TestCase { UnittestEnormousDescriptor.getDescriptor() .toProto().getSerializedSize() > 65536); } + + /** + * Tests that the DescriptorValidationException works as intended. + */ + public void testDescriptorValidatorException() 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) + .setDefaultValue("invalid") + .build()) + .build()) + .build(); + try { + Descriptors.FileDescriptor.buildFrom(fileDescriptorProto, + new FileDescriptor[0]); + fail("DescriptorValidationException expected"); + } catch (DescriptorValidationException e) { + // Expected; check that the error message contains some useful hints + assertTrue(e.getMessage().indexOf("foo") != -1); + assertTrue(e.getMessage().indexOf("Foo") != -1); + assertTrue(e.getMessage().indexOf("invalid") != -1); + assertTrue(e.getCause() instanceof NumberFormatException); + assertTrue(e.getCause().getMessage().indexOf("invalid") != -1); + } + } } diff --git a/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java b/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java index cdf60c5..73c71f3 100644 --- a/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java +++ b/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java @@ -39,6 +39,8 @@ import protobuf_unittest.UnittestProto.ForeignEnum; import protobuf_unittest.UnittestProto.TestAllTypes; import protobuf_unittest.UnittestProto.TestAllExtensions; import protobuf_unittest.UnittestProto.TestExtremeDefaultValues; +import protobuf_unittest.UnittestProto.TestPackedTypes; +import protobuf_unittest.UnittestProto.TestUnpackedTypes; import protobuf_unittest.MultipleFilesTestProto; import protobuf_unittest.MessageWithNoOuter; import protobuf_unittest.EnumWithNoOuter; @@ -303,8 +305,15 @@ public class GeneratedMessageTest extends TestCase { TestUtil.assertClear(TestAllTypes.getDefaultInstance()); TestUtil.assertClear(TestAllTypes.newBuilder().build()); - assertEquals("\u1234", - TestExtremeDefaultValues.getDefaultInstance().getUtf8String()); + TestExtremeDefaultValues message = + TestExtremeDefaultValues.getDefaultInstance(); + assertEquals("\u1234", message.getUtf8String()); + assertEquals(Double.POSITIVE_INFINITY, message.getInfDouble()); + assertEquals(Double.NEGATIVE_INFINITY, message.getNegInfDouble()); + assertTrue(Double.isNaN(message.getNanDouble())); + assertEquals(Float.POSITIVE_INFINITY, message.getInfFloat()); + assertEquals(Float.NEGATIVE_INFINITY, message.getNegInfFloat()); + assertTrue(Float.isNaN(message.getNanFloat())); } public void testReflectionGetters() throws Exception { @@ -361,6 +370,20 @@ public class GeneratedMessageTest extends TestCase { assertTrue(map.findValueByNumber(12345) == null); } + public void testParsePackedToUnpacked() throws Exception { + TestUnpackedTypes.Builder builder = TestUnpackedTypes.newBuilder(); + TestUnpackedTypes message = + builder.mergeFrom(TestUtil.getPackedSet().toByteString()).build(); + TestUtil.assertUnpackedFieldsSet(message); + } + + public void testParseUnpackedToPacked() throws Exception { + TestPackedTypes.Builder builder = TestPackedTypes.newBuilder(); + TestPackedTypes message = + builder.mergeFrom(TestUtil.getUnpackedSet().toByteString()).build(); + TestUtil.assertPackedFieldsSet(message); + } + // ================================================================= // Extensions. @@ -615,4 +638,12 @@ public class GeneratedMessageTest extends TestCase { UnittestProto.REPEATED_NESTED_MESSAGE_EXTENSION_FIELD_NUMBER, 48); assertEquals(UnittestProto.REPEATED_NESTED_ENUM_EXTENSION_FIELD_NUMBER, 51); } + + public void testRecursiveMessageDefaultInstance() throws Exception { + UnittestProto.TestRecursiveMessage message = + UnittestProto.TestRecursiveMessage.getDefaultInstance(); + assertTrue(message != null); + assertTrue(message.getA() != null); + assertTrue(message.getA() == message); + } } diff --git a/java/src/test/java/com/google/protobuf/LiteTest.java b/java/src/test/java/com/google/protobuf/LiteTest.java index 9dd730c..728bad9 100644 --- a/java/src/test/java/com/google/protobuf/LiteTest.java +++ b/java/src/test/java/com/google/protobuf/LiteTest.java @@ -83,7 +83,7 @@ public class LiteTest extends TestCase { public void testLiteExtensions() throws Exception { // TODO(kenton): Unlike other features of the lite library, extensions are // implemented completely differently from the regular library. We - // need to test them more thoroughly, once they are fully-implemented. + // should probably test them more thoroughly. TestAllExtensionsLite message = TestAllExtensionsLite.newBuilder() @@ -104,6 +104,8 @@ public class LiteTest extends TestCase { UnittestLite.optionalInt32ExtensionLite)); assertEquals(1, message2.getExtensionCount( UnittestLite.repeatedStringExtensionLite)); + assertEquals(1, message2.getExtension( + UnittestLite.repeatedStringExtensionLite).size()); assertEquals("hello", message2.getExtension( UnittestLite.repeatedStringExtensionLite, 0)); assertEquals(TestAllTypesLite.NestedEnum.BAZ, message2.getExtension( diff --git a/java/src/test/java/com/google/protobuf/MicroTest.java b/java/src/test/java/com/google/protobuf/MicroTest.java deleted file mode 100644 index ebfccc2..0000000 --- a/java/src/test/java/com/google/protobuf/MicroTest.java +++ /dev/null @@ -1,2138 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// 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 -// 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.micro.MicroOuterClass; -import com.google.protobuf.micro.MicroOuterClass.TestAllTypesMicro; -import com.google.protobuf.micro.RecursiveMessageMicro; -import com.google.protobuf.micro.SimpleMessageMicro; -import com.google.protobuf.micro.StringUtf8; -import com.google.protobuf.micro.StringUtf8Micro; -import com.google.protobuf.micro.UnittestImportMicro; -import com.google.protobuf.micro.ByteStringMicro; - -import junit.framework.TestCase; - -/** - * Test micro runtime. - * - * @author wink@google.com Wink Saville - */ -public class MicroTest extends TestCase { - public void setUp() throws Exception { - } - - public void testSimpleMessageMicro() throws Exception { - SimpleMessageMicro msg = new SimpleMessageMicro(); - assertFalse(msg.hasD()); - assertEquals(123, msg.getD()); - assertFalse(msg.hasNestedMsg()); - assertEquals(null, msg.getNestedMsg()); - assertFalse(msg.hasDefaultNestedEnum()); - assertEquals(SimpleMessageMicro.BAZ, msg.getDefaultNestedEnum()); - - msg.setD(456); - assertTrue(msg.hasD()); - assertEquals(456, msg.getD()); - msg.clearD() - .setD(456); - assertTrue(msg.hasD()); - - SimpleMessageMicro.NestedMessage nestedMsg = new SimpleMessageMicro.NestedMessage() - .setBb(2); - assertTrue(nestedMsg.hasBb()); - assertEquals(2, nestedMsg.getBb()); - msg.setNestedMsg(nestedMsg); - assertTrue(msg.hasNestedMsg()); - assertEquals(2, msg.getNestedMsg().getBb()); - - msg.setDefaultNestedEnum(SimpleMessageMicro.BAR); - assertTrue(msg.hasDefaultNestedEnum()); - assertEquals(SimpleMessageMicro.BAR, msg.getDefaultNestedEnum()); - - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 9); - assertEquals(result.length, msgSerializedSize); - - SimpleMessageMicro newMsg = SimpleMessageMicro.parseFrom(result); - assertTrue(newMsg.hasD()); - assertTrue(newMsg.hasNestedMsg()); - assertTrue(newMsg.hasDefaultNestedEnum()); - assertEquals(456, newMsg.getD()); - assertEquals(2, msg.getNestedMsg().getBb()); - assertEquals(SimpleMessageMicro.BAR, msg.getDefaultNestedEnum()); - } - - public void testRecursiveMessageMicro() throws Exception { - RecursiveMessageMicro msg = new RecursiveMessageMicro(); - assertFalse(msg.hasId()); - assertFalse(msg.hasNestedMessage()); - assertFalse(msg.hasOptionalRecursiveMessageMicro()); - assertEquals(0, msg.getRepeatedRecursiveMessageMicroCount()); - - RecursiveMessageMicro msg1 = new RecursiveMessageMicro(); - msg1.setId(1); - assertEquals(1, msg1.getId()); - RecursiveMessageMicro msg2 = new RecursiveMessageMicro(); - msg2.setId(2); - RecursiveMessageMicro msg3 = new RecursiveMessageMicro(); - msg3.setId(3); - - RecursiveMessageMicro.NestedMessage nestedMsg = new RecursiveMessageMicro.NestedMessage(); - nestedMsg.setA(msg1); - assertEquals(1, nestedMsg.getA().getId()); - - msg.setId(0); - msg.setNestedMessage(nestedMsg); - msg.setOptionalRecursiveMessageMicro(msg2); - msg.addRepeatedRecursiveMessageMicro(msg3); - - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 16); - assertEquals(result.length, msgSerializedSize); - - RecursiveMessageMicro newMsg = RecursiveMessageMicro.parseFrom(result); - assertTrue(newMsg.hasId()); - assertTrue(newMsg.hasNestedMessage()); - assertTrue(newMsg.hasOptionalRecursiveMessageMicro()); - assertEquals(1, newMsg.getRepeatedRecursiveMessageMicroCount()); - - assertEquals(0, newMsg.getId()); - assertEquals(1, newMsg.getNestedMessage().getA().getId()); - assertEquals(2, newMsg.getOptionalRecursiveMessageMicro().getId()); - assertEquals(3, newMsg.getRepeatedRecursiveMessageMicro(0).getId()); - } - - public void testMicroRequiredInt32() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasId()); - assertFalse(msg.isInitialized()); - msg.setId(123); - assertTrue(msg.hasId()); - assertTrue(msg.isInitialized()); - assertEquals(123, msg.getId()); - msg.clearId(); - assertFalse(msg.hasId()); - assertFalse(msg.isInitialized()); - msg.clearId() - .setId(456); - assertTrue(msg.hasId()); - msg.clear(); - assertFalse(msg.hasId()); - assertFalse(msg.isInitialized()); - - msg.setId(123); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasId()); - assertTrue(newMsg.isInitialized()); - assertEquals(123, newMsg.getId()); - } - - public void testMicroOptionalInt32() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalInt32()); - msg.setOptionalInt32(123); - assertTrue(msg.hasOptionalInt32()); - assertEquals(123, msg.getOptionalInt32()); - msg.clearOptionalInt32(); - assertFalse(msg.hasOptionalInt32()); - msg.clearOptionalInt32() - .setOptionalInt32(456); - assertTrue(msg.hasOptionalInt32()); - msg.clear(); - assertFalse(msg.hasOptionalInt32()); - - msg.setOptionalInt32(123); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 2); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalInt32()); - assertEquals(123, newMsg.getOptionalInt32()); - } - - public void testMicroOptionalInt64() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalInt64()); - msg.setOptionalInt64(123); - assertTrue(msg.hasOptionalInt64()); - assertEquals(123, msg.getOptionalInt64()); - msg.clearOptionalInt64(); - assertFalse(msg.hasOptionalInt64()); - msg.clearOptionalInt64() - .setOptionalInt64(456); - assertTrue(msg.hasOptionalInt64()); - msg.clear(); - assertFalse(msg.hasOptionalInt64()); - - msg.setOptionalInt64(123); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 2); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalInt64()); - assertEquals(123, newMsg.getOptionalInt64()); - } - - public void testMicroOptionalUint32() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalUint32()); - msg.setOptionalUint32(123); - assertTrue(msg.hasOptionalUint32()); - assertEquals(123, msg.getOptionalUint32()); - msg.clearOptionalUint32(); - assertFalse(msg.hasOptionalUint32()); - msg.clearOptionalUint32() - .setOptionalUint32(456); - assertTrue(msg.hasOptionalUint32()); - msg.clear(); - assertFalse(msg.hasOptionalUint32()); - - msg.setOptionalUint32(123); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 2); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalUint32()); - assertEquals(123, newMsg.getOptionalUint32()); - } - - public void testMicroOptionalUint64() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalUint64()); - msg.setOptionalUint64(123); - assertTrue(msg.hasOptionalUint64()); - assertEquals(123, msg.getOptionalUint64()); - msg.clearOptionalUint64(); - assertFalse(msg.hasOptionalUint64()); - msg.clearOptionalUint64() - .setOptionalUint64(456); - assertTrue(msg.hasOptionalUint64()); - msg.clear(); - assertFalse(msg.hasOptionalUint64()); - - msg.setOptionalUint64(123); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 2); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalUint64()); - assertEquals(123, newMsg.getOptionalUint64()); - } - - public void testMicroOptionalSint32() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalSint32()); - msg.setOptionalSint32(123); - assertTrue(msg.hasOptionalSint32()); - assertEquals(123, msg.getOptionalSint32()); - msg.clearOptionalSint32(); - assertFalse(msg.hasOptionalSint32()); - msg.clearOptionalSint32() - .setOptionalSint32(456); - assertTrue(msg.hasOptionalSint32()); - msg.clear(); - assertFalse(msg.hasOptionalSint32()); - - msg.setOptionalSint32(-123); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalSint32()); - assertEquals(-123, newMsg.getOptionalSint32()); - } - - public void testMicroOptionalSint64() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalSint64()); - msg.setOptionalSint64(123); - assertTrue(msg.hasOptionalSint64()); - assertEquals(123, msg.getOptionalSint64()); - msg.clearOptionalSint64(); - assertFalse(msg.hasOptionalSint64()); - msg.clearOptionalSint64() - .setOptionalSint64(456); - assertTrue(msg.hasOptionalSint64()); - msg.clear(); - assertFalse(msg.hasOptionalSint64()); - - msg.setOptionalSint64(-123); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalSint64()); - assertEquals(-123, newMsg.getOptionalSint64()); - } - - public void testMicroOptionalFixed32() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalFixed32()); - msg.setOptionalFixed32(123); - assertTrue(msg.hasOptionalFixed32()); - assertEquals(123, msg.getOptionalFixed32()); - msg.clearOptionalFixed32(); - assertFalse(msg.hasOptionalFixed32()); - msg.clearOptionalFixed32() - .setOptionalFixed32(456); - assertTrue(msg.hasOptionalFixed32()); - msg.clear(); - assertFalse(msg.hasOptionalFixed32()); - - msg.setOptionalFixed32(123); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 5); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalFixed32()); - assertEquals(123, newMsg.getOptionalFixed32()); - } - - public void testMicroOptionalFixed64() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalFixed64()); - msg.setOptionalFixed64(123); - assertTrue(msg.hasOptionalFixed64()); - assertEquals(123, msg.getOptionalFixed64()); - msg.clearOptionalFixed64(); - assertFalse(msg.hasOptionalFixed64()); - msg.clearOptionalFixed64() - .setOptionalFixed64(456); - assertTrue(msg.hasOptionalFixed64()); - msg.clear(); - assertFalse(msg.hasOptionalFixed64()); - - msg.setOptionalFixed64(123); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 9); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalFixed64()); - assertEquals(123, newMsg.getOptionalFixed64()); - } - public void testMicroOptionalSfixed32() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalSfixed32()); - msg.setOptionalSfixed32(123); - assertTrue(msg.hasOptionalSfixed32()); - assertEquals(123, msg.getOptionalSfixed32()); - msg.clearOptionalSfixed32(); - assertFalse(msg.hasOptionalSfixed32()); - msg.clearOptionalSfixed32() - .setOptionalSfixed32(456); - assertTrue(msg.hasOptionalSfixed32()); - msg.clear(); - assertFalse(msg.hasOptionalSfixed32()); - - msg.setOptionalSfixed32(123); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 5); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalSfixed32()); - assertEquals(123, newMsg.getOptionalSfixed32()); - } - - public void testMicroOptionalSfixed64() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalSfixed64()); - msg.setOptionalSfixed64(123); - assertTrue(msg.hasOptionalSfixed64()); - assertEquals(123, msg.getOptionalSfixed64()); - msg.clearOptionalSfixed64(); - assertFalse(msg.hasOptionalSfixed64()); - msg.clearOptionalSfixed64() - .setOptionalSfixed64(456); - assertTrue(msg.hasOptionalSfixed64()); - msg.clear(); - assertFalse(msg.hasOptionalSfixed64()); - - msg.setOptionalSfixed64(-123); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 9); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalSfixed64()); - assertEquals(-123, newMsg.getOptionalSfixed64()); - } - - public void testMicroOptionalFloat() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalFloat()); - msg.setOptionalFloat(123f); - assertTrue(msg.hasOptionalFloat()); - assertTrue(123.0f == msg.getOptionalFloat()); - msg.clearOptionalFloat(); - assertFalse(msg.hasOptionalFloat()); - msg.clearOptionalFloat() - .setOptionalFloat(456.0f); - assertTrue(msg.hasOptionalFloat()); - msg.clear(); - assertFalse(msg.hasOptionalFloat()); - - msg.setOptionalFloat(-123.456f); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 5); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalFloat()); - assertTrue(-123.456f == newMsg.getOptionalFloat()); - } - - public void testMicroOptionalDouble() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalDouble()); - msg.setOptionalDouble(123); - assertTrue(msg.hasOptionalDouble()); - assertTrue(123.0 == msg.getOptionalDouble()); - msg.clearOptionalDouble(); - assertFalse(msg.hasOptionalDouble()); - msg.clearOptionalDouble() - .setOptionalDouble(456.0); - assertTrue(msg.hasOptionalDouble()); - msg.clear(); - assertFalse(msg.hasOptionalDouble()); - - msg.setOptionalDouble(-123.456); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 9); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalDouble()); - assertTrue(-123.456 == newMsg.getOptionalDouble()); - } - - public void testMicroOptionalBool() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalBool()); - msg.setOptionalBool(true); - assertTrue(msg.hasOptionalBool()); - assertEquals(true, msg.getOptionalBool()); - msg.clearOptionalBool(); - assertFalse(msg.hasOptionalBool()); - msg.clearOptionalBool() - .setOptionalBool(true); - assertTrue(msg.hasOptionalBool()); - msg.clear(); - assertFalse(msg.hasOptionalBool()); - - msg.setOptionalBool(false); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 2); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalBool()); - assertEquals(false, newMsg.getOptionalBool()); - } - - public void testMicroOptionalString() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalString()); - msg.setOptionalString("hello"); - assertTrue(msg.hasOptionalString()); - assertEquals("hello", msg.getOptionalString()); - msg.clearOptionalString(); - assertFalse(msg.hasOptionalString()); - msg.clearOptionalString() - .setOptionalString("hello"); - assertTrue(msg.hasOptionalString()); - msg.clear(); - assertFalse(msg.hasOptionalString()); - - msg.setOptionalString("bye"); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 5); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalString()); - assertEquals("bye", newMsg.getOptionalString()); - } - - public void testMicroOptionalBytes() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalBytes()); - msg.setOptionalBytes(ByteStringMicro.copyFromUtf8("hello")); - assertTrue(msg.hasOptionalBytes()); - assertEquals("hello", msg.getOptionalBytes().toStringUtf8()); - msg.clearOptionalBytes(); - assertFalse(msg.hasOptionalBytes()); - msg.clearOptionalBytes() - .setOptionalBytes(ByteStringMicro.copyFromUtf8("hello")); - assertTrue(msg.hasOptionalBytes()); - msg.clear(); - assertFalse(msg.hasOptionalBytes()); - - msg.setOptionalBytes(ByteStringMicro.copyFromUtf8("bye")); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 5); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalBytes()); - assertEquals("bye", newMsg.getOptionalBytes().toStringUtf8()); - } - - public void testMicroOptionalGroup() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - TestAllTypesMicro.OptionalGroup grp = new TestAllTypesMicro.OptionalGroup(); - grp.setA(1); - assertFalse(msg.hasOptionalGroup()); - msg.setOptionalGroup(grp); - assertTrue(msg.hasOptionalGroup()); - assertEquals(1, msg.getOptionalGroup().getA()); - msg.clearOptionalGroup(); - assertFalse(msg.hasOptionalGroup()); - msg.clearOptionalGroup() - .setOptionalGroup(new TestAllTypesMicro.OptionalGroup().setA(2)); - assertTrue(msg.hasOptionalGroup()); - msg.clear(); - assertFalse(msg.hasOptionalGroup()); - - msg.setOptionalGroup(grp); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 7); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalGroup()); - assertEquals(1, newMsg.getOptionalGroup().getA()); - } - - public void testMicroOptionalNestedMessage() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - TestAllTypesMicro.NestedMessage nestedMsg = new TestAllTypesMicro.NestedMessage(); - nestedMsg.setBb(1); - assertFalse(msg.hasOptionalNestedMessage()); - msg.setOptionalNestedMessage(nestedMsg); - assertTrue(msg.hasOptionalNestedMessage()); - assertEquals(1, msg.getOptionalNestedMessage().getBb()); - msg.clearOptionalNestedMessage(); - assertFalse(msg.hasOptionalNestedMessage()); - msg.clearOptionalNestedMessage() - .setOptionalNestedMessage(new TestAllTypesMicro.NestedMessage().setBb(2)); - assertTrue(msg.hasOptionalNestedMessage()); - msg.clear(); - assertFalse(msg.hasOptionalNestedMessage()); - - msg.setOptionalNestedMessage(nestedMsg); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 5); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalNestedMessage()); - assertEquals(1, newMsg.getOptionalNestedMessage().getBb()); - } - - public void testMicroOptionalForeignMessage() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - MicroOuterClass.ForeignMessageMicro foreignMsg = - new MicroOuterClass.ForeignMessageMicro(); - assertFalse(foreignMsg.hasC()); - foreignMsg.setC(1); - assertTrue(foreignMsg.hasC()); - assertFalse(msg.hasOptionalForeignMessage()); - msg.setOptionalForeignMessage(foreignMsg); - assertTrue(msg.hasOptionalForeignMessage()); - assertEquals(1, msg.getOptionalForeignMessage().getC()); - msg.clearOptionalForeignMessage(); - assertFalse(msg.hasOptionalForeignMessage()); - msg.clearOptionalForeignMessage() - .setOptionalForeignMessage(new MicroOuterClass.ForeignMessageMicro().setC(2)); - assertTrue(msg.hasOptionalForeignMessage()); - msg.clear(); - assertFalse(msg.hasOptionalForeignMessage()); - - msg.setOptionalForeignMessage(foreignMsg); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 5); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalForeignMessage()); - assertEquals(1, newMsg.getOptionalForeignMessage().getC()); - } - - public void testMicroOptionalImportMessage() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - UnittestImportMicro.ImportMessageMicro importMsg = - new UnittestImportMicro.ImportMessageMicro(); - assertFalse(importMsg.hasD()); - importMsg.setD(1); - assertTrue(importMsg.hasD()); - assertFalse(msg.hasOptionalImportMessage()); - msg.setOptionalImportMessage(importMsg); - assertTrue(msg.hasOptionalImportMessage()); - assertEquals(1, msg.getOptionalImportMessage().getD()); - msg.clearOptionalImportMessage(); - assertFalse(msg.hasOptionalImportMessage()); - msg.clearOptionalImportMessage() - .setOptionalImportMessage(new UnittestImportMicro.ImportMessageMicro().setD(2)); - assertTrue(msg.hasOptionalImportMessage()); - msg.clear(); - assertFalse(msg.hasOptionalImportMessage()); - - msg.setOptionalImportMessage(importMsg); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 5); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalImportMessage()); - assertEquals(1, newMsg.getOptionalImportMessage().getD()); - } - - public void testMicroOptionalNestedEnum() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - msg.setOptionalNestedEnum(TestAllTypesMicro.BAR); - assertTrue(msg.hasOptionalNestedEnum()); - assertEquals(TestAllTypesMicro.BAR, msg.getOptionalNestedEnum()); - msg.clearOptionalNestedEnum(); - assertFalse(msg.hasOptionalNestedEnum()); - msg.clearOptionalNestedEnum() - .setOptionalNestedEnum(TestAllTypesMicro.BAZ); - assertTrue(msg.hasOptionalNestedEnum()); - msg.clear(); - assertFalse(msg.hasOptionalNestedEnum()); - - msg.setOptionalNestedEnum(TestAllTypesMicro.BAR); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalNestedEnum()); - assertEquals(TestAllTypesMicro.BAR, newMsg.getOptionalNestedEnum()); - } - - public void testMicroOptionalForeignEnum() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - msg.setOptionalForeignEnum(MicroOuterClass.FOREIGN_MICRO_BAR); - assertTrue(msg.hasOptionalForeignEnum()); - assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR, - msg.getOptionalForeignEnum()); - msg.clearOptionalForeignEnum(); - assertFalse(msg.hasOptionalForeignEnum()); - msg.clearOptionalForeignEnum() - .setOptionalForeignEnum(MicroOuterClass.FOREIGN_MICRO_BAZ); - assertTrue(msg.hasOptionalForeignEnum()); - msg.clear(); - assertFalse(msg.hasOptionalForeignEnum()); - - msg.setOptionalForeignEnum(MicroOuterClass.FOREIGN_MICRO_BAR); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalForeignEnum()); - assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR, - newMsg.getOptionalForeignEnum()); - } - - public void testMicroOptionalImportEnum() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - msg.setOptionalImportEnum(UnittestImportMicro.IMPORT_MICRO_BAR); - assertTrue(msg.hasOptionalImportEnum()); - assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR, - msg.getOptionalImportEnum()); - msg.clearOptionalImportEnum(); - assertFalse(msg.hasOptionalImportEnum()); - msg.clearOptionalImportEnum() - .setOptionalImportEnum(UnittestImportMicro.IMPORT_MICRO_BAZ); - assertTrue(msg.hasOptionalImportEnum()); - msg.clear(); - assertFalse(msg.hasOptionalImportEnum()); - - msg.setOptionalImportEnum(UnittestImportMicro.IMPORT_MICRO_BAR); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalImportEnum()); - assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR, - newMsg.getOptionalImportEnum()); - } - - public void testMicroOptionalStringPiece() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalStringPiece()); - msg.setOptionalStringPiece("hello"); - assertTrue(msg.hasOptionalStringPiece()); - assertEquals("hello", msg.getOptionalStringPiece()); - msg.clearOptionalStringPiece(); - assertFalse(msg.hasOptionalStringPiece()); - msg.clearOptionalStringPiece() - .setOptionalStringPiece("hello"); - assertTrue(msg.hasOptionalStringPiece()); - msg.clear(); - assertFalse(msg.hasOptionalStringPiece()); - - msg.setOptionalStringPiece("bye"); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 6); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalStringPiece()); - assertEquals("bye", newMsg.getOptionalStringPiece()); - } - - public void testMicroOptionalCord() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasOptionalCord()); - msg.setOptionalCord("hello"); - assertTrue(msg.hasOptionalCord()); - assertEquals("hello", msg.getOptionalCord()); - msg.clearOptionalCord(); - assertFalse(msg.hasOptionalCord()); - msg.clearOptionalCord() - .setOptionalCord("hello"); - assertTrue(msg.hasOptionalCord()); - msg.clear(); - assertFalse(msg.hasOptionalCord()); - - msg.setOptionalCord("bye"); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 6); - assertEquals(result.length, msgSerializedSize); - - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertTrue(newMsg.hasOptionalCord()); - assertEquals("bye", newMsg.getOptionalCord()); - } - - public void testMicroRepeatedInt32() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedInt32Count()); - msg.addRepeatedInt32(123); - assertEquals(1, msg.getRepeatedInt32Count()); - assertEquals(123, msg.getRepeatedInt32(0)); - msg.addRepeatedInt32(456); - assertEquals(2, msg.getRepeatedInt32Count()); - assertEquals(123, msg.getRepeatedInt32(0)); - assertEquals(456, msg.getRepeatedInt32(1)); - msg.setRepeatedInt32(0, 789); - assertEquals(2, msg.getRepeatedInt32Count()); - assertEquals(789, msg.getRepeatedInt32(0)); - assertEquals(456, msg.getRepeatedInt32(1)); - msg.clearRepeatedInt32(); - assertEquals(0, msg.getRepeatedInt32Count()); - msg.clearRepeatedInt32() - .addRepeatedInt32(456); - assertEquals(1, msg.getRepeatedInt32Count()); - assertEquals(456, msg.getRepeatedInt32(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedInt32Count()); - - // Test 1 entry - msg.clear() - .addRepeatedInt32(123); - assertEquals(1, msg.getRepeatedInt32Count()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedInt32Count()); - assertEquals(123, newMsg.getRepeatedInt32(0)); - - // Test 2 entries - msg.clear() - .addRepeatedInt32(123) - .addRepeatedInt32(456); - assertEquals(2, msg.getRepeatedInt32Count()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 7); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedInt32Count()); - assertEquals(123, newMsg.getRepeatedInt32(0)); - assertEquals(456, newMsg.getRepeatedInt32(1)); - } - - public void testMicroRepeatedInt64() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedInt64Count()); - msg.addRepeatedInt64(123); - assertEquals(1, msg.getRepeatedInt64Count()); - assertEquals(123, msg.getRepeatedInt64(0)); - msg.addRepeatedInt64(456); - assertEquals(2, msg.getRepeatedInt64Count()); - assertEquals(123, msg.getRepeatedInt64(0)); - assertEquals(456, msg.getRepeatedInt64(1)); - msg.setRepeatedInt64(0, 789); - assertEquals(2, msg.getRepeatedInt64Count()); - assertEquals(789, msg.getRepeatedInt64(0)); - assertEquals(456, msg.getRepeatedInt64(1)); - msg.clearRepeatedInt64(); - assertEquals(0, msg.getRepeatedInt64Count()); - msg.clearRepeatedInt64() - .addRepeatedInt64(456); - assertEquals(1, msg.getRepeatedInt64Count()); - assertEquals(456, msg.getRepeatedInt64(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedInt64Count()); - - // Test 1 entry - msg.clear() - .addRepeatedInt64(123); - assertEquals(1, msg.getRepeatedInt64Count()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedInt64Count()); - assertEquals(123, newMsg.getRepeatedInt64(0)); - - // Test 2 entries - msg.clear() - .addRepeatedInt64(123) - .addRepeatedInt64(456); - assertEquals(2, msg.getRepeatedInt64Count()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 7); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedInt64Count()); - assertEquals(123, newMsg.getRepeatedInt64(0)); - assertEquals(456, newMsg.getRepeatedInt64(1)); - } - - public void testMicroRepeatedUint32() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedUint32Count()); - msg.addRepeatedUint32(123); - assertEquals(1, msg.getRepeatedUint32Count()); - assertEquals(123, msg.getRepeatedUint32(0)); - msg.addRepeatedUint32(456); - assertEquals(2, msg.getRepeatedUint32Count()); - assertEquals(123, msg.getRepeatedUint32(0)); - assertEquals(456, msg.getRepeatedUint32(1)); - msg.setRepeatedUint32(0, 789); - assertEquals(2, msg.getRepeatedUint32Count()); - assertEquals(789, msg.getRepeatedUint32(0)); - assertEquals(456, msg.getRepeatedUint32(1)); - msg.clearRepeatedUint32(); - assertEquals(0, msg.getRepeatedUint32Count()); - msg.clearRepeatedUint32() - .addRepeatedUint32(456); - assertEquals(1, msg.getRepeatedUint32Count()); - assertEquals(456, msg.getRepeatedUint32(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedUint32Count()); - - // Test 1 entry - msg.clear() - .addRepeatedUint32(123); - assertEquals(1, msg.getRepeatedUint32Count()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedUint32Count()); - assertEquals(123, newMsg.getRepeatedUint32(0)); - - // Test 2 entries - msg.clear() - .addRepeatedUint32(123) - .addRepeatedUint32(456); - assertEquals(2, msg.getRepeatedUint32Count()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 7); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedUint32Count()); - assertEquals(123, newMsg.getRepeatedUint32(0)); - assertEquals(456, newMsg.getRepeatedUint32(1)); - } - - public void testMicroRepeatedUint64() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedUint64Count()); - msg.addRepeatedUint64(123); - assertEquals(1, msg.getRepeatedUint64Count()); - assertEquals(123, msg.getRepeatedUint64(0)); - msg.addRepeatedUint64(456); - assertEquals(2, msg.getRepeatedUint64Count()); - assertEquals(123, msg.getRepeatedUint64(0)); - assertEquals(456, msg.getRepeatedUint64(1)); - msg.setRepeatedUint64(0, 789); - assertEquals(2, msg.getRepeatedUint64Count()); - assertEquals(789, msg.getRepeatedUint64(0)); - assertEquals(456, msg.getRepeatedUint64(1)); - msg.clearRepeatedUint64(); - assertEquals(0, msg.getRepeatedUint64Count()); - msg.clearRepeatedUint64() - .addRepeatedUint64(456); - assertEquals(1, msg.getRepeatedUint64Count()); - assertEquals(456, msg.getRepeatedUint64(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedUint64Count()); - - // Test 1 entry - msg.clear() - .addRepeatedUint64(123); - assertEquals(1, msg.getRepeatedUint64Count()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedUint64Count()); - assertEquals(123, newMsg.getRepeatedUint64(0)); - - // Test 2 entries - msg.clear() - .addRepeatedUint64(123) - .addRepeatedUint64(456); - assertEquals(2, msg.getRepeatedUint64Count()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 7); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedUint64Count()); - assertEquals(123, newMsg.getRepeatedUint64(0)); - assertEquals(456, newMsg.getRepeatedUint64(1)); - } - - public void testMicroRepeatedSint32() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedSint32Count()); - msg.addRepeatedSint32(123); - assertEquals(1, msg.getRepeatedSint32Count()); - assertEquals(123, msg.getRepeatedSint32(0)); - msg.addRepeatedSint32(456); - assertEquals(2, msg.getRepeatedSint32Count()); - assertEquals(123, msg.getRepeatedSint32(0)); - assertEquals(456, msg.getRepeatedSint32(1)); - msg.setRepeatedSint32(0, 789); - assertEquals(2, msg.getRepeatedSint32Count()); - assertEquals(789, msg.getRepeatedSint32(0)); - assertEquals(456, msg.getRepeatedSint32(1)); - msg.clearRepeatedSint32(); - assertEquals(0, msg.getRepeatedSint32Count()); - msg.clearRepeatedSint32() - .addRepeatedSint32(456); - assertEquals(1, msg.getRepeatedSint32Count()); - assertEquals(456, msg.getRepeatedSint32(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedSint32Count()); - - // Test 1 entry - msg.clear() - .addRepeatedSint32(123); - assertEquals(1, msg.getRepeatedSint32Count()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 4); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedSint32Count()); - assertEquals(123, newMsg.getRepeatedSint32(0)); - - // Test 2 entries - msg.clear() - .addRepeatedSint32(123) - .addRepeatedSint32(456); - assertEquals(2, msg.getRepeatedSint32Count()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 8); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedSint32Count()); - assertEquals(123, newMsg.getRepeatedSint32(0)); - assertEquals(456, newMsg.getRepeatedSint32(1)); - } - - public void testMicroRepeatedSint64() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedSint64Count()); - msg.addRepeatedSint64(123); - assertEquals(1, msg.getRepeatedSint64Count()); - assertEquals(123, msg.getRepeatedSint64(0)); - msg.addRepeatedSint64(456); - assertEquals(2, msg.getRepeatedSint64Count()); - assertEquals(123, msg.getRepeatedSint64(0)); - assertEquals(456, msg.getRepeatedSint64(1)); - msg.setRepeatedSint64(0, 789); - assertEquals(2, msg.getRepeatedSint64Count()); - assertEquals(789, msg.getRepeatedSint64(0)); - assertEquals(456, msg.getRepeatedSint64(1)); - msg.clearRepeatedSint64(); - assertEquals(0, msg.getRepeatedSint64Count()); - msg.clearRepeatedSint64() - .addRepeatedSint64(456); - assertEquals(1, msg.getRepeatedSint64Count()); - assertEquals(456, msg.getRepeatedSint64(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedSint64Count()); - - // Test 1 entry - msg.clear() - .addRepeatedSint64(123); - assertEquals(1, msg.getRepeatedSint64Count()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 4); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedSint64Count()); - assertEquals(123, newMsg.getRepeatedSint64(0)); - - // Test 2 entries - msg.clear() - .addRepeatedSint64(123) - .addRepeatedSint64(456); - assertEquals(2, msg.getRepeatedSint64Count()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 8); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedSint64Count()); - assertEquals(123, newMsg.getRepeatedSint64(0)); - assertEquals(456, newMsg.getRepeatedSint64(1)); - } - - public void testMicroRepeatedFixed32() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedFixed32Count()); - msg.addRepeatedFixed32(123); - assertEquals(1, msg.getRepeatedFixed32Count()); - assertEquals(123, msg.getRepeatedFixed32(0)); - msg.addRepeatedFixed32(456); - assertEquals(2, msg.getRepeatedFixed32Count()); - assertEquals(123, msg.getRepeatedFixed32(0)); - assertEquals(456, msg.getRepeatedFixed32(1)); - msg.setRepeatedFixed32(0, 789); - assertEquals(2, msg.getRepeatedFixed32Count()); - assertEquals(789, msg.getRepeatedFixed32(0)); - assertEquals(456, msg.getRepeatedFixed32(1)); - msg.clearRepeatedFixed32(); - assertEquals(0, msg.getRepeatedFixed32Count()); - msg.clearRepeatedFixed32() - .addRepeatedFixed32(456); - assertEquals(1, msg.getRepeatedFixed32Count()); - assertEquals(456, msg.getRepeatedFixed32(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedFixed32Count()); - - // Test 1 entry - msg.clear() - .addRepeatedFixed32(123); - assertEquals(1, msg.getRepeatedFixed32Count()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 6); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedFixed32Count()); - assertEquals(123, newMsg.getRepeatedFixed32(0)); - - // Test 2 entries - msg.clear() - .addRepeatedFixed32(123) - .addRepeatedFixed32(456); - assertEquals(2, msg.getRepeatedFixed32Count()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 12); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedFixed32Count()); - assertEquals(123, newMsg.getRepeatedFixed32(0)); - assertEquals(456, newMsg.getRepeatedFixed32(1)); - } - - public void testMicroRepeatedFixed64() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedFixed64Count()); - msg.addRepeatedFixed64(123); - assertEquals(1, msg.getRepeatedFixed64Count()); - assertEquals(123, msg.getRepeatedFixed64(0)); - msg.addRepeatedFixed64(456); - assertEquals(2, msg.getRepeatedFixed64Count()); - assertEquals(123, msg.getRepeatedFixed64(0)); - assertEquals(456, msg.getRepeatedFixed64(1)); - msg.setRepeatedFixed64(0, 789); - assertEquals(2, msg.getRepeatedFixed64Count()); - assertEquals(789, msg.getRepeatedFixed64(0)); - assertEquals(456, msg.getRepeatedFixed64(1)); - msg.clearRepeatedFixed64(); - assertEquals(0, msg.getRepeatedFixed64Count()); - msg.clearRepeatedFixed64() - .addRepeatedFixed64(456); - assertEquals(1, msg.getRepeatedFixed64Count()); - assertEquals(456, msg.getRepeatedFixed64(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedFixed64Count()); - - // Test 1 entry - msg.clear() - .addRepeatedFixed64(123); - assertEquals(1, msg.getRepeatedFixed64Count()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 10); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedFixed64Count()); - assertEquals(123, newMsg.getRepeatedFixed64(0)); - - // Test 2 entries - msg.clear() - .addRepeatedFixed64(123) - .addRepeatedFixed64(456); - assertEquals(2, msg.getRepeatedFixed64Count()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 20); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedFixed64Count()); - assertEquals(123, newMsg.getRepeatedFixed64(0)); - assertEquals(456, newMsg.getRepeatedFixed64(1)); - } - - public void testMicroRepeatedSfixed32() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedSfixed32Count()); - msg.addRepeatedSfixed32(123); - assertEquals(1, msg.getRepeatedSfixed32Count()); - assertEquals(123, msg.getRepeatedSfixed32(0)); - msg.addRepeatedSfixed32(456); - assertEquals(2, msg.getRepeatedSfixed32Count()); - assertEquals(123, msg.getRepeatedSfixed32(0)); - assertEquals(456, msg.getRepeatedSfixed32(1)); - msg.setRepeatedSfixed32(0, 789); - assertEquals(2, msg.getRepeatedSfixed32Count()); - assertEquals(789, msg.getRepeatedSfixed32(0)); - assertEquals(456, msg.getRepeatedSfixed32(1)); - msg.clearRepeatedSfixed32(); - assertEquals(0, msg.getRepeatedSfixed32Count()); - msg.clearRepeatedSfixed32() - .addRepeatedSfixed32(456); - assertEquals(1, msg.getRepeatedSfixed32Count()); - assertEquals(456, msg.getRepeatedSfixed32(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedSfixed32Count()); - - // Test 1 entry - msg.clear() - .addRepeatedSfixed32(123); - assertEquals(1, msg.getRepeatedSfixed32Count()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 6); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedSfixed32Count()); - assertEquals(123, newMsg.getRepeatedSfixed32(0)); - - // Test 2 entries - msg.clear() - .addRepeatedSfixed32(123) - .addRepeatedSfixed32(456); - assertEquals(2, msg.getRepeatedSfixed32Count()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 12); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedSfixed32Count()); - assertEquals(123, newMsg.getRepeatedSfixed32(0)); - assertEquals(456, newMsg.getRepeatedSfixed32(1)); - } - - public void testMicroRepeatedSfixed64() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedSfixed64Count()); - msg.addRepeatedSfixed64(123); - assertEquals(1, msg.getRepeatedSfixed64Count()); - assertEquals(123, msg.getRepeatedSfixed64(0)); - msg.addRepeatedSfixed64(456); - assertEquals(2, msg.getRepeatedSfixed64Count()); - assertEquals(123, msg.getRepeatedSfixed64(0)); - assertEquals(456, msg.getRepeatedSfixed64(1)); - msg.setRepeatedSfixed64(0, 789); - assertEquals(2, msg.getRepeatedSfixed64Count()); - assertEquals(789, msg.getRepeatedSfixed64(0)); - assertEquals(456, msg.getRepeatedSfixed64(1)); - msg.clearRepeatedSfixed64(); - assertEquals(0, msg.getRepeatedSfixed64Count()); - msg.clearRepeatedSfixed64() - .addRepeatedSfixed64(456); - assertEquals(1, msg.getRepeatedSfixed64Count()); - assertEquals(456, msg.getRepeatedSfixed64(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedSfixed64Count()); - - // Test 1 entry - msg.clear() - .addRepeatedSfixed64(123); - assertEquals(1, msg.getRepeatedSfixed64Count()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 10); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedSfixed64Count()); - assertEquals(123, newMsg.getRepeatedSfixed64(0)); - - // Test 2 entries - msg.clear() - .addRepeatedSfixed64(123) - .addRepeatedSfixed64(456); - assertEquals(2, msg.getRepeatedSfixed64Count()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 20); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedSfixed64Count()); - assertEquals(123, newMsg.getRepeatedSfixed64(0)); - assertEquals(456, newMsg.getRepeatedSfixed64(1)); - } - - public void testMicroRepeatedFloat() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedFloatCount()); - msg.addRepeatedFloat(123f); - assertEquals(1, msg.getRepeatedFloatCount()); - assertTrue(123f == msg.getRepeatedFloat(0)); - msg.addRepeatedFloat(456f); - assertEquals(2, msg.getRepeatedFloatCount()); - assertTrue(123f == msg.getRepeatedFloat(0)); - assertTrue(456f == msg.getRepeatedFloat(1)); - msg.setRepeatedFloat(0, 789f); - assertEquals(2, msg.getRepeatedFloatCount()); - assertTrue(789f == msg.getRepeatedFloat(0)); - assertTrue(456f == msg.getRepeatedFloat(1)); - msg.clearRepeatedFloat(); - assertEquals(0, msg.getRepeatedFloatCount()); - msg.clearRepeatedFloat() - .addRepeatedFloat(456f); - assertEquals(1, msg.getRepeatedFloatCount()); - assertTrue(456f == msg.getRepeatedFloat(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedFloatCount()); - - // Test 1 entry - msg.clear() - .addRepeatedFloat(123f); - assertEquals(1, msg.getRepeatedFloatCount()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 6); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedFloatCount()); - assertTrue(123f == newMsg.getRepeatedFloat(0)); - - // Test 2 entries - msg.clear() - .addRepeatedFloat(123f) - .addRepeatedFloat(456f); - assertEquals(2, msg.getRepeatedFloatCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 12); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedFloatCount()); - assertTrue(123f == newMsg.getRepeatedFloat(0)); - assertTrue(456f == newMsg.getRepeatedFloat(1)); - } - - public void testMicroRepeatedDouble() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedDoubleCount()); - msg.addRepeatedDouble(123.0); - assertEquals(1, msg.getRepeatedDoubleCount()); - assertTrue(123.0 == msg.getRepeatedDouble(0)); - msg.addRepeatedDouble(456.0); - assertEquals(2, msg.getRepeatedDoubleCount()); - assertTrue(123.0 == msg.getRepeatedDouble(0)); - assertTrue(456.0 == msg.getRepeatedDouble(1)); - msg.setRepeatedDouble(0, 789.0); - assertEquals(2, msg.getRepeatedDoubleCount()); - assertTrue(789.0 == msg.getRepeatedDouble(0)); - assertTrue(456.0 == msg.getRepeatedDouble(1)); - msg.clearRepeatedDouble(); - assertEquals(0, msg.getRepeatedDoubleCount()); - msg.clearRepeatedDouble() - .addRepeatedDouble(456.0); - assertEquals(1, msg.getRepeatedDoubleCount()); - assertTrue(456.0 == msg.getRepeatedDouble(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedDoubleCount()); - - // Test 1 entry - msg.clear() - .addRepeatedDouble(123.0); - assertEquals(1, msg.getRepeatedDoubleCount()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 10); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedDoubleCount()); - assertTrue(123.0 == newMsg.getRepeatedDouble(0)); - - // Test 2 entries - msg.clear() - .addRepeatedDouble(123.0) - .addRepeatedDouble(456.0); - assertEquals(2, msg.getRepeatedDoubleCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 20); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedDoubleCount()); - assertTrue(123.0 == newMsg.getRepeatedDouble(0)); - assertTrue(456.0 == newMsg.getRepeatedDouble(1)); - } - - public void testMicroRepeatedBool() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedBoolCount()); - msg.addRepeatedBool(true); - assertEquals(1, msg.getRepeatedBoolCount()); - assertEquals(true, msg.getRepeatedBool(0)); - msg.addRepeatedBool(false); - assertEquals(2, msg.getRepeatedBoolCount()); - assertEquals(true, msg.getRepeatedBool(0)); - assertEquals(false, msg.getRepeatedBool(1)); - msg.setRepeatedBool(0, false); - assertEquals(2, msg.getRepeatedBoolCount()); - assertEquals(false, msg.getRepeatedBool(0)); - assertEquals(false, msg.getRepeatedBool(1)); - msg.clearRepeatedBool(); - assertEquals(0, msg.getRepeatedBoolCount()); - msg.clearRepeatedBool() - .addRepeatedBool(true); - assertEquals(1, msg.getRepeatedBoolCount()); - assertEquals(true, msg.getRepeatedBool(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedBoolCount()); - - // Test 1 entry - msg.clear() - .addRepeatedBool(false); - assertEquals(1, msg.getRepeatedBoolCount()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedBoolCount()); - assertEquals(false, newMsg.getRepeatedBool(0)); - - // Test 2 entries - msg.clear() - .addRepeatedBool(true) - .addRepeatedBool(false); - assertEquals(2, msg.getRepeatedBoolCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 6); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedBoolCount()); - assertEquals(true, newMsg.getRepeatedBool(0)); - assertEquals(false, newMsg.getRepeatedBool(1)); - } - - public void testMicroRepeatedString() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedStringCount()); - msg.addRepeatedString("hello"); - assertEquals(1, msg.getRepeatedStringCount()); - assertEquals("hello", msg.getRepeatedString(0)); - msg.addRepeatedString("bye"); - assertEquals(2, msg.getRepeatedStringCount()); - assertEquals("hello", msg.getRepeatedString(0)); - assertEquals("bye", msg.getRepeatedString(1)); - msg.setRepeatedString(0, "boo"); - assertEquals(2, msg.getRepeatedStringCount()); - assertEquals("boo", msg.getRepeatedString(0)); - assertEquals("bye", msg.getRepeatedString(1)); - msg.clearRepeatedString(); - assertEquals(0, msg.getRepeatedStringCount()); - msg.clearRepeatedString() - .addRepeatedString("hello"); - assertEquals(1, msg.getRepeatedStringCount()); - assertEquals("hello", msg.getRepeatedString(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedStringCount()); - - // Test 1 entry and an empty string - msg.clear() - .addRepeatedString(""); - assertEquals(1, msg.getRepeatedStringCount()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedStringCount()); - assertEquals("", newMsg.getRepeatedString(0)); - - // Test 2 entries - msg.clear() - .addRepeatedString("hello") - .addRepeatedString("world"); - assertEquals(2, msg.getRepeatedStringCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 16); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedStringCount()); - assertEquals("hello", newMsg.getRepeatedString(0)); - assertEquals("world", newMsg.getRepeatedString(1)); - } - - public void testMicroRepeatedBytes() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedBytesCount()); - msg.addRepeatedBytes(ByteStringMicro.copyFromUtf8("hello")); - assertEquals(1, msg.getRepeatedBytesCount()); - assertEquals("hello", msg.getRepeatedBytes(0).toStringUtf8()); - msg.addRepeatedBytes(ByteStringMicro.copyFromUtf8("bye")); - assertEquals(2, msg.getRepeatedBytesCount()); - assertEquals("hello", msg.getRepeatedBytes(0).toStringUtf8()); - assertEquals("bye", msg.getRepeatedBytes(1).toStringUtf8()); - msg.setRepeatedBytes(0, ByteStringMicro.copyFromUtf8("boo")); - assertEquals(2, msg.getRepeatedBytesCount()); - assertEquals("boo", msg.getRepeatedBytes(0).toStringUtf8()); - assertEquals("bye", msg.getRepeatedBytes(1).toStringUtf8()); - msg.clearRepeatedBytes(); - assertEquals(0, msg.getRepeatedBytesCount()); - msg.clearRepeatedBytes() - .addRepeatedBytes(ByteStringMicro.copyFromUtf8("hello")); - assertEquals(1, msg.getRepeatedBytesCount()); - assertEquals("hello", msg.getRepeatedBytes(0).toStringUtf8()); - msg.clear(); - assertEquals(0, msg.getRepeatedBytesCount()); - - // Test 1 entry and an empty byte array can be serialized - msg.clear() - .addRepeatedBytes(ByteStringMicro.copyFromUtf8("")); - assertEquals(1, msg.getRepeatedBytesCount()); - assertEquals("", msg.getRepeatedBytes(0).toStringUtf8()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedBytesCount()); - assertEquals("", newMsg.getRepeatedBytes(0).toStringUtf8()); - - // Test 2 entries - msg.clear() - .addRepeatedBytes(ByteStringMicro.copyFromUtf8("hello")) - .addRepeatedBytes(ByteStringMicro.copyFromUtf8("world")); - assertEquals(2, msg.getRepeatedBytesCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 16); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedBytesCount()); - assertEquals("hello", newMsg.getRepeatedBytes(0).toStringUtf8()); - assertEquals("world", newMsg.getRepeatedBytes(1).toStringUtf8()); - } - - public void testMicroRepeatedGroup() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - TestAllTypesMicro.RepeatedGroup group0 = - new TestAllTypesMicro.RepeatedGroup().setA(0); - TestAllTypesMicro.RepeatedGroup group1 = - new TestAllTypesMicro.RepeatedGroup().setA(1); - TestAllTypesMicro.RepeatedGroup group2 = - new TestAllTypesMicro.RepeatedGroup().setA(2); - - msg.addRepeatedGroup(group0); - assertEquals(1, msg.getRepeatedGroupCount()); - assertEquals(0, msg.getRepeatedGroup(0).getA()); - msg.addRepeatedGroup(group1); - assertEquals(2, msg.getRepeatedGroupCount()); - assertEquals(0, msg.getRepeatedGroup(0).getA()); - assertEquals(1, msg.getRepeatedGroup(1).getA()); - msg.setRepeatedGroup(0, group2); - assertEquals(2, msg.getRepeatedGroupCount()); - assertEquals(2, msg.getRepeatedGroup(0).getA()); - assertEquals(1, msg.getRepeatedGroup(1).getA()); - msg.clearRepeatedGroup(); - assertEquals(0, msg.getRepeatedGroupCount()); - msg.clearRepeatedGroup() - .addRepeatedGroup(group1); - assertEquals(1, msg.getRepeatedGroupCount()); - assertEquals(1, msg.getRepeatedGroup(0).getA()); - msg.clear(); - assertEquals(0, msg.getRepeatedGroupCount()); - - // Test 1 entry - msg.clear() - .addRepeatedGroup(group0); - assertEquals(1, msg.getRepeatedGroupCount()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 7); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedGroupCount()); - assertEquals(0, newMsg.getRepeatedGroup(0).getA()); - - // Test 2 entries - msg.clear() - .addRepeatedGroup(group0) - .addRepeatedGroup(group1); - assertEquals(2, msg.getRepeatedGroupCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 14); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedGroupCount()); - assertEquals(0, newMsg.getRepeatedGroup(0).getA()); - assertEquals(1, newMsg.getRepeatedGroup(1).getA()); - } - - - public void testMicroRepeatedNestedMessage() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - TestAllTypesMicro.NestedMessage nestedMsg0 = - new TestAllTypesMicro.NestedMessage().setBb(0); - TestAllTypesMicro.NestedMessage nestedMsg1 = - new TestAllTypesMicro.NestedMessage().setBb(1); - TestAllTypesMicro.NestedMessage nestedMsg2 = - new TestAllTypesMicro.NestedMessage().setBb(2); - - msg.addRepeatedNestedMessage(nestedMsg0); - assertEquals(1, msg.getRepeatedNestedMessageCount()); - assertEquals(0, msg.getRepeatedNestedMessage(0).getBb()); - msg.addRepeatedNestedMessage(nestedMsg1); - assertEquals(2, msg.getRepeatedNestedMessageCount()); - assertEquals(0, msg.getRepeatedNestedMessage(0).getBb()); - assertEquals(1, msg.getRepeatedNestedMessage(1).getBb()); - msg.setRepeatedNestedMessage(0, nestedMsg2); - assertEquals(2, msg.getRepeatedNestedMessageCount()); - assertEquals(2, msg.getRepeatedNestedMessage(0).getBb()); - assertEquals(1, msg.getRepeatedNestedMessage(1).getBb()); - msg.clearRepeatedNestedMessage(); - assertEquals(0, msg.getRepeatedNestedMessageCount()); - msg.clearRepeatedNestedMessage() - .addRepeatedNestedMessage(nestedMsg1); - assertEquals(1, msg.getRepeatedNestedMessageCount()); - assertEquals(1, msg.getRepeatedNestedMessage(0).getBb()); - msg.clear(); - assertEquals(0, msg.getRepeatedNestedMessageCount()); - - // Test 1 entry - msg.clear() - .addRepeatedNestedMessage(nestedMsg0); - assertEquals(1, msg.getRepeatedNestedMessageCount()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 5); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedNestedMessageCount()); - assertEquals(0, newMsg.getRepeatedNestedMessage(0).getBb()); - - // Test 2 entries - msg.clear() - .addRepeatedNestedMessage(nestedMsg0) - .addRepeatedNestedMessage(nestedMsg1); - assertEquals(2, msg.getRepeatedNestedMessageCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 10); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedNestedMessageCount()); - assertEquals(0, newMsg.getRepeatedNestedMessage(0).getBb()); - assertEquals(1, newMsg.getRepeatedNestedMessage(1).getBb()); - } - - public void testMicroRepeatedForeignMessage() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - MicroOuterClass.ForeignMessageMicro foreignMsg0 = - new MicroOuterClass.ForeignMessageMicro().setC(0); - MicroOuterClass.ForeignMessageMicro foreignMsg1 = - new MicroOuterClass.ForeignMessageMicro().setC(1); - MicroOuterClass.ForeignMessageMicro foreignMsg2 = - new MicroOuterClass.ForeignMessageMicro().setC(2); - - msg.addRepeatedForeignMessage(foreignMsg0); - assertEquals(1, msg.getRepeatedForeignMessageCount()); - assertEquals(0, msg.getRepeatedForeignMessage(0).getC()); - msg.addRepeatedForeignMessage(foreignMsg1); - assertEquals(2, msg.getRepeatedForeignMessageCount()); - assertEquals(0, msg.getRepeatedForeignMessage(0).getC()); - assertEquals(1, msg.getRepeatedForeignMessage(1).getC()); - msg.setRepeatedForeignMessage(0, foreignMsg2); - assertEquals(2, msg.getRepeatedForeignMessageCount()); - assertEquals(2, msg.getRepeatedForeignMessage(0).getC()); - assertEquals(1, msg.getRepeatedForeignMessage(1).getC()); - msg.clearRepeatedForeignMessage(); - assertEquals(0, msg.getRepeatedForeignMessageCount()); - msg.clearRepeatedForeignMessage() - .addRepeatedForeignMessage(foreignMsg1); - assertEquals(1, msg.getRepeatedForeignMessageCount()); - assertEquals(1, msg.getRepeatedForeignMessage(0).getC()); - msg.clear(); - assertEquals(0, msg.getRepeatedForeignMessageCount()); - - // Test 1 entry - msg.clear() - .addRepeatedForeignMessage(foreignMsg0); - assertEquals(1, msg.getRepeatedForeignMessageCount()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 5); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedForeignMessageCount()); - assertEquals(0, newMsg.getRepeatedForeignMessage(0).getC()); - - // Test 2 entries - msg.clear() - .addRepeatedForeignMessage(foreignMsg0) - .addRepeatedForeignMessage(foreignMsg1); - assertEquals(2, msg.getRepeatedForeignMessageCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 10); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedForeignMessageCount()); - assertEquals(0, newMsg.getRepeatedForeignMessage(0).getC()); - assertEquals(1, newMsg.getRepeatedForeignMessage(1).getC()); - } - - public void testMicroRepeatedImportMessage() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - UnittestImportMicro.ImportMessageMicro importMsg0 = - new UnittestImportMicro.ImportMessageMicro().setD(0); - UnittestImportMicro.ImportMessageMicro importMsg1 = - new UnittestImportMicro.ImportMessageMicro().setD(1); - UnittestImportMicro.ImportMessageMicro importMsg2 = - new UnittestImportMicro.ImportMessageMicro().setD(2); - - msg.addRepeatedImportMessage(importMsg0); - assertEquals(1, msg.getRepeatedImportMessageCount()); - assertEquals(0, msg.getRepeatedImportMessage(0).getD()); - msg.addRepeatedImportMessage(importMsg1); - assertEquals(2, msg.getRepeatedImportMessageCount()); - assertEquals(0, msg.getRepeatedImportMessage(0).getD()); - assertEquals(1, msg.getRepeatedImportMessage(1).getD()); - msg.setRepeatedImportMessage(0, importMsg2); - assertEquals(2, msg.getRepeatedImportMessageCount()); - assertEquals(2, msg.getRepeatedImportMessage(0).getD()); - assertEquals(1, msg.getRepeatedImportMessage(1).getD()); - msg.clearRepeatedImportMessage(); - assertEquals(0, msg.getRepeatedImportMessageCount()); - msg.clearRepeatedImportMessage() - .addRepeatedImportMessage(importMsg1); - assertEquals(1, msg.getRepeatedImportMessageCount()); - assertEquals(1, msg.getRepeatedImportMessage(0).getD()); - msg.clear(); - assertEquals(0, msg.getRepeatedImportMessageCount()); - - // Test 1 entry - msg.clear() - .addRepeatedImportMessage(importMsg0); - assertEquals(1, msg.getRepeatedImportMessageCount()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 5); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedImportMessageCount()); - assertEquals(0, newMsg.getRepeatedImportMessage(0).getD()); - - // Test 2 entries - msg.clear() - .addRepeatedImportMessage(importMsg0) - .addRepeatedImportMessage(importMsg1); - assertEquals(2, msg.getRepeatedImportMessageCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 10); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedImportMessageCount()); - assertEquals(0, newMsg.getRepeatedImportMessage(0).getD()); - assertEquals(1, newMsg.getRepeatedImportMessage(1).getD()); - } - - public void testMicroRepeatedNestedEnum() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - msg.addRepeatedNestedEnum(TestAllTypesMicro.FOO); - assertEquals(1, msg.getRepeatedNestedEnumCount()); - assertEquals(TestAllTypesMicro.FOO, msg.getRepeatedNestedEnum(0)); - msg.addRepeatedNestedEnum(TestAllTypesMicro.BAR); - assertEquals(2, msg.getRepeatedNestedEnumCount()); - assertEquals(TestAllTypesMicro.FOO, msg.getRepeatedNestedEnum(0)); - assertEquals(TestAllTypesMicro.BAR, msg.getRepeatedNestedEnum(1)); - msg.setRepeatedNestedEnum(0, TestAllTypesMicro.BAZ); - assertEquals(2, msg.getRepeatedNestedEnumCount()); - assertEquals(TestAllTypesMicro.BAZ, msg.getRepeatedNestedEnum(0)); - assertEquals(TestAllTypesMicro.BAR, msg.getRepeatedNestedEnum(1)); - msg.clearRepeatedNestedEnum(); - assertEquals(0, msg.getRepeatedNestedEnumCount()); - msg.clearRepeatedNestedEnum() - .addRepeatedNestedEnum(TestAllTypesMicro.BAR); - assertEquals(1, msg.getRepeatedNestedEnumCount()); - assertEquals(TestAllTypesMicro.BAR, msg.getRepeatedNestedEnum(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedNestedEnumCount()); - - // Test 1 entry - msg.clear() - .addRepeatedNestedEnum(TestAllTypesMicro.FOO); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedNestedEnumCount()); - assertEquals(TestAllTypesMicro.FOO, msg.getRepeatedNestedEnum(0)); - - // Test 2 entries - msg.clear() - .addRepeatedNestedEnum(TestAllTypesMicro.FOO) - .addRepeatedNestedEnum(TestAllTypesMicro.BAR); - assertEquals(2, msg.getRepeatedNestedEnumCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 6); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedNestedEnumCount()); - assertEquals(TestAllTypesMicro.FOO, msg.getRepeatedNestedEnum(0)); - assertEquals(TestAllTypesMicro.BAR, msg.getRepeatedNestedEnum(1)); - } - - public void testMicroRepeatedForeignEnum() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - msg.addRepeatedForeignEnum(MicroOuterClass.FOREIGN_MICRO_FOO); - assertEquals(1, msg.getRepeatedForeignEnumCount()); - assertEquals(MicroOuterClass.FOREIGN_MICRO_FOO, msg.getRepeatedForeignEnum(0)); - msg.addRepeatedForeignEnum(MicroOuterClass.FOREIGN_MICRO_BAR); - assertEquals(2, msg.getRepeatedForeignEnumCount()); - assertEquals(MicroOuterClass.FOREIGN_MICRO_FOO, msg.getRepeatedForeignEnum(0)); - assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR, msg.getRepeatedForeignEnum(1)); - msg.setRepeatedForeignEnum(0, MicroOuterClass.FOREIGN_MICRO_BAZ); - assertEquals(2, msg.getRepeatedForeignEnumCount()); - assertEquals(MicroOuterClass.FOREIGN_MICRO_BAZ, msg.getRepeatedForeignEnum(0)); - assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR, msg.getRepeatedForeignEnum(1)); - msg.clearRepeatedForeignEnum(); - assertEquals(0, msg.getRepeatedForeignEnumCount()); - msg.clearRepeatedForeignEnum() - .addRepeatedForeignEnum(MicroOuterClass.FOREIGN_MICRO_BAR); - assertEquals(1, msg.getRepeatedForeignEnumCount()); - assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR, msg.getRepeatedForeignEnum(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedForeignEnumCount()); - - // Test 1 entry - msg.clear() - .addRepeatedForeignEnum(MicroOuterClass.FOREIGN_MICRO_FOO); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedForeignEnumCount()); - assertEquals(MicroOuterClass.FOREIGN_MICRO_FOO, msg.getRepeatedForeignEnum(0)); - - // Test 2 entries - msg.clear() - .addRepeatedForeignEnum(MicroOuterClass.FOREIGN_MICRO_FOO) - .addRepeatedForeignEnum(MicroOuterClass.FOREIGN_MICRO_BAR); - assertEquals(2, msg.getRepeatedForeignEnumCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 6); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedForeignEnumCount()); - assertEquals(MicroOuterClass.FOREIGN_MICRO_FOO, msg.getRepeatedForeignEnum(0)); - assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR, msg.getRepeatedForeignEnum(1)); - } - - public void testMicroRepeatedImportEnum() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - msg.addRepeatedImportEnum(UnittestImportMicro.IMPORT_MICRO_FOO); - assertEquals(1, msg.getRepeatedImportEnumCount()); - assertEquals(UnittestImportMicro.IMPORT_MICRO_FOO, msg.getRepeatedImportEnum(0)); - msg.addRepeatedImportEnum(UnittestImportMicro.IMPORT_MICRO_BAR); - assertEquals(2, msg.getRepeatedImportEnumCount()); - assertEquals(UnittestImportMicro.IMPORT_MICRO_FOO, msg.getRepeatedImportEnum(0)); - assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR, msg.getRepeatedImportEnum(1)); - msg.setRepeatedImportEnum(0, UnittestImportMicro.IMPORT_MICRO_BAZ); - assertEquals(2, msg.getRepeatedImportEnumCount()); - assertEquals(UnittestImportMicro.IMPORT_MICRO_BAZ, msg.getRepeatedImportEnum(0)); - assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR, msg.getRepeatedImportEnum(1)); - msg.clearRepeatedImportEnum(); - assertEquals(0, msg.getRepeatedImportEnumCount()); - msg.clearRepeatedImportEnum() - .addRepeatedImportEnum(UnittestImportMicro.IMPORT_MICRO_BAR); - assertEquals(1, msg.getRepeatedImportEnumCount()); - assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR, msg.getRepeatedImportEnum(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedImportEnumCount()); - - // Test 1 entry - msg.clear() - .addRepeatedImportEnum(UnittestImportMicro.IMPORT_MICRO_FOO); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedImportEnumCount()); - assertEquals(UnittestImportMicro.IMPORT_MICRO_FOO, msg.getRepeatedImportEnum(0)); - - // Test 2 entries - msg.clear() - .addRepeatedImportEnum(UnittestImportMicro.IMPORT_MICRO_FOO) - .addRepeatedImportEnum(UnittestImportMicro.IMPORT_MICRO_BAR); - assertEquals(2, msg.getRepeatedImportEnumCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 6); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedImportEnumCount()); - assertEquals(UnittestImportMicro.IMPORT_MICRO_FOO, msg.getRepeatedImportEnum(0)); - assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR, msg.getRepeatedImportEnum(1)); - } - - public void testMicroRepeatedStringPiece() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedStringPieceCount()); - msg.addRepeatedStringPiece("hello"); - assertEquals(1, msg.getRepeatedStringPieceCount()); - assertEquals("hello", msg.getRepeatedStringPiece(0)); - msg.addRepeatedStringPiece("bye"); - assertEquals(2, msg.getRepeatedStringPieceCount()); - assertEquals("hello", msg.getRepeatedStringPiece(0)); - assertEquals("bye", msg.getRepeatedStringPiece(1)); - msg.setRepeatedStringPiece(0, "boo"); - assertEquals(2, msg.getRepeatedStringPieceCount()); - assertEquals("boo", msg.getRepeatedStringPiece(0)); - assertEquals("bye", msg.getRepeatedStringPiece(1)); - msg.clearRepeatedStringPiece(); - assertEquals(0, msg.getRepeatedStringPieceCount()); - msg.clearRepeatedStringPiece() - .addRepeatedStringPiece("hello"); - assertEquals(1, msg.getRepeatedStringPieceCount()); - assertEquals("hello", msg.getRepeatedStringPiece(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedStringPieceCount()); - - // Test 1 entry and an empty string - msg.clear() - .addRepeatedStringPiece(""); - assertEquals(1, msg.getRepeatedStringPieceCount()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedStringPieceCount()); - assertEquals("", newMsg.getRepeatedStringPiece(0)); - - // Test 2 entries - msg.clear() - .addRepeatedStringPiece("hello") - .addRepeatedStringPiece("world"); - assertEquals(2, msg.getRepeatedStringPieceCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 16); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedStringPieceCount()); - assertEquals("hello", newMsg.getRepeatedStringPiece(0)); - assertEquals("world", newMsg.getRepeatedStringPiece(1)); - } - - public void testMicroRepeatedCord() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertEquals(0, msg.getRepeatedCordCount()); - msg.addRepeatedCord("hello"); - assertEquals(1, msg.getRepeatedCordCount()); - assertEquals("hello", msg.getRepeatedCord(0)); - msg.addRepeatedCord("bye"); - assertEquals(2, msg.getRepeatedCordCount()); - assertEquals("hello", msg.getRepeatedCord(0)); - assertEquals("bye", msg.getRepeatedCord(1)); - msg.setRepeatedCord(0, "boo"); - assertEquals(2, msg.getRepeatedCordCount()); - assertEquals("boo", msg.getRepeatedCord(0)); - assertEquals("bye", msg.getRepeatedCord(1)); - msg.clearRepeatedCord(); - assertEquals(0, msg.getRepeatedCordCount()); - msg.clearRepeatedCord() - .addRepeatedCord("hello"); - assertEquals(1, msg.getRepeatedCordCount()); - assertEquals("hello", msg.getRepeatedCord(0)); - msg.clear(); - assertEquals(0, msg.getRepeatedCordCount()); - - // Test 1 entry and an empty string - msg.clear() - .addRepeatedCord(""); - assertEquals(1, msg.getRepeatedCordCount()); - byte [] result = msg.toByteArray(); - int msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 3); - assertEquals(result.length, msgSerializedSize); - TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(1, newMsg.getRepeatedCordCount()); - assertEquals("", newMsg.getRepeatedCord(0)); - - // Test 2 entries - msg.clear() - .addRepeatedCord("hello") - .addRepeatedCord("world"); - assertEquals(2, msg.getRepeatedCordCount()); - result = msg.toByteArray(); - msgSerializedSize = msg.getSerializedSize(); - //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); - assertTrue(msgSerializedSize == 16); - assertEquals(result.length, msgSerializedSize); - - newMsg = TestAllTypesMicro.parseFrom(result); - assertEquals(2, newMsg.getRepeatedCordCount()); - assertEquals("hello", newMsg.getRepeatedCord(0)); - assertEquals("world", newMsg.getRepeatedCord(1)); - } - - public void testMicroDefaults() throws Exception { - TestAllTypesMicro msg = new TestAllTypesMicro(); - assertFalse(msg.hasDefaultInt32()); - assertEquals(41, msg.getDefaultInt32()); - assertFalse(msg.hasDefaultInt64()); - assertEquals(42, msg.getDefaultInt64()); - assertFalse(msg.hasDefaultUint32()); - assertEquals(43, msg.getDefaultUint32()); - assertFalse(msg.hasDefaultUint64()); - assertEquals(44, msg.getDefaultUint64()); - assertFalse(msg.hasDefaultSint32()); - assertEquals(-45, msg.getDefaultSint32()); - assertFalse(msg.hasDefaultSint64()); - assertEquals(46, msg.getDefaultSint64()); - assertFalse(msg.hasDefaultFixed32()); - assertEquals(47, msg.getDefaultFixed32()); - assertFalse(msg.hasDefaultFixed64()); - assertEquals(48, msg.getDefaultFixed64()); - assertFalse(msg.hasDefaultSfixed32()); - assertEquals(49, msg.getDefaultSfixed32()); - assertFalse(msg.hasDefaultSfixed64()); - assertEquals(-50, msg.getDefaultSfixed64()); - assertFalse(msg.hasDefaultFloat()); - assertTrue(51.5f == msg.getDefaultFloat()); - assertFalse(msg.hasDefaultDouble()); - assertTrue(52.0e3 == msg.getDefaultDouble()); - assertFalse(msg.hasDefaultBool()); - assertEquals(true, msg.getDefaultBool()); - assertFalse(msg.hasDefaultString()); - assertEquals("hello", msg.getDefaultString()); - assertFalse(msg.hasDefaultBytes()); - assertEquals("world", msg.getDefaultBytes().toStringUtf8()); - assertFalse(msg.hasDefaultNestedEnum()); - assertEquals(TestAllTypesMicro.BAR, msg.getDefaultNestedEnum()); - assertFalse(msg.hasDefaultForeignEnum()); - assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR, msg.getDefaultForeignEnum()); - assertFalse(msg.hasDefaultImportEnum()); - assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR, msg.getDefaultImportEnum()); - } -} diff --git a/java/src/test/java/com/google/protobuf/PerfTimer.java b/java/src/test/java/com/google/protobuf/PerfTimer.java deleted file mode 100644 index d6df4ff..0000000 --- a/java/src/test/java/com/google/protobuf/PerfTimer.java +++ /dev/null @@ -1,832 +0,0 @@ -/* - * Copyright (C) 2010 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.protobuf; - -import java.util.Arrays; - -/** - * A Performance Timing class that can be used to estimate the amount of time a - * sequence of code takes. The typical code sequence would be as follows:</p> - * <code> - PerfTimer pt = new PerfTimer(); - pt.calibrate(); - pt.timeEachAutomatically(new Runnable() = { - public void run() { - // Add code to time - } - }); - System.out.printf("time per loop=" + pt); - - * The calibrate method determines the overhead of timing the run() method and - * the number of times to call the run() method to have approximately 1% precision - * for timing. The method pt.stats() method will return a string containing some - * statistics tpl, il, ol, min, max, mean, median, stddev and total. - * - * tpl ::= Timer per loop - * min ::= minimum time one call to run() took - * stddev ::= Standard deviation of the collected times - * mean ::= the average time to call run() - * median ::= 1/2 the times were > than this time and 1/2 were less. - * total ::= Sum of the times collected. - * il ::= innerLoops; the number of times run() between each call to start/stop - * ol ::= outerLoops, the number of times start/stop was called - * - * You can also use start/stop/restart to do simple timing: - * - * pt.start(); - * a += 1; - * pt.stop(); - * pt.log("time=" + pt); - * pt.restart(); - * doSomething(); - * pt.stop(); - * System.out.printf("time=" + pt); - * </code> - * - * @author wink@google.com (Wink Saville) - */ -public class PerfTimer { - /** No debug */ - public static final int DEBUG_LEVEL_NONE = 0; - - /** Some debug */ - public static final int DEBUG_LEVEL_SOME = 1; - - /** All debug */ - public static final int DEBUG_LEVEL_ALL = 2; - - /** Timer ticks per microsecond */ - private static final double TICKS_PER_MICROSECOND = 1000.0; - - /** Random number generator */ - java.util.Random rng = new java.util.Random(); - - /** get ticks */ - private static long getTicks() { - return System.nanoTime(); - } - - /** Debug logging */ - private static void log(String s) { - System.out.printf(String.format("[PerfTimer] %s\n", s)); - } - - /** Outer loops for timeEachAutomatically */ - private static final int OUTER_LOOPS = 100; - - /** Thrown if an error occurs while timing */ - public static class PerfTimerException extends RuntimeException { - } - - /** - * Calibration record - */ - public static class CalibrationRec { - /** Runnable overhead */ - public double mRunnableOverheadInMicros = 0.0; - - /** Minimum Threshold value for timeEachAutomaticaly */ - public double mMinThresholdInMicros = 3000.0; - - /** Maximum Threshold value for timeEachAutomaticaly */ - public double mMaxThresholdInMicros = 6000.0; - - /** Desired precision in decimal digits */ - public double mPrecisionInDecimalDigits = 2.0; - - /** - * Default number of retries if the standard deviation ratio is too - * large - */ - public final int mStdDevRetrys = 5; - - /** Default maximum standard deviation radio */ - public final double mMaxStdDevRatio = 0.15; - - /** Number of votes looking for smallest time per loop */ - public final int mVotes = 3; - - /** Convert to string */ - @Override - public String toString() { - return String - .format( - "oh=%.6fus minT=%.6fus maxT=%.6fus prc=%,.3f stdDevRetrys=%d maxStdDevRatio=%.2f votes=%d", - mRunnableOverheadInMicros, mMinThresholdInMicros, - mMaxThresholdInMicros, mPrecisionInDecimalDigits, mStdDevRetrys, - mMaxStdDevRatio, mVotes); - } - } - - /** - * Calibration record - */ - private CalibrationRec mCr; - - /** - * Statistics calculated on the timing data. - */ - public static class Stats { - /** Number of outer loops */ - private int mOuterLoops; - - /** Number of inner loops */ - private int mInnerLoops; - - /** Minimum time in times array */ - private long mMin; - - /** Maximum time in times array */ - private long mMax; - - /** Median value in times array */ - private double mMedian; - - /** The mean (average) of the values in times array */ - private double mMean; - - /** The standard deviation of the values in times array */ - private double mStdDev; - - private int mStdDevTooLargeCount; - - /** Sum of the times in the times array */ - private double mTotal; - - /** Initialize */ - public void init() { - mInnerLoops = 1; - mOuterLoops = 1; - mMin = 0; - mMax = 0; - mMedian = 0; - mMean = 0; - mStdDev = 0; - mStdDevTooLargeCount = 0; - mTotal = 0; - } - - /** Constructor */ - public Stats() { - init(); - } - - /** Set number of inner loops */ - public void setInnerLoops(int loops) { - mInnerLoops = loops; - } - - /** Get number of inner loops */ - public int getInnerLoops() { - return mInnerLoops; - } - - /** Set number of inner loops */ - public void setOuterLoops(int loops) { - mOuterLoops = loops; - } - - /** Get number of inner loops */ - public int getOuterLoops() { - return mOuterLoops; - } - - /** - * Minimum value of collected data in microseconds, valid after analyze. - */ - public double getMinInMicros() { - return mMin / TICKS_PER_MICROSECOND; - } - - /** - * Maximum value of collected data in microseconds, valid after analyze. - */ - public double getMaxInMicros() { - return mMax / TICKS_PER_MICROSECOND; - } - - /** - * Sum of the values of collected data in microseconds, valid after - * analyze. - */ - public double getTotalInMicros() { - return mTotal / TICKS_PER_MICROSECOND; - } - - /** Sum of the values of collected data in seconds, valid after analyze. */ - public double getTotalInSecs() { - return mTotal / (TICKS_PER_MICROSECOND * 1000000.0); - } - - /** Sum of the values of collected data in seconds, valid after analyze. */ - public double getMeanInMicros() { - return mMean / TICKS_PER_MICROSECOND; - } - - /** Median value of collected data in microseconds, valid after analyze. */ - public double getMedianInMicros() { - return mMedian / TICKS_PER_MICROSECOND; - } - - /** - * Standard deviation of collected data in microseconds, valid after - * analyze. - */ - public double getStdDevInMicros() { - return mStdDev / TICKS_PER_MICROSECOND; - } - - public double getStdDevRatio() { - return mStdDev / mMin; - } - - /** Return true if (mStdDev / mMin) <= maxStdDevRation */ - public boolean stdDevOk(double maxStdDevRatio) { - return getStdDevRatio() <= maxStdDevRatio; - } - - /** Increment StdDevTooLargeCount */ - public void incStdDevTooLargeCount() { - mStdDevTooLargeCount += 1; - } - - /** Return number of times stdDev was not ok */ - public int getStdDevTooLargeCount() { - return mStdDevTooLargeCount; - } - - /** Return time per loop */ - public double getTimePerLoop() { - return mMin / TICKS_PER_MICROSECOND / mInnerLoops; - } - - /** - * Calculate the stats for the data. Note the data in the range will be - * sorted. - * - * @param data - * @param count - */ - public Stats calculate(long data[], int count) { - if (count == 1) { - mMin = mMax = data[0]; - mTotal = mMedian = mMean = data[0]; - mStdDev = 0; - } else if (count > 1) { - Arrays.sort(data, 0, count); - mMin = data[0]; - mMax = data[count - 1]; - if ((count & 1) == 1) { - mMedian = data[((count + 1) / 2) - 1]; - } else { - mMedian = (data[count / 2] + data[(count / 2) - 1]) / 2; - } - mTotal = 0; - double sumSquares = 0; - for (int i = 0; i < count; i++) { - long t = data[i]; - mTotal += t; - sumSquares += t * t; - } - mMean = mTotal / count; - double variance = (sumSquares / count) - (mMean * mMean); - mStdDev = Math.pow(variance, 0.5); - } else { - init(); - } - return this; - } - - /** Convert to string */ - @Override - public String toString() { - double timePerLoop = getTimePerLoop(); - double stdDevPerLoop = mStdDev / TICKS_PER_MICROSECOND / mInnerLoops; - return String.format( - "tpl=%,.6fus stdDev=%,.6fus tpl/stdDev=%.2fpercent min=%,.6fus median=%,.6fus mean=%,.6fus max=%,.6fus total=%,.6fs il=%d, ol=%d tlc=%d", - timePerLoop, stdDevPerLoop, (stdDevPerLoop / timePerLoop) * 100, mMin - / TICKS_PER_MICROSECOND, mMedian / TICKS_PER_MICROSECOND, mMean - / TICKS_PER_MICROSECOND, mMax / TICKS_PER_MICROSECOND, mTotal - / (TICKS_PER_MICROSECOND * 1000000.0), mInnerLoops, mOuterLoops, mStdDevTooLargeCount); - } - } - - /** Statistics */ - private Stats mStats = new Stats(); - - /** Statistics of the clock precision */ - private Stats mClockStats; - - /** Number of items in times array */ - private int mCount; - - /** Array of stop - start times */ - private long mTimes[]; - - /** Time of last started */ - private long mStart; - - /** Sleep a little so we don't look like a hog */ - private void sleep() { - try { - Thread.sleep(0); - } catch (InterruptedException e) { - // Ignore exception - } - } - - /** Empty Runnable used for determining overhead */ - private Runnable mEmptyRunnable = new Runnable() { - public void run() { - } - }; - - /** Initialize */ - private void init(int maxCount, CalibrationRec cr) { - mTimes = new long[maxCount]; - mCr = cr; - reset(); - } - - /** Construct the stop watch */ - public PerfTimer() { - init(10, new CalibrationRec()); - } - - /** Construct setting size of times array */ - public PerfTimer(int maxCount) { - init(maxCount, new CalibrationRec()); - } - - /** Construct the stop watch */ - public PerfTimer(CalibrationRec cr) { - init(10, cr); - } - - /** Construct the stop watch */ - public PerfTimer(int maxCount, CalibrationRec cr) { - init(maxCount, cr); - } - - /** Reset the contents of the times array */ - public PerfTimer reset() { - mCount = 0; - mStats.init(); - return this; - } - - /** Reset and then start the timer */ - public PerfTimer restart() { - reset(); - mStart = getTicks(); - return this; - } - - /** Start timing */ - public PerfTimer start() { - mStart = getTicks(); - return this; - } - - /** - * Record the difference between start and now in the times array - * incrementing count. The time will be stored in the times array if the - * array is not full. - */ - public PerfTimer stop() { - long stop = getTicks(); - if (mCount < mTimes.length) { - mTimes[mCount++] = stop - mStart; - } - return this; - } - - /** - * Time how long it takes to execute runnable.run() innerLoop number of - * times outerLoops number of times. - * - * @param outerLoops - * @param innerLoops - * @param runnable - * @return PerfTimer - */ - public PerfTimer timeEach(Stats stats, int outerLoops, int innerLoops, Runnable runnable) { - reset(); - resize(outerLoops); - stats.setOuterLoops(outerLoops); - stats.setInnerLoops(innerLoops); - for (int i = 0; i < outerLoops; i++) { - start(); - for (int j = 0; j < innerLoops; j++) { - runnable.run(); - } - stop(); - sleep(); - } - return this; - } - - /** - * Time how long it takes to execute runnable.run(). Runs runnable votes - * times and returns the Stats of the fastest run. The actual number times - * that runnable.run() is executes is enough times so that it runs at least - * minThreadholeInMicros but not greater than maxThreadholdInMicro. This - * minimizes the chance that long context switches influence the result. - * - * @param votes is the number of runnable will be executed to determine - * fastest run - * @param outerLoops is the number of of times the inner loop is run - * @param initialInnerLoops is the initial inner loop - * @param maxStdDevRetrys if the maxStdDevRatio is exceeded this number of - * time the PerfTimerException is thrown. - * @param maxStdDevRatio the ratio of the standard deviation of the run and - * the time to run. - * @param debugLevel DEBUG_LEVEL_NONE, DEBUG_LEVEL_SOME, DEBUG_LEVEL_ALL - * @param runnable is the code to test. - * @return Stats of the fastest run. - */ - public Stats timeEachAutomatically(int votes, int outerLoops, int initialInnerLoops, - double minThresholdInMicros, double maxThresholdInMicros, int maxStdDevRetrys, - double maxStdDevRatio, int debugLevel, Runnable runnable) throws PerfTimerException { - Stats minStats = null; - - for (int v = 0; v < votes; v++) { - boolean successful = false; - Stats stats = new Stats(); - int innerLoops = initialInnerLoops; - - /* Warm up cache */ - timeEach(stats, outerLoops, initialInnerLoops, runnable); - - for (int stdDevRetrys = 0; stdDevRetrys < maxStdDevRetrys; stdDevRetrys++) { - /** - * First time may be long enough - */ - timeEach(stats, outerLoops, innerLoops, runnable); - analyze(stats, mTimes, outerLoops, debugLevel); - double innerLoopTime = stats.getMinInMicros(); - if ((innerLoopTime >= minThresholdInMicros - - ((maxThresholdInMicros - minThresholdInMicros) / 2))) { - if (stats.stdDevOk(maxStdDevRatio)) { - successful = true; - break; - } else { - stats.incStdDevTooLargeCount(); - if (debugLevel >= DEBUG_LEVEL_SOME) { - log(String.format( - "tea: tlc=%d StdDevRatio=%.2f > maxStdDevRatio=%.2f", - stats.getStdDevTooLargeCount(), stats.getStdDevRatio(), - maxStdDevRatio)); - } - } - } else { - /** - * The initial number of loops is too short find the number - * of loops that exceeds maxThresholdInMicros. Then use a - * binary search to find the approriate innerLoop value that - * is between min/maxThreshold. - */ - innerLoops *= 10; - int maxInnerLoops = innerLoops; - int minInnerLoops = 1; - boolean binarySearch = false; - for (int i = 0; i < 10; i++) { - timeEach(stats, outerLoops, innerLoops, runnable); - analyze(stats, mTimes, outerLoops, debugLevel); - innerLoopTime = stats.getMedianInMicros(); - if ((innerLoopTime >= minThresholdInMicros) - && (innerLoopTime <= maxThresholdInMicros)) { - if (stats.stdDevOk(maxStdDevRatio)) { - successful = true; - break; - } else { - stats.incStdDevTooLargeCount(); - if (debugLevel >= DEBUG_LEVEL_SOME) { - log(String.format( - "tea: tlc=%d StdDevRatio=%.2f > maxStdDevRatio=%.2f", - stats.getStdDevTooLargeCount(), stats.getStdDevRatio(), - maxStdDevRatio)); - } - } - } else if (binarySearch) { - if ((innerLoopTime < minThresholdInMicros)) { - minInnerLoops = innerLoops; - } else { - maxInnerLoops = innerLoops; - } - innerLoops = (maxInnerLoops + minInnerLoops) / 2; - } else if (innerLoopTime >= maxThresholdInMicros) { - /* Found a too large value, change to binary search */ - binarySearch = true; - maxInnerLoops = innerLoops; - innerLoops = (maxInnerLoops + minInnerLoops) / 2; - } else { - innerLoops *= 10; - } - } - if (successful) { - break; - } - } - } - if (!successful) { - /* Couldn't find the number of loops to execute */ - throw new PerfTimerException(); - } - - /** Looking for minimum */ - if ((minStats == null) || (minStats.getTimePerLoop() > stats.getTimePerLoop())) { - minStats = stats; - } - if (debugLevel >= DEBUG_LEVEL_SOME) { - log(String.format("minStats.getTimePerLoop=%f minStats: %s", minStats.getTimePerLoop(), minStats)); - } - } - - return minStats; - } - - /** - * Time how long it takes to execute runnable.run() with a threshold of 1 to - * 10ms. - * - * @param debugLevel DEBUG_LEVEL_NONE, DEBUG_LEVEL_SOME, DEBUG_LEVEL_ALL - * @param runnable - * @throws PerfTimerException - */ - public Stats timeEachAutomatically(int debugLevel, Runnable runnable) - throws PerfTimerException { - mStats = timeEachAutomatically(mCr.mVotes, OUTER_LOOPS, 1, mCr.mMinThresholdInMicros, - mCr.mMaxThresholdInMicros, mCr.mStdDevRetrys, mCr.mMaxStdDevRatio, debugLevel, - runnable); - return mStats; - } - - /** - * Time how long it takes to execute runnable.run() with a threshold of 1 to - * 10ms. - * - * @param runnable - * @throws PerfTimerException - */ - public Stats timeEachAutomatically(Runnable runnable) throws PerfTimerException { - mStats = timeEachAutomatically(mCr.mVotes, OUTER_LOOPS, 1, mCr.mMinThresholdInMicros, - mCr.mMaxThresholdInMicros, mCr.mStdDevRetrys, mCr.mMaxStdDevRatio, - DEBUG_LEVEL_NONE, runnable); - return mStats; - } - - /** Resize the times array */ - public void resize(int maxCount) { - if (maxCount > mTimes.length) { - mTimes = new long[maxCount]; - } - } - - /** - * Analyze the data calculating the min, max, total, median, mean and - * stdDev. The standard deviation is calculated as sqrt(((sum of the squares - * of each time) / count) - mean^2) - * {@link "http://www.sciencebuddies.org/mentoring/project_data_analysis_variance_std_deviation.shtml"} - * - * @param debugLevel DEBUG_LEVEL_NONE, DEBUG_LEVEL_SOME, DEBUG_LEVEL_ALL - * @return StopWatch - */ - public Stats analyze(Stats stats, long data[], int count, int debugLevel) { - if (count > 0) { - if (debugLevel >= DEBUG_LEVEL_ALL) { - for (int j = 0; j < count; j++) { - log(String.format("data[%d]=%,dns", j, data[j])); - } - } - stats.calculate(data, count); - } else { - stats.init(); - } - if (debugLevel >= DEBUG_LEVEL_SOME) { - log("stats: " + stats); - } - return stats; - } - - /** - * Calibrate the system and set it for this PerfTimer instance - * - * @param debugLevel DEBUG_LEVEL_NONE, DEBUG_LEVEL_SOME, DEBUG_LEVEL_ALL - * @param precisionInDecimalDigits the precision in number of decimal digits - */ - public CalibrationRec calibrate(int debugLevel, double precisionInDecimalDigits) - throws PerfTimerException { - int nonZeroCount = 0; - Stats stats = new Stats(); - CalibrationRec cr = new CalibrationRec(); - - /* initialize the precision */ - cr.mPrecisionInDecimalDigits = precisionInDecimalDigits; - - /* Warm up the cache */ - timeEach(stats, OUTER_LOOPS, 10, mEmptyRunnable); - - /* - * Determine the clock stats with at least 20% non-zero unique values. - */ - for (int clockStatsTries = 1; clockStatsTries < 100; clockStatsTries++) { - int j; - int i; - long cur; - long prev; - long min; - - int innerLoops = clockStatsTries * 10; - timeEach(stats, OUTER_LOOPS, innerLoops, mEmptyRunnable); - long nonZeroValues[] = new long[mCount]; - prev = 0; - for (nonZeroCount = 0, i = 0; i < mCount; i++) { - cur = mTimes[i]; - if (cur > 0) { - nonZeroValues[nonZeroCount++] = cur; - } - } - if (nonZeroCount > (mCount * 0.20)) { - // Calculate thresholds - analyze(stats, nonZeroValues, nonZeroCount, debugLevel); - stats.calculate(nonZeroValues, nonZeroCount); - cr.mMinThresholdInMicros = stats.getMeanInMicros() - * Math.pow(10, cr.mPrecisionInDecimalDigits); - cr.mMaxThresholdInMicros = cr.mMinThresholdInMicros * 2; - - // Set overhead to 0 and time the empty loop then set overhead. - cr.mRunnableOverheadInMicros = 0; - mClockStats = timeEachAutomatically(mCr.mVotes, OUTER_LOOPS, innerLoops, - cr.mMinThresholdInMicros, cr.mMaxThresholdInMicros, mCr.mStdDevRetrys, - mCr.mMaxStdDevRatio, debugLevel, mEmptyRunnable); - cr.mRunnableOverheadInMicros = mClockStats.getMinInMicros() - / mClockStats.getInnerLoops(); - break; - } - nonZeroCount = 0; - } - if (nonZeroCount == 0) { - throw new PerfTimerException(); - } - if (debugLevel >= DEBUG_LEVEL_SOME) { - log(String.format("calibrate X oh=%.6fus minT=%,.6fus maxT=%,.6fus stats: %s", - cr.mRunnableOverheadInMicros, cr.mMinThresholdInMicros, - cr.mMaxThresholdInMicros, stats)); - } - mCr = cr; - return mCr; - } - - /** Calibrate the system and set it for this PerfTimer instance */ - public CalibrationRec calibrate(double precisionInDecimalDigits) throws PerfTimerException { - return calibrate(DEBUG_LEVEL_NONE, precisionInDecimalDigits); - } - - /** Calibrate the system and set it for this PerfTimer instance */ - public CalibrationRec calibrate() throws PerfTimerException { - return calibrate(DEBUG_LEVEL_NONE, mCr.mPrecisionInDecimalDigits); - } - - /* - * Accessors for the private data - */ - - /** Set calibration record */ - public void setCalibrationRec(CalibrationRec cr) { - mCr = cr; - } - - /** Get calibration record */ - public CalibrationRec getCalibrationRec() { - return mCr; - } - - /** Number of samples in times array. */ - public int getCount() { - return mCount; - } - - /** Minimum value of collected data in microseconds, valid after analyze. */ - public double getMinInMicros() { - return mStats.getMinInMicros(); - } - - /** Maximum value of collected data in microseconds, valid after analyze. */ - public double getMaxInMicros() { - return mStats.getMaxInMicros(); - } - - /** - * Sum of the values of collected data in microseconds, valid after analyze. - */ - public double getTotalInMicros() { - return mStats.getTotalInMicros(); - } - - /** Sum of the values of collected data in seconds, valid after analyze. */ - public double getTotalInSecs() { - return mStats.getTotalInSecs(); - } - - /** Sum of the values of collected data in seconds, valid after analyze. */ - public double getMeanInMicros() { - return mStats.getMeanInMicros(); - } - - /** Median value of collected data in microseconds, valid after analyze. */ - public double getMedianInMicros() { - return mStats.getMedianInMicros(); - } - - /** - * Standard deviation of collected data in microseconds, valid after - * analyze. - */ - public double getStdDevInMicros() { - return mStats.getStdDevInMicros(); - } - - /** The mTimes[index] value */ - public long getTime(int index) { - return mTimes[index]; - } - - /** The mTimes */ - public long[] getTimes() { - return mTimes; - } - - /** @return the clock stats as measured in calibrate */ - public Stats getClockStats() { - return mClockStats; - } - - /** @return the stats */ - public Stats getStats() { - return mStats; - } - - /** - * Convert stats to string - * - * @param debugLevel DEBUG_LEVEL_NONE, DEBUG_LEVEL_SOME, DEBUG_LEVEL_ALL - */ - public String stats(int debugLevel) { - int innerLoops = mStats.getInnerLoops(); - if (mCount == 0) { - return String.format("%,.3fus", (getTicks() - mStart) / TICKS_PER_MICROSECOND); - } else { - if (mCount == 1) { - return String.format("%,.3fus", getTime()); - } else { - analyze(mStats, mTimes, mCount, debugLevel); - return mStats.toString(); - } - } - } - - /** - * Convert string - */ - public String stats() { - return stats(0); - } - - /** - * Get time - */ - public double getTime() { - int innerLoops = mStats.getInnerLoops(); - if (mCount == 0) { - return (getTicks() - mStart) / TICKS_PER_MICROSECOND; - } else { - if (mCount == 1) { - return mStats.getTotalInMicros(); - } else { - analyze(mStats, mTimes, mCount, DEBUG_LEVEL_NONE); - return (mStats.getMinInMicros() / innerLoops) - mCr.mRunnableOverheadInMicros; - } - } - } - - /** Convert to string */ - @Override - public String toString() { - return String.format("%,.3fus", getTime()); - } -} diff --git a/java/src/test/java/com/google/protobuf/ServiceTest.java b/java/src/test/java/com/google/protobuf/ServiceTest.java index d8523ea..e10322d 100644 --- a/java/src/test/java/com/google/protobuf/ServiceTest.java +++ b/java/src/test/java/com/google/protobuf/ServiceTest.java @@ -30,7 +30,9 @@ package com.google.protobuf; +import com.google.protobuf.Descriptors.FileDescriptor; import com.google.protobuf.Descriptors.MethodDescriptor; +import google.protobuf.no_generic_services_test.UnittestNoGenericServices; import protobuf_unittest.MessageWithNoOuter; import protobuf_unittest.ServiceWithNoOuter; import protobuf_unittest.UnittestProto.TestAllTypes; @@ -44,6 +46,9 @@ import org.easymock.classextension.EasyMock; import org.easymock.classextension.IMocksControl; import org.easymock.IArgumentMatcher; +import java.util.HashSet; +import java.util.Set; + import junit.framework.TestCase; /** @@ -220,6 +225,48 @@ public class ServiceTest extends TestCase { control.verify(); } + public void testNoGenericServices() throws Exception { + // Non-services should be usable. + UnittestNoGenericServices.TestMessage message = + UnittestNoGenericServices.TestMessage.newBuilder() + .setA(123) + .setExtension(UnittestNoGenericServices.testExtension, 456) + .build(); + assertEquals(123, message.getA()); + assertEquals(1, UnittestNoGenericServices.TestEnum.FOO.getNumber()); + + // Build a list of the class names nested in UnittestNoGenericServices. + String outerName = "google.protobuf.no_generic_services_test." + + "UnittestNoGenericServices"; + Class<?> outerClass = Class.forName(outerName); + + Set<String> innerClassNames = new HashSet<String>(); + for (Class<?> innerClass : outerClass.getClasses()) { + String fullName = innerClass.getName(); + // Figure out the unqualified name of the inner class. + // Note: Surprisingly, the full name of an inner class will be separated + // from the outer class name by a '$' rather than a '.'. This is not + // mentioned in the documentation for java.lang.Class. I don't want to + // make assumptions, so I'm just going to accept any character as the + // separator. + assertTrue(fullName.startsWith(outerName)); + innerClassNames.add(fullName.substring(outerName.length() + 1)); + } + + // No service class should have been generated. + assertTrue(innerClassNames.contains("TestMessage")); + assertTrue(innerClassNames.contains("TestEnum")); + assertFalse(innerClassNames.contains("TestService")); + + // But descriptors are there. + FileDescriptor file = UnittestNoGenericServices.getDescriptor(); + assertEquals(1, file.getServices().size()); + assertEquals("TestService", file.getServices().get(0).getName()); + assertEquals(1, file.getServices().get(0).getMethods().size()); + assertEquals("Foo", + file.getServices().get(0).getMethods().get(0).getName()); + } + // ================================================================= /** diff --git a/java/src/test/java/com/google/protobuf/TestUtil.java b/java/src/test/java/com/google/protobuf/TestUtil.java index 805c42a..2b8b2af 100644 --- a/java/src/test/java/com/google/protobuf/TestUtil.java +++ b/java/src/test/java/com/google/protobuf/TestUtil.java @@ -217,6 +217,7 @@ import protobuf_unittest.UnittestProto.TestAllExtensions; import protobuf_unittest.UnittestProto.TestAllTypes; 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.ImportMessage; @@ -289,6 +290,12 @@ class TestUtil { return builder.build(); } + public static TestUnpackedTypes getUnpackedSet() { + TestUnpackedTypes.Builder builder = TestUnpackedTypes.newBuilder(); + setUnpackedFields(builder); + return builder.build(); + } + public static TestPackedExtensions getPackedExtensionsSet() { TestPackedExtensions.Builder builder = TestPackedExtensions.newBuilder(); setPackedExtensions(builder); @@ -956,6 +963,42 @@ class TestUtil { } /** + * Set every field of {@code message} to a unique value. Must correspond with + * the values applied by {@code setPackedFields}. + */ + public static void setUnpackedFields(TestUnpackedTypes.Builder message) { + message.addUnpackedInt32 (601); + message.addUnpackedInt64 (602); + message.addUnpackedUint32 (603); + message.addUnpackedUint64 (604); + message.addUnpackedSint32 (605); + message.addUnpackedSint64 (606); + message.addUnpackedFixed32 (607); + message.addUnpackedFixed64 (608); + message.addUnpackedSfixed32(609); + message.addUnpackedSfixed64(610); + message.addUnpackedFloat (611); + message.addUnpackedDouble (612); + message.addUnpackedBool (true); + message.addUnpackedEnum (ForeignEnum.FOREIGN_BAR); + // Add a second one of each field. + message.addUnpackedInt32 (701); + message.addUnpackedInt64 (702); + message.addUnpackedUint32 (703); + message.addUnpackedUint64 (704); + message.addUnpackedSint32 (705); + message.addUnpackedSint64 (706); + message.addUnpackedFixed32 (707); + message.addUnpackedFixed64 (708); + message.addUnpackedSfixed32(709); + message.addUnpackedSfixed64(710); + message.addUnpackedFloat (711); + message.addUnpackedDouble (712); + message.addUnpackedBool (false); + message.addUnpackedEnum (ForeignEnum.FOREIGN_BAZ); + } + + /** * Assert (using {@code junit.framework.Assert}} that all fields of * {@code message} are set to the values assigned by {@code setPackedFields}. */ @@ -1004,6 +1047,55 @@ class TestUtil { Assert.assertEquals(ForeignEnum.FOREIGN_BAZ, message.getPackedEnum(1)); } + /** + * Assert (using {@code junit.framework.Assert}} that all fields of + * {@code message} are set to the values assigned by {@code setUnpackedFields}. + */ + public static void assertUnpackedFieldsSet(TestUnpackedTypes message) { + Assert.assertEquals(2, message.getUnpackedInt32Count ()); + Assert.assertEquals(2, message.getUnpackedInt64Count ()); + Assert.assertEquals(2, message.getUnpackedUint32Count ()); + Assert.assertEquals(2, message.getUnpackedUint64Count ()); + Assert.assertEquals(2, message.getUnpackedSint32Count ()); + Assert.assertEquals(2, message.getUnpackedSint64Count ()); + Assert.assertEquals(2, message.getUnpackedFixed32Count ()); + Assert.assertEquals(2, message.getUnpackedFixed64Count ()); + Assert.assertEquals(2, message.getUnpackedSfixed32Count()); + Assert.assertEquals(2, message.getUnpackedSfixed64Count()); + Assert.assertEquals(2, message.getUnpackedFloatCount ()); + Assert.assertEquals(2, message.getUnpackedDoubleCount ()); + Assert.assertEquals(2, message.getUnpackedBoolCount ()); + Assert.assertEquals(2, message.getUnpackedEnumCount ()); + Assert.assertEquals(601 , message.getUnpackedInt32 (0)); + Assert.assertEquals(602 , message.getUnpackedInt64 (0)); + Assert.assertEquals(603 , message.getUnpackedUint32 (0)); + Assert.assertEquals(604 , message.getUnpackedUint64 (0)); + Assert.assertEquals(605 , message.getUnpackedSint32 (0)); + Assert.assertEquals(606 , message.getUnpackedSint64 (0)); + Assert.assertEquals(607 , message.getUnpackedFixed32 (0)); + Assert.assertEquals(608 , message.getUnpackedFixed64 (0)); + Assert.assertEquals(609 , message.getUnpackedSfixed32(0)); + Assert.assertEquals(610 , message.getUnpackedSfixed64(0)); + Assert.assertEquals(611 , message.getUnpackedFloat (0), 0.0); + Assert.assertEquals(612 , message.getUnpackedDouble (0), 0.0); + Assert.assertEquals(true , message.getUnpackedBool (0)); + Assert.assertEquals(ForeignEnum.FOREIGN_BAR, message.getUnpackedEnum(0)); + Assert.assertEquals(701 , message.getUnpackedInt32 (1)); + Assert.assertEquals(702 , message.getUnpackedInt64 (1)); + Assert.assertEquals(703 , message.getUnpackedUint32 (1)); + Assert.assertEquals(704 , message.getUnpackedUint64 (1)); + Assert.assertEquals(705 , message.getUnpackedSint32 (1)); + Assert.assertEquals(706 , message.getUnpackedSint64 (1)); + Assert.assertEquals(707 , message.getUnpackedFixed32 (1)); + Assert.assertEquals(708 , message.getUnpackedFixed64 (1)); + Assert.assertEquals(709 , message.getUnpackedSfixed32(1)); + Assert.assertEquals(710 , message.getUnpackedSfixed64(1)); + Assert.assertEquals(711 , message.getUnpackedFloat (1), 0.0); + Assert.assertEquals(712 , message.getUnpackedDouble (1), 0.0); + Assert.assertEquals(false, message.getUnpackedBool (1)); + Assert.assertEquals(ForeignEnum.FOREIGN_BAZ, message.getUnpackedEnum(1)); + } + // =================================================================== // Like above, but for extensions @@ -1572,6 +1664,34 @@ class TestUtil { Assert.assertEquals(0, message.getExtensionCount(repeatedStringPieceExtension)); Assert.assertEquals(0, message.getExtensionCount(repeatedCordExtension)); + // Repeated fields are empty via getExtension().size(). + Assert.assertEquals(0, message.getExtension(repeatedInt32Extension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedInt64Extension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedUint32Extension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedUint64Extension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedSint32Extension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedSint64Extension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedFixed32Extension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedFixed64Extension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedSfixed32Extension).size()); + Assert.assertEquals(0, message.getExtension(repeatedSfixed64Extension).size()); + Assert.assertEquals(0, message.getExtension(repeatedFloatExtension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedDoubleExtension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedBoolExtension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedStringExtension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedBytesExtension ).size()); + + Assert.assertEquals(0, message.getExtension(repeatedGroupExtension ).size()); + 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(repeatedNestedEnumExtension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedForeignEnumExtension ).size()); + Assert.assertEquals(0, message.getExtension(repeatedImportEnumExtension ).size()); + + Assert.assertEquals(0, message.getExtension(repeatedStringPieceExtension).size()); + Assert.assertEquals(0, message.getExtension(repeatedCordExtension).size()); + // hasBlah() should also be false for all default fields. Assert.assertFalse(message.hasExtension(defaultInt32Extension )); Assert.assertFalse(message.hasExtension(defaultInt64Extension )); diff --git a/java/src/test/java/com/google/protobuf/TextFormatTest.java b/java/src/test/java/com/google/protobuf/TextFormatTest.java index 1d73165..60bd800 100644 --- a/java/src/test/java/com/google/protobuf/TextFormatTest.java +++ b/java/src/test/java/com/google/protobuf/TextFormatTest.java @@ -68,7 +68,7 @@ public class TextFormatTest extends TestCase { private static String allExtensionsSetText = TestUtil.readTextFromFile( "text_format_unittest_extensions_data.txt"); - private String exoticText = + private static String exoticText = "repeated_int32: -1\n" + "repeated_int32: -2147483648\n" + "repeated_int64: -1\n" + @@ -80,7 +80,13 @@ public class TextFormatTest extends TestCase { "repeated_double: 123.0\n" + "repeated_double: 123.5\n" + "repeated_double: 0.125\n" + + "repeated_double: .125\n" + + "repeated_double: -.125\n" + "repeated_double: 1.23E17\n" + + "repeated_double: 1.23E+17\n" + + "repeated_double: -1.23e-17\n" + + "repeated_double: .23e+17\n" + + "repeated_double: -.23E17\n" + "repeated_double: 1.235E22\n" + "repeated_double: 1.235E-18\n" + "repeated_double: 123.456789\n" + @@ -91,6 +97,10 @@ public class TextFormatTest extends TestCase { "\\341\\210\\264\"\n" + "repeated_bytes: \"\\000\\001\\a\\b\\f\\n\\r\\t\\v\\\\\\'\\\"\\376\"\n"; + private static String canonicalExoticText = + exoticText.replace(": .", ": 0.").replace(": -.", ": -0.") // short-form double + .replace("23e", "23E").replace("E+", "E").replace("0.23E17", "2.3E16"); + private String messageSetText = "[protobuf_unittest.TestMessageSetExtension1] {\n" + " i: 123\n" + @@ -186,12 +196,12 @@ public class TextFormatTest extends TestCase { final FieldDescriptor optionalField = TestAllTypes.getDescriptor().findFieldByName("optional_nested_message"); final Object value = NestedMessage.newBuilder().setBb(42).build(); - + assertEquals( "optional_nested_message {\n bb: 42\n}\n", TextFormat.printFieldToString(optionalField, value)); } - + /** * Helper to construct a ByteString from a String containing only 8-bit * characters. The characters are converted directly to bytes, *not* @@ -231,7 +241,13 @@ public class TextFormatTest extends TestCase { .addRepeatedDouble(123) .addRepeatedDouble(123.5) .addRepeatedDouble(0.125) + .addRepeatedDouble(.125) + .addRepeatedDouble(-.125) + .addRepeatedDouble(123e15) .addRepeatedDouble(123e15) + .addRepeatedDouble(-1.23e-17) + .addRepeatedDouble(.23e17) + .addRepeatedDouble(-23e15) .addRepeatedDouble(123.5e20) .addRepeatedDouble(123.5e-20) .addRepeatedDouble(123.456789) @@ -244,7 +260,7 @@ public class TextFormatTest extends TestCase { .addRepeatedBytes(bytes("\0\001\007\b\f\n\r\t\013\\\'\"\u00fe")) .build(); - assertEquals(exoticText, message.toString()); + assertEquals(canonicalExoticText, message.toString()); } public void testPrintMessageSet() throws Exception { @@ -319,7 +335,7 @@ public class TextFormatTest extends TestCase { // Too lazy to check things individually. Don't try to debug this // if testPrintExotic() is failing. - assertEquals(exoticText, builder.build().toString()); + assertEquals(canonicalExoticText, builder.build().toString()); } public void testParseMessageSet() throws Exception { @@ -633,4 +649,10 @@ public class TextFormatTest extends TestCase { TextFormat.merge("optional_string: \"" + longText + "\"", builder); assertEquals(longText, builder.getOptionalString()); } + + public void testParseAdjacentStringLiterals() throws Exception { + TestAllTypes.Builder builder = TestAllTypes.newBuilder(); + TextFormat.merge("optional_string: \"foo\" 'corge' \"grault\"", builder); + assertEquals("foocorgegrault", builder.getOptionalString()); + } } diff --git a/java/src/test/java/com/google/protobuf/WireFormatTest.java b/java/src/test/java/com/google/protobuf/WireFormatTest.java index bd1c6db..5ea1dd6 100644 --- a/java/src/test/java/com/google/protobuf/WireFormatTest.java +++ b/java/src/test/java/com/google/protobuf/WireFormatTest.java @@ -102,6 +102,28 @@ public class WireFormatTest extends TestCase { assertEquals(rawBytes, rawBytes2); } + public void testSerializationPackedWithoutGetSerializedSize() + throws Exception { + // Write directly to an OutputStream, without invoking getSerializedSize() + // This used to be a bug where the size of a packed field was incorrect, + // since getSerializedSize() was never invoked. + TestPackedTypes message = TestUtil.getPackedSet(); + + // Directly construct a CodedOutputStream around the actual OutputStream, + // in case writeTo(OutputStream output) invokes getSerializedSize(); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + CodedOutputStream codedOutput = CodedOutputStream.newInstance(outputStream); + + message.writeTo(codedOutput); + + codedOutput.flush(); + + TestPackedTypes message2 = TestPackedTypes.parseFrom( + outputStream.toByteArray()); + + TestUtil.assertPackedFieldsSet(message2); + } + public void testSerializeExtensionsLite() throws Exception { // TestAllTypes and TestAllExtensions should have compatible wire formats, // so if we serialize a TestAllExtensions then parse it as TestAllTypes @@ -213,6 +235,9 @@ public class WireFormatTest extends TestCase { TestUtil.assertPackedFieldsSet(TestPackedTypes.parseDelimitedFrom(input)); assertEquals(34, input.read()); assertEquals(-1, input.read()); + + // We're at EOF, so parsing again should return null. + assertTrue(TestAllTypes.parseDelimitedFrom(input) == null); } private void assertFieldsInOrder(ByteString data) throws Exception { |