164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// Protocol Buffers - Google's data interchange format 264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// Copyright 2013 Google Inc. All rights reserved. 364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// http://code.google.com/p/protobuf/ 464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// 564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// Redistribution and use in source and binary forms, with or without 664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// modification, are permitted provided that the following conditions are 764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// met: 864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// 964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// * Redistributions of source code must retain the above copyright 1064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// notice, this list of conditions and the following disclaimer. 1164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// * Redistributions in binary form must reproduce the above 1264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// copyright notice, this list of conditions and the following disclaimer 1364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// in the documentation and/or other materials provided with the 1464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// distribution. 1564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// * Neither the name of Google Inc. nor the names of its 1664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// contributors may be used to endorse or promote products derived from 1764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// this software without specific prior written permission. 1864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// 1964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 3164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcipackage com.google.protobuf; 3264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 330e055f079f53b07de3705838a7b4742ce56839f8Brian Duffimport com.google.protobuf.nano.CodedInputByteBufferNano; 34ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Mungerimport com.google.protobuf.nano.CodedOutputByteBufferNano; 3526266cd4660ffe1f3d6015b715713ee654c5b936Max Caiimport com.google.protobuf.nano.EnumClassNanoMultiple; 3626266cd4660ffe1f3d6015b715713ee654c5b936Max Caiimport com.google.protobuf.nano.EnumClassNanos; 37d888895a3b5cf764856d3a94ed526bf9994c1800Max Caiimport com.google.protobuf.nano.EnumValidity; 38d888895a3b5cf764856d3a94ed526bf9994c1800Max Caiimport com.google.protobuf.nano.EnumValidityAccessors; 3926266cd4660ffe1f3d6015b715713ee654c5b936Max Caiimport com.google.protobuf.nano.FileScopeEnumMultiple; 40624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.nano.FileScopeEnumRefNano; 4164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciimport com.google.protobuf.nano.InternalNano; 42cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveiraimport com.google.protobuf.nano.InvalidProtocolBufferNanoException; 4364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciimport com.google.protobuf.nano.MessageNano; 44624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.nano.MessageScopeEnumRefNano; 458170787391efcb6cc6a8babc1cce35d5b1aff420Max Caiimport com.google.protobuf.nano.MultipleImportingNonMultipleNano1; 468170787391efcb6cc6a8babc1cce35d5b1aff420Max Caiimport com.google.protobuf.nano.MultipleImportingNonMultipleNano2; 47624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.nano.MultipleNameClashNano; 48e74fe623e115237968a3de1143d7cdb4df710858Max Caiimport com.google.protobuf.nano.NanoAccessorsOuterClass.TestNanoAccessors; 4935d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazciimport com.google.protobuf.nano.NanoHasOuterClass.TestAllTypesNanoHas; 5064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciimport com.google.protobuf.nano.NanoOuterClass; 5164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciimport com.google.protobuf.nano.NanoOuterClass.TestAllTypesNano; 520b8579237336f221711a0aac42400eb31a58fed3Brian Duffimport com.google.protobuf.nano.NanoReferenceTypes; 535537d6fe4af105eb769bacc530e8d5d9e0b027cbBrian Duffimport com.google.protobuf.nano.NanoReferenceTypesCompat; 54fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Caiimport com.google.protobuf.nano.NanoRepeatedPackables; 55382ddccb550e1c822ef26a0e65988998f7446624Max Caiimport com.google.protobuf.nano.PackedExtensions; 56382ddccb550e1c822ef26a0e65988998f7446624Max Caiimport com.google.protobuf.nano.RepeatedExtensions; 57382ddccb550e1c822ef26a0e65988998f7446624Max Caiimport com.google.protobuf.nano.SingularExtensions; 58334a7d1117a576bc6010c14677fb6444639c1ddaMax Caiimport com.google.protobuf.nano.TestRepeatedMergeNano; 59624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.nano.UnittestMultipleNano; 60624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.nano.UnittestRecursiveNano.RecursiveMessageNano; 61624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.nano.UnittestSimpleNano.SimpleMessageNano; 62624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.nano.UnittestSingleNano.SingleMessageNano; 6311f883e185a2ea6fd6d0b19520e9f0f004e90e5cMax Caiimport com.google.protobuf.nano.testext.Extensions; 6411f883e185a2ea6fd6d0b19520e9f0f004e90e5cMax Caiimport com.google.protobuf.nano.testext.Extensions.AnotherMessage; 6511f883e185a2ea6fd6d0b19520e9f0f004e90e5cMax Caiimport com.google.protobuf.nano.testext.Extensions.MessageWithGroup; 6611f883e185a2ea6fd6d0b19520e9f0f004e90e5cMax Caiimport com.google.protobuf.nano.testimport.UnittestImportNano; 6764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 6864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciimport junit.framework.TestCase; 6964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 7014dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazciimport java.util.Arrays; 71ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duffimport java.util.HashMap; 720e055f079f53b07de3705838a7b4742ce56839f8Brian Duff 7364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/** 7464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * Test nano runtime. 7564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * 7664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * @author ulas@google.com Ulas Kirazci 7764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci */ 7864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcipublic class NanoTest extends TestCase { 79e74fe623e115237968a3de1143d7cdb4df710858Max Cai @Override 8064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void setUp() throws Exception { 8164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 8264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 8364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testSimpleMessageNano() throws Exception { 8464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci SimpleMessageNano msg = new SimpleMessageNano(); 8564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, msg.d); 8664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(null, msg.nestedMsg); 8764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(SimpleMessageNano.BAZ, msg.defaultNestedEnum); 8864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 8964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.d = 456; 9064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.d); 9164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 9264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci SimpleMessageNano.NestedMessage nestedMsg = new SimpleMessageNano.NestedMessage(); 9364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nestedMsg.bb = 2; 9464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, nestedMsg.bb); 9564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.nestedMsg = nestedMsg; 9664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.nestedMsg.bb); 9764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 9864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.defaultNestedEnum = SimpleMessageNano.BAR; 9964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(SimpleMessageNano.BAR, msg.defaultNestedEnum); 10064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 10164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 10264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 10364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 10464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 9); 10564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 10664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 10764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci SimpleMessageNano newMsg = SimpleMessageNano.parseFrom(result); 10864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.d); 10964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.nestedMsg.bb); 11064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(SimpleMessageNano.BAR, msg.defaultNestedEnum); 111c82101204dcde798f870d95e91f5483c3e57eb29Dave Hawkey 112c82101204dcde798f870d95e91f5483c3e57eb29Dave Hawkey msg.nestedMsg = null; 113c82101204dcde798f870d95e91f5483c3e57eb29Dave Hawkey assertTrue(msgSerializedSize != msg.getSerializedSize()); 114c82101204dcde798f870d95e91f5483c3e57eb29Dave Hawkey 115c82101204dcde798f870d95e91f5483c3e57eb29Dave Hawkey msg.clear(); 116c82101204dcde798f870d95e91f5483c3e57eb29Dave Hawkey assertEquals(0, msg.getSerializedSize()); 11764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 11864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 11964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testRecursiveMessageNano() throws Exception { 12064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci RecursiveMessageNano msg = new RecursiveMessageNano(); 12164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.repeatedRecursiveMessageNano.length == 0); 12264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 12364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci RecursiveMessageNano msg1 = new RecursiveMessageNano(); 12464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg1.id = 1; 12564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg1.id); 12664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci RecursiveMessageNano msg2 = new RecursiveMessageNano(); 12764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg2.id = 2; 12864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci RecursiveMessageNano msg3 = new RecursiveMessageNano(); 12964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg3.id = 3; 13064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 13164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci RecursiveMessageNano.NestedMessage nestedMsg = new RecursiveMessageNano.NestedMessage(); 13264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nestedMsg.a = msg1; 13364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, nestedMsg.a.id); 13464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 13564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.id = 0; 13664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.nestedMessage = nestedMsg; 13764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalRecursiveMessageNano = msg2; 13864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedRecursiveMessageNano = new RecursiveMessageNano[] { msg3 }; 13964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 14064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 14164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 14264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 14364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 16); 14464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 14564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 14664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci RecursiveMessageNano newMsg = RecursiveMessageNano.parseFrom(result); 14764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedRecursiveMessageNano.length); 14864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 14964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, newMsg.id); 15064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.nestedMessage.a.id); 15164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.optionalRecursiveMessageNano.id); 15264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(3, newMsg.repeatedRecursiveMessageNano[0].id); 15364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 15464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 155c82101204dcde798f870d95e91f5483c3e57eb29Dave Hawkey public void testMessageNoFields() { 156c82101204dcde798f870d95e91f5483c3e57eb29Dave Hawkey SingleMessageNano msg = new SingleMessageNano(); 157c82101204dcde798f870d95e91f5483c3e57eb29Dave Hawkey assertEquals(0, msg.getSerializedSize()); 158c82101204dcde798f870d95e91f5483c3e57eb29Dave Hawkey assertEquals(0, MessageNano.toByteArray(msg).length); 159c82101204dcde798f870d95e91f5483c3e57eb29Dave Hawkey } 160c82101204dcde798f870d95e91f5483c3e57eb29Dave Hawkey 16164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRequiredInt32() throws Exception { 16264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 16364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.id = 123; 16464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, msg.id); 16564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear().id = 456; 16664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.id); 16764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 16864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 16964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.id = 123; 17064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 17164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 17264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 17364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 3); 17464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 17564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 17664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 17764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.id); 17864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 17964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 18064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalInt32() throws Exception { 18164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 18264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalInt32 = 123; 18364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, msg.optionalInt32); 18464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 18564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalInt32 = 456; 18664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.optionalInt32); 18764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 18864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 18964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalInt32 = 123; 19064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 19164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 19264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 19364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 5); 19464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 19564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 19664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 19764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.optionalInt32); 19864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 19964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 20064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalInt64() throws Exception { 20164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 20264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalInt64 = 123; 20364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, msg.optionalInt64); 20464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 20564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalInt64 = 456; 20664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.optionalInt64); 20764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 20864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.optionalInt64); 20964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 21064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalInt64 = 123; 21164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 21264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 21364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 21464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 5); 21564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 21664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 21764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 21864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.optionalInt64); 21964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 22064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 22164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalUint32() throws Exception { 22264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 22364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalUint32 = 123; 22464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, msg.optionalUint32); 22564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 22664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalUint32 = 456; 22764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.optionalUint32); 22864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 22964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.optionalUint32); 23064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 23164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalUint32 = 123; 23264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 23364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 23464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 23564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 5); 23664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 23764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 23864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 23964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.optionalUint32); 24064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 24164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 24264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalUint64() throws Exception { 24364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 24464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalUint64 = 123; 24564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, msg.optionalUint64); 24664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 24764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalUint64 = 456; 24864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.optionalUint64); 24964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 25064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.optionalUint64); 25164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 25264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalUint64 = 123; 25364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 25464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 25564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 25664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 5); 25764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 25864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 25964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 26064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.optionalUint64); 26164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 26264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 26364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalSint32() throws Exception { 26464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 26564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalSint32 = 123; 26664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, msg.optionalSint32); 26764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 26864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalSint32 = 456; 26964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.optionalSint32); 27064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 27164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.optionalSint32); 27264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 27364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalSint32 = -123; 27464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 27564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 27664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 27764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 27864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 27964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 28064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 28164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(-123, newMsg.optionalSint32); 28264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 28364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 28464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalSint64() throws Exception { 28564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 28664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalSint64 = 123; 28764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, msg.optionalSint64); 28864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 28964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalSint64 = 456; 29064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.optionalSint64); 29164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 29264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.optionalSint64); 29364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 29464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalSint64 = -123; 29564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 29664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 29764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 29864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 29964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 30064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 30164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 30264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(-123, newMsg.optionalSint64); 30364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 30464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 30564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalFixed32() throws Exception { 30664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 30764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalFixed32 = 123; 30864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, msg.optionalFixed32); 30964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 31064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalFixed32 = 456; 31164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.optionalFixed32); 31264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 31364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.optionalFixed32); 31464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 31564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalFixed32 = 123; 31664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 31764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 31864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 31964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 8); 32064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 32164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 32264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 32364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.optionalFixed32); 32464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 32564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 32664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalFixed64() throws Exception { 32764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 32864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalFixed64 = 123; 32964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, msg.optionalFixed64); 33064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 33164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalFixed64 = 456; 33264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.optionalFixed64); 33364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 33464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.optionalFixed64); 33564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 33664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalFixed64 = 123; 33764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 33864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 33964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 34064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 12); 34164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 34264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 34364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 34464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.optionalFixed64); 34564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 34664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 34764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalSfixed32() throws Exception { 34864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 34964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalSfixed32 = 123; 35064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, msg.optionalSfixed32); 35164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 35264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalSfixed32 = 456; 35364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.optionalSfixed32); 35464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 35564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.optionalSfixed32); 35664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 35764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalSfixed32 = 123; 35864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 35964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 36064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 36164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 8); 36264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 36364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 36464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 36564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.optionalSfixed32); 36664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 36764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 36864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalSfixed64() throws Exception { 36964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 37064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalSfixed64 = 123; 37164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, msg.optionalSfixed64); 37264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 37364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalSfixed64 = 456; 37464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.optionalSfixed64); 37564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 37664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.optionalSfixed64); 37764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 37864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalSfixed64 = -123; 37964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 38064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 38164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 38264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 12); 38364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 38464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 38564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 38664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(-123, newMsg.optionalSfixed64); 38764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 38864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 38964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalFloat() throws Exception { 39064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 39164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalFloat = 123f; 39264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(123.0f == msg.optionalFloat); 39364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 39464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalFloat = 456.0f; 39564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(456.0f == msg.optionalFloat); 39664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 39764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(0.0f == msg.optionalFloat); 39864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 39964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalFloat = -123.456f; 40064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 40164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 40264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 40364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 8); 40464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 40564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 40664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 40764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(-123.456f == newMsg.optionalFloat); 40864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 40964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 41064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalDouble() throws Exception { 41164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 41264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalDouble = 123; 41364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(123.0 == msg.optionalDouble); 41464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 41564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalDouble = 456.0; 41664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(456.0 == msg.optionalDouble); 41764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 41864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(0.0 == msg.optionalDouble); 41964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 42064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalDouble = -123.456; 42164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 42264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 42364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 42464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 12); 42564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 42664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 42764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 42864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(-123.456 == newMsg.optionalDouble); 42964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 43064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 43164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalBool() throws Exception { 43264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 43364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalBool = true; 43464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalBool); 43564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 43664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalBool = true; 43764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalBool); 43864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 43964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalBool); 44064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 44164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalBool = true; 44264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 44364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 44464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 44564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 5); 44664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 44764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 44864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 44964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.optionalBool); 45064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 45164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 45264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalString() throws Exception { 45364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 45464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalString = "hello"; 45564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("hello", msg.optionalString); 45664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 45764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalString.isEmpty()); 45864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 45964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalString = "hello2"; 46064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("hello2", msg.optionalString); 46164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 46264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalString.isEmpty()); 46364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 46464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalString = "bye"; 46564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 46664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 46764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 46864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 8); 46964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 47064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 47164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 47264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.optionalString != null); 47364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("bye", newMsg.optionalString); 47464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 47564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 47664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalBytes() throws Exception { 47764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 47864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalBytes.length > 0); 47964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalBytes = InternalNano.copyFromUtf8("hello"); 48064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalBytes.length > 0); 48164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("hello", new String(msg.optionalBytes, "UTF-8")); 48264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 48364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalBytes.length > 0); 48464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 48564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalBytes = InternalNano.copyFromUtf8("hello"); 48664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalBytes.length > 0); 48764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 48864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalBytes.length > 0); 48964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 49064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalBytes = InternalNano.copyFromUtf8("bye"); 49164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 49264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 49364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 49464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 8); 49564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 49664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 49764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 49864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.optionalBytes.length > 0); 49964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("bye", new String(newMsg.optionalBytes, "UTF-8")); 50064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 50164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 50264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalGroup() throws Exception { 50364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 50464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.OptionalGroup grp = new TestAllTypesNano.OptionalGroup(); 50564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci grp.a = 1; 50664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalGroup != null); 50764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalGroup = grp; 50864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalGroup != null); 50964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.optionalGroup.a); 51064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 51164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalGroup != null); 51264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 51364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalGroup = new TestAllTypesNano.OptionalGroup(); 51464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalGroup.a = 2; 51564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalGroup != null); 51664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 51764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalGroup != null); 51864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 51964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalGroup = grp; 52064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 52164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 52264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 52364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 10); 52464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 52564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 52664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 52764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.optionalGroup != null); 52864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.optionalGroup.a); 52964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 53064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 53137ac79028de3d1cd8c215ba54fdf31e4eeca4b2cNicholas Seckar public void testNanoOptionalGroupWithUnknownFieldsEnabled() throws Exception { 53237ac79028de3d1cd8c215ba54fdf31e4eeca4b2cNicholas Seckar MessageWithGroup msg = new MessageWithGroup(); 53337ac79028de3d1cd8c215ba54fdf31e4eeca4b2cNicholas Seckar MessageWithGroup.Group grp = new MessageWithGroup.Group(); 53437ac79028de3d1cd8c215ba54fdf31e4eeca4b2cNicholas Seckar grp.a = 1; 53537ac79028de3d1cd8c215ba54fdf31e4eeca4b2cNicholas Seckar msg.group = grp; 53637ac79028de3d1cd8c215ba54fdf31e4eeca4b2cNicholas Seckar byte [] serialized = MessageNano.toByteArray(msg); 53737ac79028de3d1cd8c215ba54fdf31e4eeca4b2cNicholas Seckar 53837ac79028de3d1cd8c215ba54fdf31e4eeca4b2cNicholas Seckar MessageWithGroup parsed = MessageWithGroup.parseFrom(serialized); 539382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(1, parsed.group.a); 54037ac79028de3d1cd8c215ba54fdf31e4eeca4b2cNicholas Seckar 54137ac79028de3d1cd8c215ba54fdf31e4eeca4b2cNicholas Seckar byte [] serialized2 = MessageNano.toByteArray(parsed); 542382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(serialized.length, serialized2.length); 54337ac79028de3d1cd8c215ba54fdf31e4eeca4b2cNicholas Seckar MessageWithGroup parsed2 = MessageWithGroup.parseFrom(serialized2); 544382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(1, parsed2.group.a); 54537ac79028de3d1cd8c215ba54fdf31e4eeca4b2cNicholas Seckar } 54637ac79028de3d1cd8c215ba54fdf31e4eeca4b2cNicholas Seckar 54764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalNestedMessage() throws Exception { 54864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 54964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.NestedMessage nestedMsg = new TestAllTypesNano.NestedMessage(); 55064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nestedMsg.bb = 1; 55164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalNestedMessage != null); 55264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalNestedMessage = nestedMsg; 55364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalNestedMessage != null); 55464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.optionalNestedMessage.bb); 55564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 55664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalNestedMessage != null); 55764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 55864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalNestedMessage = new TestAllTypesNano.NestedMessage(); 55964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalNestedMessage.bb = 2; 56064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalNestedMessage != null); 56164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 56264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalNestedMessage != null); 56364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 56464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalNestedMessage = nestedMsg; 56564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 56664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 56764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 56864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 8); 56964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 57064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 57164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 57264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.optionalNestedMessage != null); 57364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.optionalNestedMessage.bb); 57464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 57564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 57664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalForeignMessage() throws Exception { 57764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 57864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci NanoOuterClass.ForeignMessageNano nestedMsg = new NanoOuterClass.ForeignMessageNano(); 57964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nestedMsg.c = 1; 58064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalForeignMessage != null); 58164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalForeignMessage = nestedMsg; 58264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalForeignMessage != null); 58364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.optionalForeignMessage.c); 58464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 58564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalForeignMessage != null); 58664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 58764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalForeignMessage = new NanoOuterClass.ForeignMessageNano(); 58864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalForeignMessage.c = 2; 58964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalForeignMessage != null); 59064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 59164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalForeignMessage != null); 59264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 59364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalForeignMessage = nestedMsg; 59464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 59564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 59664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 59764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 8); 59864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 59964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 60064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 60164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.optionalForeignMessage != null); 60264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.optionalForeignMessage.c); 60364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 60464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 60564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalImportMessage() throws Exception { 60664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 60764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci UnittestImportNano.ImportMessageNano nestedMsg = new UnittestImportNano.ImportMessageNano(); 60864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nestedMsg.d = 1; 60964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalImportMessage != null); 61064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalImportMessage = nestedMsg; 61164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalImportMessage != null); 61264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.optionalImportMessage.d); 61364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 61464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalImportMessage != null); 61564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 61664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalImportMessage = new UnittestImportNano.ImportMessageNano(); 61764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalImportMessage.d = 2; 61864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalImportMessage != null); 61964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 62064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.optionalImportMessage != null); 62164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 62264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalImportMessage = nestedMsg; 62364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 62464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 62564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 62664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 8); 62764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 62864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 62964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 63064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.optionalImportMessage != null); 63164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.optionalImportMessage.d); 63264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 63364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 63464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalNestedEnum() throws Exception { 63564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 63664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalNestedEnum = TestAllTypesNano.BAR; 63764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.BAR, msg.optionalNestedEnum); 63864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 63964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalNestedEnum = TestAllTypesNano.BAZ; 64064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.BAZ, msg.optionalNestedEnum); 64164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 64264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.FOO, msg.optionalNestedEnum); 64364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 64464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalNestedEnum = TestAllTypesNano.BAR; 64564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 64664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 64764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 64864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 64964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 65064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 65164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 65264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.BAR, newMsg.optionalNestedEnum); 65364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 65464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 65564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalForeignEnum() throws Exception { 65664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 65764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalForeignEnum = NanoOuterClass.FOREIGN_NANO_BAR; 65864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(NanoOuterClass.FOREIGN_NANO_BAR, msg.optionalForeignEnum); 65964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 66064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalForeignEnum = NanoOuterClass.FOREIGN_NANO_BAZ; 66164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(NanoOuterClass.FOREIGN_NANO_BAZ, msg.optionalForeignEnum); 66264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 66364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(NanoOuterClass.FOREIGN_NANO_FOO, msg.optionalForeignEnum); 66464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 66564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalForeignEnum = NanoOuterClass.FOREIGN_NANO_BAR; 66664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 66764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 66864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 66964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 67064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 67164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 67264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 67364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(NanoOuterClass.FOREIGN_NANO_BAR, newMsg.optionalForeignEnum); 67464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 67564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 67664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalImportEnum() throws Exception { 67764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 67864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalImportEnum = UnittestImportNano.IMPORT_NANO_BAR; 67964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(UnittestImportNano.IMPORT_NANO_BAR, msg.optionalImportEnum); 68064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 68164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalImportEnum = UnittestImportNano.IMPORT_NANO_BAZ; 68264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(UnittestImportNano.IMPORT_NANO_BAZ, msg.optionalImportEnum); 68364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 68464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(UnittestImportNano.IMPORT_NANO_FOO, msg.optionalImportEnum); 68564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 68664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalImportEnum = UnittestImportNano.IMPORT_NANO_BAR; 68764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 68864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 68964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 69064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 69164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 69264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 69364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 69464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(UnittestImportNano.IMPORT_NANO_BAR, newMsg.optionalImportEnum); 69564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 69664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 69764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalStringPiece() throws Exception { 69864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 69964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalStringPiece = "hello"; 70064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("hello", msg.optionalStringPiece); 70164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 70264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalStringPiece.isEmpty()); 70364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 70464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalStringPiece = "hello2"; 70564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("hello2", msg.optionalStringPiece); 70664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 70764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalStringPiece.isEmpty()); 70864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 70964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalStringPiece = "bye"; 71064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 71164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 71264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 71364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 9); 71464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 71564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 71664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 71764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.optionalStringPiece != null); 71864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("bye", newMsg.optionalStringPiece); 71964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 72064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 72164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoOptionalCord() throws Exception { 72264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 72364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalCord = "hello"; 72464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("hello", msg.optionalCord); 72564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 72664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalCord.isEmpty()); 72764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 72864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .optionalCord = "hello2"; 72964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("hello2", msg.optionalCord); 73064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 73164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.optionalCord.isEmpty()); 73264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 73364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.optionalCord = "bye"; 73464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 73564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 73664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 73764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 9); 73864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 73964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 74064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 74164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.optionalCord != null); 74264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("bye", newMsg.optionalCord); 74364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 74464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 74564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedInt32() throws Exception { 74664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 74764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedInt32.length); 74864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedInt32 = new int[] { 123, 789, 456 }; 74964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, msg.repeatedInt32[1]); 75064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedInt32[2]); 75164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 75264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedInt32.length); 75364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 75464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedInt32 = new int[] { 456 }; 75564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedInt32.length); 75664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedInt32[0]); 75764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 75864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedInt32.length); 75964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 76064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 76164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 76264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedInt32 = new int[] { 123 }; 76364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedInt32.length); 76464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 76564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 76664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 76764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 76864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 76964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 77064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedInt32.length); 77164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedInt32[0]); 77264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 77364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 77464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 77564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedInt32 = new int[] { 123, 456 }; 77664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedInt32.length); 77764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 77864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 77964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 78064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 10); 78164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 78264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 78364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 78464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedInt32.length); 78564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedInt32[0]); 78664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.repeatedInt32[1]); 78764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 78864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 78964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedInt64() throws Exception { 79064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 79164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedInt64.length); 79264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedInt64 = new long[] { 123, 789, 456 }; 79364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, msg.repeatedInt64[1]); 79464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedInt64[2]); 79564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 79664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedInt64.length); 79764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 79864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedInt64 = new long[] { 456 }; 79964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedInt64.length); 80064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedInt64[0]); 80164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 80264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedInt64.length); 80364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 80464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 80564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 80664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedInt64 = new long[] { 123 }; 80764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedInt64.length); 80864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 80964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 81064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 81164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 81264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 81364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 81464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedInt64.length); 81564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedInt64[0]); 81664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 81764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 81864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 81964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedInt64 = new long[] { 123, 456 }; 82064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedInt64.length); 82164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 82264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 82364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 82464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 10); 82564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 82664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 82764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 82864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedInt64.length); 82964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedInt64[0]); 83064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.repeatedInt64[1]); 83164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 83264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 83364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedUint32() throws Exception { 83464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 83564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedUint32.length); 83664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedUint32 = new int[] { 123, 789, 456 }; 83764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, msg.repeatedUint32[1]); 83864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedUint32[2]); 83964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 84064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedUint32.length); 84164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 84264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedUint32 = new int[] { 456 }; 84364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedUint32.length); 84464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedUint32[0]); 84564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 84664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedUint32.length); 84764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 84864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 84964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 85064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedUint32 = new int[] { 123 }; 85164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedUint32.length); 85264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 85364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 85464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 85564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 85664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 85764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 85864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedUint32.length); 85964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedUint32[0]); 86064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 86164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 86264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 86364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedUint32 = new int[] { 123, 456 }; 86464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedUint32.length); 86564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 86664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 86764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 86864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 10); 86964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 87064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 87164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 87264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedUint32.length); 87364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedUint32[0]); 87464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.repeatedUint32[1]); 87564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 87664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 87764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedUint64() throws Exception { 87864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 87964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedUint64.length); 88064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedUint64 = new long[] { 123, 789, 456 }; 88164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, msg.repeatedUint64[1]); 88264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedUint64[2]); 88364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 88464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedUint64.length); 88564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 88664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedUint64 = new long[] { 456 }; 88764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedUint64.length); 88864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedUint64[0]); 88964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 89064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedUint64.length); 89164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 89264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 89364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 89464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedUint64 = new long[] { 123 }; 89564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedUint64.length); 89664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 89764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 89864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 89964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 90064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 90164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 90264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedUint64.length); 90364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedUint64[0]); 90464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 90564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 90664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 90764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedUint64 = new long[] { 123, 456 }; 90864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedUint64.length); 90964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 91064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 91164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 91264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 10); 91364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 91464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 91564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 91664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedUint64.length); 91764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedUint64[0]); 91864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.repeatedUint64[1]); 91964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 92064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 92164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedSint32() throws Exception { 92264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 92364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedSint32.length); 92464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedSint32 = new int[] { 123, 789, 456 }; 92564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, msg.repeatedSint32[1]); 92664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedSint32[2]); 92764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 92864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedSint32.length); 92964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 93064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedSint32 = new int[] { 456 }; 93164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedSint32.length); 93264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedSint32[0]); 93364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 93464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedSint32.length); 93564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 93664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 93764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 93864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedSint32 = new int[] { 123 }; 93964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedSint32.length); 94064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 94164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 94264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 94364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 7); 94464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 94564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 94664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedSint32.length); 94764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedSint32[0]); 94864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 94964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 95064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 95164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedSint32 = new int[] { 123, 456 }; 95264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedSint32.length); 95364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 95464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 95564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 95664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 11); 95764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 95864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 95964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 96064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedSint32.length); 96164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedSint32[0]); 96264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.repeatedSint32[1]); 96364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 96464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 96564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedSint64() throws Exception { 96664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 96764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedSint64.length); 96864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedSint64 = new long[] { 123, 789, 456 }; 96964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, msg.repeatedSint64[1]); 97064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedSint64[2]); 97164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 97264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedSint64.length); 97364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 97464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedSint64 = new long[] { 456 }; 97564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedSint64.length); 97664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedSint64[0]); 97764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 97864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedSint64.length); 97964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 98064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 98164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 98264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedSint64 = new long[] { 123 }; 98364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedSint64.length); 98464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 98564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 98664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 98764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 7); 98864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 98964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 99064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedSint64.length); 99164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedSint64[0]); 99264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 99364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 99464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 99564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedSint64 = new long[] { 123, 456 }; 99664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedSint64.length); 99764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 99864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 99964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 100064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 11); 100164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 100264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 100364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 100464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedSint64.length); 100564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedSint64[0]); 100664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.repeatedSint64[1]); 100764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 100864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 100964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedFixed32() throws Exception { 101064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 101164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedFixed32.length); 101264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedFixed32 = new int[] { 123, 789, 456 }; 101364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, msg.repeatedFixed32[1]); 101464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedFixed32[2]); 101564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 101664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedFixed32.length); 101764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 101864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedFixed32 = new int[] { 456 }; 101964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedFixed32.length); 102064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedFixed32[0]); 102164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 102264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedFixed32.length); 102364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 102464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 102564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 102664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedFixed32 = new int[] { 123 }; 102764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedFixed32.length); 102864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 102964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 103064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 103164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 9); 103264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 103364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 103464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedFixed32.length); 103564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedFixed32[0]); 103664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 103764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 103864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 103964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedFixed32 = new int[] { 123, 456 }; 104064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedFixed32.length); 104164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 104264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 104364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 104464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 15); 104564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 104664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 104764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 104864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedFixed32.length); 104964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedFixed32[0]); 105064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.repeatedFixed32[1]); 105164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 105264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 105364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedFixed64() throws Exception { 105464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 105564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedFixed64.length); 105664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedFixed64 = new long[] { 123, 789, 456 }; 105764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, msg.repeatedFixed64[1]); 105864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedFixed64[2]); 105964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 106064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedFixed64.length); 106164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 106264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedFixed64 = new long[] { 456 }; 106364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedFixed64.length); 106464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedFixed64[0]); 106564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 106664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedFixed64.length); 106764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 106864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 106964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 107064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedFixed64 = new long[] { 123 }; 107164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedFixed64.length); 107264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 107364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 107464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 107564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 13); 107664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 107764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 107864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedFixed64.length); 107964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedFixed64[0]); 108064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 108164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 108264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 108364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedFixed64 = new long[] { 123, 456 }; 108464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedFixed64.length); 108564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 108664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 108764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 108864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 23); 108964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 109064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 109164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 109264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedFixed64.length); 109364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedFixed64[0]); 109464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.repeatedFixed64[1]); 109564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 109664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 109764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedSfixed32() throws Exception { 109864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 109964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedSfixed32.length); 110064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedSfixed32 = new int[] { 123, 789, 456 }; 110164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, msg.repeatedSfixed32[1]); 110264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedSfixed32[2]); 110364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 110464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedSfixed32.length); 110564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 110664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedSfixed32 = new int[] { 456 }; 110764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedSfixed32.length); 110864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedSfixed32[0]); 110964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 111064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedSfixed32.length); 111164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 111264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 111364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 111464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedSfixed32 = new int[] { 123 }; 111564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedSfixed32.length); 111664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 111764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 111864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 111964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 9); 112064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 112164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 112264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedSfixed32.length); 112364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedSfixed32[0]); 112464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 112564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 112664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 112764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedSfixed32 = new int[] { 123, 456 }; 112864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedSfixed32.length); 112964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 113064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 113164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 113264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 15); 113364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 113464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 113564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 113664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedSfixed32.length); 113764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedSfixed32[0]); 113864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.repeatedSfixed32[1]); 113964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 114064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 114164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedSfixed64() throws Exception { 114264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 114364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedSfixed64.length); 114464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedSfixed64 = new long[] { 123, 789, 456 }; 114564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, msg.repeatedSfixed64[1]); 114664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedSfixed64[2]); 114764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 114864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedSfixed64.length); 114964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 115064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedSfixed64 = new long[] { 456 }; 115164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedSfixed64.length); 115264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedSfixed64[0]); 115364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 115464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedSfixed64.length); 115564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 115664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 115764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 115864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedSfixed64 = new long[] { 123 }; 115964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedSfixed64.length); 116064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 116164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 116264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 116364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 13); 116464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 116564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 116664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedSfixed64.length); 116764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedSfixed64[0]); 116864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 116964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 117064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 117164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedSfixed64 = new long[] { 123, 456 }; 117264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedSfixed64.length); 117364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 117464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 117564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 117664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 23); 117764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 117864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 117964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 118064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedSfixed64.length); 118164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedSfixed64[0]); 118264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.repeatedSfixed64[1]); 118364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 118464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 118564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedFloat() throws Exception { 118664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 118764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedFloat.length); 118864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedFloat = new float[] { 123f, 789f, 456f }; 118964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789f, msg.repeatedFloat[1]); 119064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456f, msg.repeatedFloat[2]); 119164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 119264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedFloat.length); 119364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 119464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedFloat = new float[] { 456f }; 119564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedFloat.length); 119664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456f, msg.repeatedFloat[0]); 119764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 119864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedFloat.length); 119964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 120064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 120164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 120264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedFloat = new float[] { 123f }; 120364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedFloat.length); 120464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 120564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 120664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 120764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 9); 120864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 120964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 121064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedFloat.length); 121164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123f, newMsg.repeatedFloat[0]); 121264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 121364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 121464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 121564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedFloat = new float[] { 123f, 456f }; 121664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedFloat.length); 121764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 121864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 121964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 122064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 15); 122164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 122264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 122364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 122464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedFloat.length); 122564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123f, newMsg.repeatedFloat[0]); 122664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456f, newMsg.repeatedFloat[1]); 122764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 122864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 122964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedDouble() throws Exception { 123064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 123164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedDouble.length); 123264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedDouble = new double[] { 123.0, 789.0, 456.0 }; 123364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789.0, msg.repeatedDouble[1]); 123464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456.0, msg.repeatedDouble[2]); 123564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 123664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedDouble.length); 123764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 123864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedDouble = new double[] { 456.0 }; 123964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedDouble.length); 124064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456.0, msg.repeatedDouble[0]); 124164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 124264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedDouble.length); 124364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 124464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 124564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 124664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedDouble = new double[] { 123.0 }; 124764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedDouble.length); 124864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 124964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 125064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 125164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 13); 125264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 125364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 125464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedDouble.length); 125564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123.0, newMsg.repeatedDouble[0]); 125664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 125764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 125864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 125964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedDouble = new double[] { 123.0, 456.0 }; 126064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedDouble.length); 126164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 126264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 126364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 126464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 23); 126564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 126664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 126764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 126864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedDouble.length); 126964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123.0, newMsg.repeatedDouble[0]); 127064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456.0, newMsg.repeatedDouble[1]); 127164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 127264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 127364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedBool() throws Exception { 127464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 127564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedBool.length); 127664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedBool = new boolean[] { false, true, false }; 127764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.repeatedBool[1]); 127864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(msg.repeatedBool[2]); 127964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 128064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedBool.length); 128164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 128264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedBool = new boolean[] { true }; 128364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedBool.length); 128464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msg.repeatedBool[0]); 128564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 128664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedBool.length); 128764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 128864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 128964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 129064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedBool = new boolean[] { false }; 129164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedBool.length); 129264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 129364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 129464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 129564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 129664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 129764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 129864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedBool.length); 129964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(newMsg.repeatedBool[0]); 130064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 130164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 130264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 130364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedBool = new boolean[] { true, false }; 130464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedBool.length); 130564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 130664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 130764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 130864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 9); 130964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 131064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 131164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 131264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedBool.length); 131364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.repeatedBool[0]); 131464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertFalse(newMsg.repeatedBool[1]); 131564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 131664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 131764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedString() throws Exception { 131864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 131964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedString.length); 132064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedString = new String[] { "hello", "bye", "boo" }; 132164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("bye", msg.repeatedString[1]); 132264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("boo", msg.repeatedString[2]); 132364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 132464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedString.length); 132564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 132664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedString = new String[] { "boo" }; 132764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedString.length); 132864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("boo", msg.repeatedString[0]); 132964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 133064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedString.length); 133164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 133264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 133364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 133464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedString = new String[] { "" }; 133564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedString.length); 133664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 133764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 133864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 133964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 134064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 134164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 134264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedString.length); 134364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.repeatedString[0].isEmpty()); 134464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 134564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 134664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 134764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedString = new String[] { "hello", "world" }; 134864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedString.length); 134964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 135064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 135164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 135264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 19); 135364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 135464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 135564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 135664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedString.length); 135764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("hello", newMsg.repeatedString[0]); 135864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("world", newMsg.repeatedString[1]); 135964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 136064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 136164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedBytes() throws Exception { 136264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 136364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedBytes.length); 136464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedBytes = new byte[][] { 136564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci InternalNano.copyFromUtf8("hello"), 136664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci InternalNano.copyFromUtf8("bye"), 136764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci InternalNano.copyFromUtf8("boo") 136864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci }; 136964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("bye", new String(msg.repeatedBytes[1], "UTF-8")); 137064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("boo", new String(msg.repeatedBytes[2], "UTF-8")); 137164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 137264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedBytes.length); 137364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 137464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedBytes = new byte[][] { InternalNano.copyFromUtf8("boo") }; 137564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedBytes.length); 137664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("boo", new String(msg.repeatedBytes[0], "UTF-8")); 137764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 137864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedBytes.length); 137964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 138064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 138164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 138264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedBytes = new byte[][] { InternalNano.copyFromUtf8("") }; 138364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedBytes.length); 138464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 138564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 138664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 138764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 138864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 138964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 139064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedBytes.length); 139164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.repeatedBytes[0].length == 0); 139264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 139364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 139464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 139564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedBytes = new byte[][] { 139664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci InternalNano.copyFromUtf8("hello"), 139764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci InternalNano.copyFromUtf8("world") 139864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci }; 139964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedBytes.length); 140064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 140164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 140264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 140364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 19); 140464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 140564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 140664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 140764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedBytes.length); 140864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("hello", new String(newMsg.repeatedBytes[0], "UTF-8")); 140964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("world", new String(newMsg.repeatedBytes[1], "UTF-8")); 141064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 141164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 141264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedGroup() throws Exception { 141364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 141464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.RepeatedGroup group0 = 141564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new TestAllTypesNano.RepeatedGroup(); 141664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci group0.a = 0; 141764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.RepeatedGroup group1 = 141864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new TestAllTypesNano.RepeatedGroup(); 141964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci group1.a = 1; 142064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.RepeatedGroup group2 = 142164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new TestAllTypesNano.RepeatedGroup(); 142264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci group2.a = 2; 142364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 142464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedGroup = new TestAllTypesNano.RepeatedGroup[] { group0, group1, group2 }; 142564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(3, msg.repeatedGroup.length); 142664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedGroup[0].a); 142764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedGroup[1].a); 142864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedGroup[2].a); 142964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 143064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedGroup.length); 143164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 143264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedGroup = new TestAllTypesNano.RepeatedGroup[] { group1 }; 143364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedGroup.length); 143464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedGroup[0].a); 143564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 143664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedGroup.length); 143764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 143864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 143964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 144064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedGroup = new TestAllTypesNano.RepeatedGroup[] { group0 }; 144164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedGroup.length); 144264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 144364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 144464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 144564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 7); 144664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 144764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 144864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedGroup.length); 144964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, newMsg.repeatedGroup[0].a); 145064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 145164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 145264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 145364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedGroup = new TestAllTypesNano.RepeatedGroup[] { group0, group1 }; 145464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedGroup.length); 145564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 145664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 145764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 145864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 14); 145964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 146064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 146164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 146264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedGroup.length); 146364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, newMsg.repeatedGroup[0].a); 146464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedGroup[1].a); 146564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 146664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 146764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedNestedMessage() throws Exception { 146864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 146964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.NestedMessage nestedMsg0 = 147064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new TestAllTypesNano.NestedMessage(); 147164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nestedMsg0.bb = 0; 147264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.NestedMessage nestedMsg1 = 147364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new TestAllTypesNano.NestedMessage(); 147464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nestedMsg1.bb = 1; 147564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.NestedMessage nestedMsg2 = 147664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new TestAllTypesNano.NestedMessage(); 147764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nestedMsg2.bb = 2; 147864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 147964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedNestedMessage = 148064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new TestAllTypesNano.NestedMessage[] { nestedMsg0, nestedMsg1, nestedMsg2 }; 148164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(3, msg.repeatedNestedMessage.length); 148264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedNestedMessage[0].bb); 148364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedNestedMessage[1].bb); 148464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedNestedMessage[2].bb); 148564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 148664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedNestedMessage.length); 148764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 148864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedNestedMessage = new TestAllTypesNano.NestedMessage[] { nestedMsg1 }; 148964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedNestedMessage.length); 149064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedNestedMessage[0].bb); 149164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 149264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedNestedMessage.length); 149364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 149464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 149564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 149664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedNestedMessage = new TestAllTypesNano.NestedMessage[] { nestedMsg0 }; 149764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedNestedMessage.length); 149864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 149964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 150064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 150164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 150264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 150364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 150464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedNestedMessage.length); 150564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, newMsg.repeatedNestedMessage[0].bb); 150664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 150764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 150864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 150964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedNestedMessage = new TestAllTypesNano.NestedMessage[] { nestedMsg0, nestedMsg1 }; 151064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedNestedMessage.length); 151164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 151264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 151364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 151464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 11); 151564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 151664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 151764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 151864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedNestedMessage.length); 151964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, newMsg.repeatedNestedMessage[0].bb); 152064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedNestedMessage[1].bb); 152164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 152264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 152364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedForeignMessage() throws Exception { 152464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 152564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci NanoOuterClass.ForeignMessageNano foreignMsg0 = 152664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new NanoOuterClass.ForeignMessageNano(); 152764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci foreignMsg0.c = 0; 152864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci NanoOuterClass.ForeignMessageNano foreignMsg1 = 152964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new NanoOuterClass.ForeignMessageNano(); 153064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci foreignMsg1.c = 1; 153164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci NanoOuterClass.ForeignMessageNano foreignMsg2 = 153264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new NanoOuterClass.ForeignMessageNano(); 153364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci foreignMsg2.c = 2; 153464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 153564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedForeignMessage = 153664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new NanoOuterClass.ForeignMessageNano[] { foreignMsg0, foreignMsg1, foreignMsg2 }; 153764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(3, msg.repeatedForeignMessage.length); 153864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedForeignMessage[0].c); 153964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedForeignMessage[1].c); 154064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedForeignMessage[2].c); 154164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 154264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedForeignMessage.length); 154364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 154464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedForeignMessage = new NanoOuterClass.ForeignMessageNano[] { foreignMsg1 }; 154564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedForeignMessage.length); 154664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedForeignMessage[0].c); 154764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 154864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedForeignMessage.length); 154964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 155064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 155164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 155264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedForeignMessage = new NanoOuterClass.ForeignMessageNano[] { foreignMsg0 }; 155364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedForeignMessage.length); 155464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 155564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 155664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 155764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 155864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 155964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 156064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedForeignMessage.length); 156164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, newMsg.repeatedForeignMessage[0].c); 156264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 156364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 156464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 156564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedForeignMessage = new NanoOuterClass.ForeignMessageNano[] { foreignMsg0, foreignMsg1 }; 156664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedForeignMessage.length); 156764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 156864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 156964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 157064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 11); 157164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 157264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 157364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 157464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedForeignMessage.length); 157564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, newMsg.repeatedForeignMessage[0].c); 157664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedForeignMessage[1].c); 157764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 157864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 157964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedImportMessage() throws Exception { 158064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 158164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci UnittestImportNano.ImportMessageNano foreignMsg0 = 158264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new UnittestImportNano.ImportMessageNano(); 158364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci foreignMsg0.d = 0; 158464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci UnittestImportNano.ImportMessageNano foreignMsg1 = 158564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new UnittestImportNano.ImportMessageNano(); 158664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci foreignMsg1.d = 1; 158764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci UnittestImportNano.ImportMessageNano foreignMsg2 = 158864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new UnittestImportNano.ImportMessageNano(); 158964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci foreignMsg2.d = 2; 159064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 159164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedImportMessage = 159264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new UnittestImportNano.ImportMessageNano[] { foreignMsg0, foreignMsg1, foreignMsg2 }; 159364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(3, msg.repeatedImportMessage.length); 159464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedImportMessage[0].d); 159564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedImportMessage[1].d); 159664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedImportMessage[2].d); 159764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 159864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedImportMessage.length); 159964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 160064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedImportMessage = new UnittestImportNano.ImportMessageNano[] { foreignMsg1 }; 160164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedImportMessage.length); 160264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedImportMessage[0].d); 160364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 160464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedImportMessage.length); 160564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 160664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 160764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 160864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedImportMessage = new UnittestImportNano.ImportMessageNano[] { foreignMsg0 }; 160964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedImportMessage.length); 161064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 161164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 161264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 161364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 161464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 161564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 161664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedImportMessage.length); 161764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, newMsg.repeatedImportMessage[0].d); 161864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 161964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 162064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 162164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedImportMessage = new UnittestImportNano.ImportMessageNano[] { foreignMsg0, foreignMsg1 }; 162264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedImportMessage.length); 162364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 162464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 162564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 162664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 11); 162764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 162864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 162964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 163064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedImportMessage.length); 163164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, newMsg.repeatedImportMessage[0].d); 163264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedImportMessage[1].d); 163364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 163464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 163564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedNestedEnum() throws Exception { 163664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 163764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedNestedEnum = new int[] { 163864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.FOO, 163964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.BAR, 164064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.BAZ 164164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci }; 164264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(3, msg.repeatedNestedEnum.length); 164364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.FOO, msg.repeatedNestedEnum[0]); 164464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.BAR, msg.repeatedNestedEnum[1]); 164564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.BAZ, msg.repeatedNestedEnum[2]); 164664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 164764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedNestedEnum.length); 164864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 164964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedNestedEnum = new int[] { TestAllTypesNano.BAR }; 165064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedNestedEnum.length); 165164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.BAR, msg.repeatedNestedEnum[0]); 165264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 165364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedNestedEnum.length); 165464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 165564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 165664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 165764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedNestedEnum = new int[] { TestAllTypesNano.FOO }; 165864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 165964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 166064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 166164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 166264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 166364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 166464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedNestedEnum.length); 166564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.FOO, msg.repeatedNestedEnum[0]); 166664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 166764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 166864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 166964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedNestedEnum = new int[] { TestAllTypesNano.FOO, TestAllTypesNano.BAR }; 167064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedNestedEnum.length); 167164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 167264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 167364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 167464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 9); 167564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 167664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 167764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 167864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedNestedEnum.length); 167964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.FOO, msg.repeatedNestedEnum[0]); 168064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.BAR, msg.repeatedNestedEnum[1]); 168164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 168264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 168364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedForeignEnum() throws Exception { 168464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 168564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedForeignEnum = new int[] { 168664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci NanoOuterClass.FOREIGN_NANO_FOO, 168764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci NanoOuterClass.FOREIGN_NANO_BAR, 168864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci NanoOuterClass.FOREIGN_NANO_BAZ 168964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci }; 169064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(3, msg.repeatedForeignEnum.length); 169164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(NanoOuterClass.FOREIGN_NANO_FOO, msg.repeatedForeignEnum[0]); 169264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(NanoOuterClass.FOREIGN_NANO_BAR, msg.repeatedForeignEnum[1]); 169364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(NanoOuterClass.FOREIGN_NANO_BAZ, msg.repeatedForeignEnum[2]); 169464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 169564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedForeignEnum.length); 169664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 169764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedForeignEnum = new int[] { NanoOuterClass.FOREIGN_NANO_BAR }; 169864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedForeignEnum.length); 169964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(NanoOuterClass.FOREIGN_NANO_BAR, msg.repeatedForeignEnum[0]); 170064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 170164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedForeignEnum.length); 170264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 170364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 170464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 170564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedForeignEnum = new int[] { NanoOuterClass.FOREIGN_NANO_FOO }; 170664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 170764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 170864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 170964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 171064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 171164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 171264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedForeignEnum.length); 171364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(NanoOuterClass.FOREIGN_NANO_FOO, msg.repeatedForeignEnum[0]); 171464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 171564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 171664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 171764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedForeignEnum = new int[] { 171864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci NanoOuterClass.FOREIGN_NANO_FOO, 171964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci NanoOuterClass.FOREIGN_NANO_BAR 172064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci }; 172164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedForeignEnum.length); 172264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 172364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 172464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 172564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 9); 172664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 172764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 172864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 172964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedForeignEnum.length); 173064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(NanoOuterClass.FOREIGN_NANO_FOO, msg.repeatedForeignEnum[0]); 173164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(NanoOuterClass.FOREIGN_NANO_BAR, msg.repeatedForeignEnum[1]); 173264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 173364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 173464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedImportEnum() throws Exception { 173564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 173664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedImportEnum = new int[] { 173764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci UnittestImportNano.IMPORT_NANO_FOO, 173864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci UnittestImportNano.IMPORT_NANO_BAR, 173964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci UnittestImportNano.IMPORT_NANO_BAZ 174064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci }; 174164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(3, msg.repeatedImportEnum.length); 174264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(UnittestImportNano.IMPORT_NANO_FOO, msg.repeatedImportEnum[0]); 174364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(UnittestImportNano.IMPORT_NANO_BAR, msg.repeatedImportEnum[1]); 174464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(UnittestImportNano.IMPORT_NANO_BAZ, msg.repeatedImportEnum[2]); 174564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 174664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedImportEnum.length); 174764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 174864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedImportEnum = new int[] { UnittestImportNano.IMPORT_NANO_BAR }; 174964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedImportEnum.length); 175064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(UnittestImportNano.IMPORT_NANO_BAR, msg.repeatedImportEnum[0]); 175164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 175264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedImportEnum.length); 175364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 175464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 175564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 175664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedImportEnum = new int[] { UnittestImportNano.IMPORT_NANO_FOO }; 175764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 175864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 175964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 176064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 176164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 176264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 176364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedImportEnum.length); 176464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(UnittestImportNano.IMPORT_NANO_FOO, msg.repeatedImportEnum[0]); 176564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 176664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 176764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 176864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedImportEnum = new int[] { 176964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci UnittestImportNano.IMPORT_NANO_FOO, 177064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci UnittestImportNano.IMPORT_NANO_BAR 177164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci }; 177264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedImportEnum.length); 177364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 177464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 177564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 177664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 9); 177764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 177864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 177964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 178064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedImportEnum.length); 178164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(UnittestImportNano.IMPORT_NANO_FOO, msg.repeatedImportEnum[0]); 178264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(UnittestImportNano.IMPORT_NANO_BAR, msg.repeatedImportEnum[1]); 178364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 178464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 178564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedStringPiece() throws Exception { 178664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 178764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedStringPiece.length); 178864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedStringPiece = new String[] { "hello", "bye", "boo" }; 178964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("bye", msg.repeatedStringPiece[1]); 179064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("boo", msg.repeatedStringPiece[2]); 179164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 179264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedStringPiece.length); 179364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 179464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedStringPiece = new String[] { "boo" }; 179564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedStringPiece.length); 179664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("boo", msg.repeatedStringPiece[0]); 179764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 179864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedStringPiece.length); 179964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 180064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 180164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 180264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedStringPiece = new String[] { "" }; 180364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedStringPiece.length); 180464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 180564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 180664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 180764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 180864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 180964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 181064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedStringPiece.length); 181164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.repeatedStringPiece[0].isEmpty()); 181264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 181364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 181464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 181564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedStringPiece = new String[] { "hello", "world" }; 181664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedStringPiece.length); 181764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 181864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 181964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 182064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 19); 182164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 182264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 182364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 182464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedStringPiece.length); 182564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("hello", newMsg.repeatedStringPiece[0]); 182664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("world", newMsg.repeatedStringPiece[1]); 182764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 182864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 182964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedCord() throws Exception { 183064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 183164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedCord.length); 183264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedCord = new String[] { "hello", "bye", "boo" }; 183364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("bye", msg.repeatedCord[1]); 183464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("boo", msg.repeatedCord[2]); 183564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 183664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedCord.length); 183764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 183864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedCord = new String[] { "boo" }; 183964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedCord.length); 184064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("boo", msg.repeatedCord[0]); 184164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 184264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedCord.length); 184364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 184464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 184564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 184664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedCord = new String[] { "" }; 184764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedCord.length); 184864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 184964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 185064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 185164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 6); 185264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 185364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 185464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedCord.length); 185564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(newMsg.repeatedCord[0].isEmpty()); 185664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 185764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 185864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 185964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedCord = new String[] { "hello", "world" }; 186064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedCord.length); 186164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 186264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 186364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 186464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 19); 186564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 186664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 186764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 186864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedCord.length); 186964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("hello", newMsg.repeatedCord[0]); 187064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("world", newMsg.repeatedCord[1]); 187164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 187264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 187364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedPackedInt32() throws Exception { 187464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 187564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedPackedInt32.length); 187664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedPackedInt32 = new int[] { 123, 789, 456 }; 187764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, msg.repeatedPackedInt32[1]); 187864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedPackedInt32[2]); 187964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 188064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedPackedInt32.length); 188164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 188264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedPackedInt32 = new int[] { 456 }; 188364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedPackedInt32.length); 188464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedPackedInt32[0]); 188564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 188664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedPackedInt32.length); 188764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 188864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 188964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 189064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedPackedInt32 = new int[] { 123 }; 189164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedPackedInt32.length); 189264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 189364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 189464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 189564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 7); 189664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 189764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 189864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedPackedInt32.length); 189964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedPackedInt32[0]); 190064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 190164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 190264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 190364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedPackedInt32 = new int[] { 123, 456 }; 190464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedPackedInt32.length); 190564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 190664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 190764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 190864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 9); 190964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 191064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 191164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 191264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedPackedInt32.length); 191364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedPackedInt32[0]); 191464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.repeatedPackedInt32[1]); 191564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 191664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 191764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedPackedSfixed64() throws Exception { 191864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 191964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedPackedSfixed64.length); 192064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedPackedSfixed64 = new long[] { 123, 789, 456 }; 192164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, msg.repeatedPackedSfixed64[1]); 192264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedPackedSfixed64[2]); 192364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 192464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedPackedSfixed64.length); 192564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 192664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedPackedSfixed64 = new long[] { 456 }; 192764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedPackedSfixed64.length); 192864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, msg.repeatedPackedSfixed64[0]); 192964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 193064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedPackedSfixed64.length); 193164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 193264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 193364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 193464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedPackedSfixed64 = new long[] { 123 }; 193564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedPackedSfixed64.length); 193664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 193764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 193864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 193964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 14); 194064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 194164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 194264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedPackedSfixed64.length); 194364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedPackedSfixed64[0]); 194464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 194564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 194664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 194764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedPackedSfixed64 = new long[] { 123, 456 }; 194864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedPackedSfixed64.length); 194964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 195064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 195164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 195264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 22); 195364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 195464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 195564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 195664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedPackedSfixed64.length); 195764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedPackedSfixed64[0]); 195864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.repeatedPackedSfixed64[1]); 195964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 196064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 196164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedPackedNestedEnum() throws Exception { 196264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 196364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedPackedNestedEnum = new int[] { 196464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.FOO, 196564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.BAR, 196664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.BAZ 196764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci }; 196864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(3, msg.repeatedPackedNestedEnum.length); 196964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.FOO, msg.repeatedPackedNestedEnum[0]); 197064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.BAR, msg.repeatedPackedNestedEnum[1]); 197164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.BAZ, msg.repeatedPackedNestedEnum[2]); 197264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 197364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedPackedNestedEnum.length); 197464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 197564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedPackedNestedEnum = new int[] { TestAllTypesNano.BAR }; 197664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, msg.repeatedPackedNestedEnum.length); 197764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.BAR, msg.repeatedPackedNestedEnum[0]); 197864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 197964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(0, msg.repeatedPackedNestedEnum.length); 198064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 198164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 1 entry 198264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 198364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedPackedNestedEnum = new int[] { TestAllTypesNano.FOO }; 198464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 198564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 198664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 198764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 7); 198864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 198964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 199064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, newMsg.repeatedPackedNestedEnum.length); 199164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.FOO, msg.repeatedPackedNestedEnum[0]); 199264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 199364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Test 2 entries 199464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear() 199564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .repeatedPackedNestedEnum = new int[] { TestAllTypesNano.FOO, TestAllTypesNano.BAR }; 199664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, msg.repeatedPackedNestedEnum.length); 199764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci result = MessageNano.toByteArray(msg); 199864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msgSerializedSize = msg.getSerializedSize(); 199964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 200064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 8); 200164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 200264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 200364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newMsg = TestAllTypesNano.parseFrom(result); 200464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, newMsg.repeatedPackedNestedEnum.length); 200564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.FOO, msg.repeatedPackedNestedEnum[0]); 200664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.BAR, msg.repeatedPackedNestedEnum[1]); 200764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 200864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 200914dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci public void testNanoRepeatedPackedSerializedSize() throws Exception { 201014dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 201114dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci msg.repeatedPackedInt32 = new int[] { 123, 789, 456 }; 201214dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci int msgSerializedSize = msg.getSerializedSize(); 201314dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci byte [] result = MessageNano.toByteArray(msg); 201414dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 201514dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci assertTrue(msgSerializedSize == 11); 201614dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci assertEquals(result.length, msgSerializedSize); 201714dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci TestAllTypesNano msg2 = new TestAllTypesNano(); 201814dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci msg2.repeatedPackedInt32 = new int[] { 123, 789, 456 }; 201914dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci byte [] result2 = new byte[msgSerializedSize]; 202014dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci MessageNano.toByteArray(msg2, result2, 0, msgSerializedSize); 202114dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci 202214dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci // Check equal size and content. 202314dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci assertEquals(msgSerializedSize, msg2.getSerializedSize()); 202414dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci assertTrue(Arrays.equals(result, result2)); 202514dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci } 202614dd1f02ac95f61087e311bf61c85047fb218a29Ulas Kirazci 202764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedInt32ReMerge() throws Exception { 202864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 202964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedInt32 = new int[] { 234 }; 203064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result1 = MessageNano.toByteArray(msg); 203164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 203264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear().optionalInt32 = 789; 203364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result2 = MessageNano.toByteArray(msg); 203464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 203564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear().repeatedInt32 = new int[] { 123, 456 }; 203664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result3 = MessageNano.toByteArray(msg); 203764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 203864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Concatenate the three serializations and read as one message. 203964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = new byte[result1.length + result2.length + result3.length]; 204064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci System.arraycopy(result1, 0, result, 0, result1.length); 204164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci System.arraycopy(result2, 0, result, result1.length, result2.length); 204264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci System.arraycopy(result3, 0, result, result1.length + result2.length, result3.length); 204364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 204464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 204564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, newMsg.optionalInt32); 204664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(3, newMsg.repeatedInt32.length); 204764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(234, newMsg.repeatedInt32[0]); 204864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(123, newMsg.repeatedInt32[1]); 204964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(456, newMsg.repeatedInt32[2]); 205064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 205164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 205264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedNestedEnumReMerge() throws Exception { 205364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 205464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedNestedEnum = new int[] { TestAllTypesNano.FOO }; 205564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result1 = MessageNano.toByteArray(msg); 205664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 205764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear().optionalInt32 = 789; 205864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result2 = MessageNano.toByteArray(msg); 205964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 206064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear().repeatedNestedEnum = new int[] { TestAllTypesNano.BAR, TestAllTypesNano.FOO }; 206164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result3 = MessageNano.toByteArray(msg); 206264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 206364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Concatenate the three serializations and read as one message. 206464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = new byte[result1.length + result2.length + result3.length]; 206564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci System.arraycopy(result1, 0, result, 0, result1.length); 206664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci System.arraycopy(result2, 0, result, result1.length, result2.length); 206764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci System.arraycopy(result3, 0, result, result1.length + result2.length, result3.length); 206864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 206964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 207064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, newMsg.optionalInt32); 207164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(3, newMsg.repeatedNestedEnum.length); 207264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.FOO, newMsg.repeatedNestedEnum[0]); 207364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.BAR, newMsg.repeatedNestedEnum[1]); 207464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.FOO, newMsg.repeatedNestedEnum[2]); 207564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 207664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 207764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoRepeatedNestedMessageReMerge() throws Exception { 207864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 207964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.NestedMessage nestedMsg0 = 208064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new TestAllTypesNano.NestedMessage(); 208164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nestedMsg0.bb = 0; 208264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.NestedMessage nestedMsg1 = 208364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new TestAllTypesNano.NestedMessage(); 208464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nestedMsg1.bb = 1; 208564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano.NestedMessage nestedMsg2 = 208664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new TestAllTypesNano.NestedMessage(); 208764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nestedMsg2.bb = 2; 208864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 208964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.repeatedNestedMessage = new TestAllTypesNano.NestedMessage[] { nestedMsg0 }; 209064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result1 = MessageNano.toByteArray(msg); 209164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 209264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear().optionalInt32 = 789; 209364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result2 = MessageNano.toByteArray(msg); 209464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 209564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear().repeatedNestedMessage = 209664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new TestAllTypesNano.NestedMessage[] { nestedMsg1, nestedMsg2 }; 209764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result3 = MessageNano.toByteArray(msg); 209864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 209964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Concatenate the three serializations and read as one message. 210064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = new byte[result1.length + result2.length + result3.length]; 210164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci System.arraycopy(result1, 0, result, 0, result1.length); 210264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci System.arraycopy(result2, 0, result, result1.length, result2.length); 210364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci System.arraycopy(result3, 0, result, result1.length + result2.length, result3.length); 210464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 210564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano newMsg = TestAllTypesNano.parseFrom(result); 210664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(789, newMsg.optionalInt32); 210764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(3, newMsg.repeatedNestedMessage.length); 210864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(nestedMsg0.bb, newMsg.repeatedNestedMessage[0].bb); 210964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(nestedMsg1.bb, newMsg.repeatedNestedMessage[1].bb); 211064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(nestedMsg2.bb, newMsg.repeatedNestedMessage[2].bb); 211164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 211264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 21138170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai /** 2114d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai * Tests that invalid enum values from the wire are not accepted. 2115d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai */ 2116d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai public void testNanoEnumValidity() throws Exception { 2117d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai final int invalid = 120; 2118d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai final int alsoInvalid = 121; 2119d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai 2120d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai EnumValidity.M m = new EnumValidity.M(); 2121d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // Sanity check & baseline of the assertions for the first case below. 2122d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(EnumValidity.E.default_, m.optionalE); 2123d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(EnumValidity.E.BAZ, m.defaultE); 2124d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai 2125d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai m.optionalE = invalid; 2126d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai m.defaultE = invalid; 2127d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // E contains all valid values 2128d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai m.repeatedE = new int[] {EnumValidity.E.FOO, EnumValidity.E.BAR}; 2129d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai m.packedE = new int[] {EnumValidity.E.FOO, EnumValidity.E.BAZ}; 2130d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // E2 contains some invalid values 2131d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai m.repeatedE2 = new int[] {invalid, EnumValidity.E.BAR, alsoInvalid}; 2132d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai m.packedE2 = new int[] {EnumValidity.E.FOO, invalid, alsoInvalid}; 2133d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // E3 contains all invalid values 2134d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai m.repeatedE3 = new int[] {invalid, invalid}; 2135d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai m.packedE3 = new int[] {alsoInvalid, alsoInvalid}; 2136d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai byte[] serialized = MessageNano.toByteArray(m); 2137d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // Sanity check that we do have all data in the byte array. 2138d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(31, serialized.length); 2139d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai 2140d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // Test 1: tests that invalid values aren't included in the deserialized message. 2141d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai EnumValidity.M deserialized = MessageNano.mergeFrom(new EnumValidity.M(), serialized); 2142d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(EnumValidity.E.default_, deserialized.optionalE); 2143d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(EnumValidity.E.BAZ, deserialized.defaultE); 2144d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertTrue(Arrays.equals( 2145d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai new int[] {EnumValidity.E.FOO, EnumValidity.E.BAR}, deserialized.repeatedE)); 2146d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertTrue(Arrays.equals( 2147d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai new int[] {EnumValidity.E.FOO, EnumValidity.E.BAZ}, deserialized.packedE)); 2148d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertTrue(Arrays.equals( 2149d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai new int[] {EnumValidity.E.BAR}, deserialized.repeatedE2)); 2150d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertTrue(Arrays.equals( 2151d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai new int[] {EnumValidity.E.FOO}, deserialized.packedE2)); 2152d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(0, deserialized.repeatedE3.length); 2153d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(0, deserialized.packedE3.length); 2154d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai 2155d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // Test 2: tests that invalid values do not override previous values in the field, including 2156d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // arrays, including pre-existing invalid values. 2157d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.optionalE = EnumValidity.E.BAR; 2158d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.defaultE = alsoInvalid; 2159d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.repeatedE = new int[] {EnumValidity.E.BAZ}; 2160d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.packedE = new int[] {EnumValidity.E.BAZ, alsoInvalid}; 2161d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.repeatedE2 = new int[] {invalid, alsoInvalid}; 2162d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.packedE2 = null; 2163d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.repeatedE3 = null; 2164d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.packedE3 = new int[0]; 2165d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai MessageNano.mergeFrom(deserialized, serialized); 2166d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(EnumValidity.E.BAR, deserialized.optionalE); 2167d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(alsoInvalid, deserialized.defaultE); 2168d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertTrue(Arrays.equals( 2169d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai new int[] {EnumValidity.E.BAZ, /* + */ EnumValidity.E.FOO, EnumValidity.E.BAR}, 2170d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.repeatedE)); 2171d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertTrue(Arrays.equals( 2172d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai new int[] {EnumValidity.E.BAZ, alsoInvalid, /* + */ EnumValidity.E.FOO, EnumValidity.E.BAZ}, 2173d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.packedE)); 2174d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertTrue(Arrays.equals( 2175d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai new int[] {invalid, alsoInvalid, /* + */ EnumValidity.E.BAR}, 2176d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.repeatedE2)); 2177d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertTrue(Arrays.equals( 2178d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai new int[] {/* <null> + */ EnumValidity.E.FOO}, 2179d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.packedE2)); 2180d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertNull(deserialized.repeatedE3); // null + all invalid == null 2181d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(0, deserialized.packedE3.length); // empty + all invalid == empty 2182d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai 2183d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // Test 3: reading by alternative forms 2184d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai EnumValidity.Alt alt = MessageNano.mergeFrom(new EnumValidity.Alt(), serialized); 2185d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(EnumValidity.E.BAR, // last valid value in m.repeatedE2 2186d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai alt.repeatedE2AsOptional); 2187d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertTrue(Arrays.equals(new int[] {EnumValidity.E.FOO}, alt.packedE2AsNonPacked)); 2188d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(0, alt.nonPackedE3AsPacked.length); 2189d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai } 2190d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai 2191d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai /** 2192d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai * Tests the same as {@link #testNanoEnumValidity()} with accessor style. Repeated fields are 2193d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai * not re-tested here because they are not affected by the accessor style. 2194d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai */ 2195d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai public void testNanoEnumValidityAccessors() throws Exception { 2196d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai final int invalid = 120; 2197d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai final int alsoInvalid = 121; 2198d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai 2199d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai EnumValidityAccessors.M m = new EnumValidityAccessors.M(); 2200d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // Sanity check & baseline of the assertions for the first case below. 2201d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(EnumValidityAccessors.default_, m.getOptionalE()); 2202d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(EnumValidityAccessors.BAZ, m.getDefaultE()); 2203d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai 2204d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai m.setOptionalE(invalid); 2205d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai m.setDefaultE(invalid); 2206d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // Set repeatedE2 for Alt.repeatedE2AsOptional 2207d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai m.repeatedE2 = new int[] {invalid, EnumValidityAccessors.BAR, alsoInvalid}; 2208d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai byte[] serialized = MessageNano.toByteArray(m); 2209d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // Sanity check that we do have all data in the byte array. 2210d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(10, serialized.length); 2211d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai 2212d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // Test 1: tests that invalid values aren't included in the deserialized message. 2213d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai EnumValidityAccessors.M deserialized = 2214d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai MessageNano.mergeFrom(new EnumValidityAccessors.M(), serialized); 2215d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(EnumValidityAccessors.default_, deserialized.getOptionalE()); 2216d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(EnumValidityAccessors.BAZ, deserialized.getDefaultE()); 2217d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai 2218d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // Test 2: tests that invalid values do not override previous values in the field, including 2219d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // pre-existing invalid values. 2220d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.setOptionalE(EnumValidityAccessors.BAR); 2221d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai deserialized.setDefaultE(alsoInvalid); 2222d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai MessageNano.mergeFrom(deserialized, serialized); 2223d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(EnumValidityAccessors.BAR, deserialized.getOptionalE()); 2224d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(alsoInvalid, deserialized.getDefaultE()); 2225d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai 2226d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai // Test 3: reading by alternative forms 2227d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai EnumValidityAccessors.Alt alt = 2228d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai MessageNano.mergeFrom(new EnumValidityAccessors.Alt(), serialized); 2229d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai assertEquals(EnumValidityAccessors.BAR, // last valid value in m.repeatedE2 2230d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai alt.getRepeatedE2AsOptional()); 2231d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai } 2232d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai 2233d888895a3b5cf764856d3a94ed526bf9994c1800Max Cai /** 2234624c448fbef20a1a2fad2289f622b468c25763d1Max Cai * Tests that code generation correctly wraps a single message into its outer 2235624c448fbef20a1a2fad2289f622b468c25763d1Max Cai * class. The class {@code SingleMessageNano} is imported from the outer 2236624c448fbef20a1a2fad2289f622b468c25763d1Max Cai * class {@code UnittestSingleNano}, whose name is implicit. Any error would 2237624c448fbef20a1a2fad2289f622b468c25763d1Max Cai * cause this method to fail compilation. 2238624c448fbef20a1a2fad2289f622b468c25763d1Max Cai */ 2239624c448fbef20a1a2fad2289f622b468c25763d1Max Cai public void testNanoSingle() throws Exception { 2240624c448fbef20a1a2fad2289f622b468c25763d1Max Cai SingleMessageNano msg = new SingleMessageNano(); 2241382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertNotNull(msg); 2242624c448fbef20a1a2fad2289f622b468c25763d1Max Cai } 2243624c448fbef20a1a2fad2289f622b468c25763d1Max Cai 2244624c448fbef20a1a2fad2289f622b468c25763d1Max Cai /** 2245624c448fbef20a1a2fad2289f622b468c25763d1Max Cai * Tests that code generation correctly skips generating the outer class if 2246624c448fbef20a1a2fad2289f622b468c25763d1Max Cai * unnecessary, letting a file-scope entity have the same name. The class 2247624c448fbef20a1a2fad2289f622b468c25763d1Max Cai * {@code MultipleNameClashNano} shares the same name with the file's outer 2248624c448fbef20a1a2fad2289f622b468c25763d1Max Cai * class defined explicitly, but the file contains no other entities and has 2249624c448fbef20a1a2fad2289f622b468c25763d1Max Cai * java_multiple_files set. Any error would cause this method to fail 2250624c448fbef20a1a2fad2289f622b468c25763d1Max Cai * compilation. 2251624c448fbef20a1a2fad2289f622b468c25763d1Max Cai */ 2252624c448fbef20a1a2fad2289f622b468c25763d1Max Cai public void testNanoMultipleNameClash() throws Exception { 2253624c448fbef20a1a2fad2289f622b468c25763d1Max Cai MultipleNameClashNano msg = new MultipleNameClashNano(); 2254624c448fbef20a1a2fad2289f622b468c25763d1Max Cai msg.field = 0; 2255624c448fbef20a1a2fad2289f622b468c25763d1Max Cai } 2256624c448fbef20a1a2fad2289f622b468c25763d1Max Cai 2257624c448fbef20a1a2fad2289f622b468c25763d1Max Cai /** 2258624c448fbef20a1a2fad2289f622b468c25763d1Max Cai * Tests that code generation correctly handles enums in different scopes in 2259624c448fbef20a1a2fad2289f622b468c25763d1Max Cai * a source file with the option java_multiple_files set to true. Any error 2260624c448fbef20a1a2fad2289f622b468c25763d1Max Cai * would cause this method to fail compilation. 2261624c448fbef20a1a2fad2289f622b468c25763d1Max Cai */ 2262624c448fbef20a1a2fad2289f622b468c25763d1Max Cai public void testNanoMultipleEnumScoping() throws Exception { 2263624c448fbef20a1a2fad2289f622b468c25763d1Max Cai FileScopeEnumRefNano msg1 = new FileScopeEnumRefNano(); 2264624c448fbef20a1a2fad2289f622b468c25763d1Max Cai msg1.enumField = UnittestMultipleNano.ONE; 2265624c448fbef20a1a2fad2289f622b468c25763d1Max Cai MessageScopeEnumRefNano msg2 = new MessageScopeEnumRefNano(); 2266624c448fbef20a1a2fad2289f622b468c25763d1Max Cai msg2.enumField = MessageScopeEnumRefNano.TWO; 2267624c448fbef20a1a2fad2289f622b468c25763d1Max Cai } 2268624c448fbef20a1a2fad2289f622b468c25763d1Max Cai 2269624c448fbef20a1a2fad2289f622b468c25763d1Max Cai /** 22708170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai * Tests that code generation with mixed values of the java_multiple_files 22718170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai * options between the main source file and the imported source files would 22728170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai * generate correct references. Any error would cause this method to fail 22738170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai * compilation. 22748170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai */ 22758170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai public void testNanoMultipleImportingNonMultiple() throws Exception { 22768170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai UnittestImportNano.ImportMessageNano importMsg = new UnittestImportNano.ImportMessageNano(); 22778170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai MultipleImportingNonMultipleNano1 nano1 = new MultipleImportingNonMultipleNano1(); 22788170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai nano1.field = importMsg; 22798170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai MultipleImportingNonMultipleNano2 nano2 = new MultipleImportingNonMultipleNano2(); 22808170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai nano2.nano1 = nano1; 22818170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai } 22828170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai 228364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testNanoDefaults() throws Exception { 228464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci TestAllTypesNano msg = new TestAllTypesNano(); 228564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for (int i = 0; i < 2; i++) { 228664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(41, msg.defaultInt32); 228764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(42, msg.defaultInt64); 228864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(43, msg.defaultUint32); 228964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(44, msg.defaultUint64); 229064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(-45, msg.defaultSint32); 229164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(46, msg.defaultSint64); 229264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(47, msg.defaultFixed32); 229364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(48, msg.defaultFixed64); 229464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(49, msg.defaultSfixed32); 229564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(-50, msg.defaultSfixed64); 229664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(51.5f == msg.defaultFloat); 229764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(52.0e3 == msg.defaultDouble); 229864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(true, msg.defaultBool); 229964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("hello", msg.defaultString); 230064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("world", new String(msg.defaultBytes, "UTF-8")); 230164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("dünya", msg.defaultStringNonascii); 230264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals("dünyab", new String(msg.defaultBytesNonascii, "UTF-8")); 230364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(TestAllTypesNano.BAR, msg.defaultNestedEnum); 230464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(NanoOuterClass.FOREIGN_NANO_BAR, msg.defaultForeignEnum); 230564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(UnittestImportNano.IMPORT_NANO_BAR, msg.defaultImportEnum); 23060f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith assertEquals(Float.POSITIVE_INFINITY, msg.defaultFloatInf); 23070f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith assertEquals(Float.NEGATIVE_INFINITY, msg.defaultFloatNegInf); 23080f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith assertEquals(Float.NaN, msg.defaultFloatNan); 23090f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith assertEquals(Double.POSITIVE_INFINITY, msg.defaultDoubleInf); 23100f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith assertEquals(Double.NEGATIVE_INFINITY, msg.defaultDoubleNegInf); 23110f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith assertEquals(Double.NaN, msg.defaultDoubleNan); 231264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 231364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Default values are not output, except for required fields. 231464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte [] result = MessageNano.toByteArray(msg); 231564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int msgSerializedSize = msg.getSerializedSize(); 231664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 231764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(msgSerializedSize == 3); 231864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(result.length, msgSerializedSize); 231964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci msg.clear(); 232064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 232164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 232264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 2323bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger public void testDifferentStringLengthsNano() throws Exception { 2324bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger // Test string serialization roundtrip using strings of the following lengths, 2325bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger // with ASCII and Unicode characters requiring different UTF-8 byte counts per 2326bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger // char, hence causing the length delimiter varint to sometimes require more 2327bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger // bytes for the Unicode strings than the ASCII string of the same length. 2328bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger int[] lengths = new int[] { 2329bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger 0, 2330bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger 1, 2331bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger (1 << 4) - 1, // 1 byte for ASCII and Unicode 2332bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger (1 << 7) - 1, // 1 byte for ASCII, 2 bytes for Unicode 2333bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger (1 << 11) - 1, // 2 bytes for ASCII and Unicode 2334bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger (1 << 14) - 1, // 2 bytes for ASCII, 3 bytes for Unicode 2335bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger (1 << 17) - 1, // 3 bytes for ASCII and Unicode 2336bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger }; 2337bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger for (int i : lengths) { 2338bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger testEncodingOfString('q', i); // 1 byte per char 2339bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger testEncodingOfString('\u07FF', i); // 2 bytes per char 2340bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger testEncodingOfString('\u0981', i); // 3 bytes per char 2341bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger } 2342bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger } 2343bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger 2344ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger /** Regression test for https://github.com/google/protobuf/issues/292 */ 2345ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger public void testCorrectExceptionThrowWhenEncodingStringsWithoutEnoughSpace() throws Exception { 2346ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger String testCase = "Foooooooo"; 2347ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger assertEquals(CodedOutputByteBufferNano.computeRawVarint32Size(testCase.length()), 2348ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger CodedOutputByteBufferNano.computeRawVarint32Size(testCase.length() * 3)); 2349ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger assertEquals(11, CodedOutputByteBufferNano.computeStringSize(1, testCase)); 2350ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger // Tag is one byte, varint describing string length is 1 byte, string length is 9 bytes. 2351ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger // An array of size 1 will cause a failure when trying to write the varint. 2352ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger for (int i = 0; i < 11; i++) { 2353ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger CodedOutputByteBufferNano bufferNano = CodedOutputByteBufferNano.newInstance(new byte[i]); 2354ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger try { 2355ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger bufferNano.writeString(1, testCase); 2356ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger fail("Should have thrown an out of space exception"); 2357ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger } catch (CodedOutputByteBufferNano.OutOfSpaceException expected) {} 2358ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger } 2359ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger } 2360ebfc42610b47af51de7ce9eacc65960a80c6d490Charles Munger 2361bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger private void testEncodingOfString(char c, int length) throws InvalidProtocolBufferNanoException { 2362bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger TestAllTypesNano testAllTypesNano = new TestAllTypesNano(); 2363bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger final String fullString = fullString(c, length); 2364bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger testAllTypesNano.optionalString = fullString; 2365bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger final TestAllTypesNano resultNano = new TestAllTypesNano(); 2366bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger MessageNano.mergeFrom(resultNano, MessageNano.toByteArray(testAllTypesNano)); 2367bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger assertEquals(fullString, resultNano.optionalString); 2368bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger } 2369bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger 2370bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger private String fullString(char c, int length) { 2371bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger char[] result = new char[length]; 2372bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger Arrays.fill(result, c); 2373bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger return new String(result); 2374bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger } 2375bcf7a816ad9d435cd4562bdc722fd01100a918d7Charles Munger 237635d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci public void testNanoWithHasParseFrom() throws Exception { 237735d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci TestAllTypesNanoHas msg = null; 237835d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci // Test false on creation, after clear and upon empty parse. 237935d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci for (int i = 0; i < 3; i++) { 238035d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci if (i == 0) { 238135d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg = new TestAllTypesNanoHas(); 238235d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci } else if (i == 1) { 238335d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.clear(); 238435d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci } else if (i == 2) { 238535d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg = TestAllTypesNanoHas.parseFrom(new byte[0]); 238635d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci } 238735d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertFalse(msg.hasOptionalInt32); 238835d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertFalse(msg.hasOptionalString); 238935d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertFalse(msg.hasOptionalBytes); 239035d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertFalse(msg.hasOptionalNestedEnum); 239135d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertFalse(msg.hasDefaultInt32); 239235d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertFalse(msg.hasDefaultString); 239335d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertFalse(msg.hasDefaultBytes); 239435d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertFalse(msg.hasDefaultFloatNan); 239535d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertFalse(msg.hasDefaultNestedEnum); 239635d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertFalse(msg.hasId); 2397f84177299a76759be1eb925093b059aef246fc0eMax Cai assertFalse(msg.hasRequiredEnum); 239835d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.optionalInt32 = 123; 239935d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.optionalNestedMessage = new TestAllTypesNanoHas.NestedMessage(); 240035d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.optionalNestedMessage.bb = 2; 240135d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.optionalNestedEnum = TestAllTypesNano.BAZ; 240235d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci } 240335d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci 240435d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci byte [] result = MessageNano.toByteArray(msg); 240535d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci int msgSerializedSize = msg.getSerializedSize(); 240635d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 2407f84177299a76759be1eb925093b059aef246fc0eMax Cai assertTrue(msgSerializedSize == 10); 240835d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(result.length, msgSerializedSize); 240935d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci 241035d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci // Has fields true upon parse. 241135d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci TestAllTypesNanoHas newMsg = TestAllTypesNanoHas.parseFrom(result); 241235d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(123, newMsg.optionalInt32); 241335d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.hasOptionalInt32); 241435d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(2, newMsg.optionalNestedMessage.bb); 241535d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.optionalNestedMessage.hasBb); 241635d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(TestAllTypesNanoHas.BAZ, newMsg.optionalNestedEnum); 241735d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.hasOptionalNestedEnum); 241835d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci } 241935d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci 242035d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci public void testNanoWithHasSerialize() throws Exception { 242135d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci TestAllTypesNanoHas msg = new TestAllTypesNanoHas(); 242235d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.hasOptionalInt32 = true; 242335d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.hasOptionalString = true; 242435d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.hasOptionalBytes = true; 242535d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.optionalNestedMessage = new TestAllTypesNanoHas.NestedMessage(); 242635d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.optionalNestedMessage.hasBb = true; 242735d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.hasOptionalNestedEnum = true; 242835d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.hasDefaultInt32 = true; 242935d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.hasDefaultString = true; 243035d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.hasDefaultBytes = true; 243135d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.hasDefaultFloatNan = true; 243235d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci msg.hasDefaultNestedEnum = true; 2433f84177299a76759be1eb925093b059aef246fc0eMax Cai msg.hasId = true; 2434f84177299a76759be1eb925093b059aef246fc0eMax Cai msg.hasRequiredEnum = true; 243535d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci 243635d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci byte [] result = MessageNano.toByteArray(msg); 243735d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci int msgSerializedSize = msg.getSerializedSize(); 243835d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(result.length, msgSerializedSize); 243935d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci 244035d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci // Now deserialize and find that all fields are set and equal to their defaults. 244135d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci TestAllTypesNanoHas newMsg = TestAllTypesNanoHas.parseFrom(result); 244235d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.hasOptionalInt32); 244335d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.hasOptionalString); 244435d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.hasOptionalBytes); 244535d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.optionalNestedMessage.hasBb); 244635d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.hasOptionalNestedEnum); 244735d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.hasDefaultInt32); 244835d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.hasDefaultString); 244935d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.hasDefaultBytes); 245035d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.hasDefaultFloatNan); 245135d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.hasDefaultNestedEnum); 245235d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertTrue(newMsg.hasId); 2453f84177299a76759be1eb925093b059aef246fc0eMax Cai assertTrue(newMsg.hasRequiredEnum); 245435d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(0, newMsg.optionalInt32); 245535d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(0, newMsg.optionalString.length()); 245635d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(0, newMsg.optionalBytes.length); 245735d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(0, newMsg.optionalNestedMessage.bb); 245835d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(TestAllTypesNanoHas.FOO, newMsg.optionalNestedEnum); 245935d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(41, newMsg.defaultInt32); 246035d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals("hello", newMsg.defaultString); 246135d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals("world", new String(newMsg.defaultBytes, "UTF-8")); 246235d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(TestAllTypesNanoHas.BAR, newMsg.defaultNestedEnum); 246335d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(Float.NaN, newMsg.defaultFloatNan); 246435d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci assertEquals(0, newMsg.id); 2465f84177299a76759be1eb925093b059aef246fc0eMax Cai assertEquals(TestAllTypesNanoHas.FOO, newMsg.requiredEnum); 246635d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci } 246735d9fd84ff1d9ecdb91156b757cc9fdcc3f25249Ulas Kirazci 2468e74fe623e115237968a3de1143d7cdb4df710858Max Cai public void testNanoWithAccessorsBasic() throws Exception { 2469e74fe623e115237968a3de1143d7cdb4df710858Max Cai TestNanoAccessors msg = new TestNanoAccessors(); 2470e74fe623e115237968a3de1143d7cdb4df710858Max Cai 2471102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn // Makes sure required, repeated, and message fields are still public 2472e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.id = 3; 2473e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.repeatedBytes = new byte[2][3]; 2474102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn msg.optionalNestedMessage = null; 2475e74fe623e115237968a3de1143d7cdb4df710858Max Cai 2476e74fe623e115237968a3de1143d7cdb4df710858Max Cai // Test accessors 2477e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(0, msg.getOptionalInt32()); 2478e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasOptionalInt32()); 2479e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setOptionalInt32(135); 2480e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(135, msg.getOptionalInt32()); 2481e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(msg.hasOptionalInt32()); 2482e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.clearOptionalInt32(); 2483e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasOptionalInt32()); 2484e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setOptionalInt32(0); // default value 2485e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(msg.hasOptionalInt32()); 2486e74fe623e115237968a3de1143d7cdb4df710858Max Cai 2487e74fe623e115237968a3de1143d7cdb4df710858Max Cai // Test NPE 2488e74fe623e115237968a3de1143d7cdb4df710858Max Cai try { 2489e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setOptionalBytes(null); 2490e74fe623e115237968a3de1143d7cdb4df710858Max Cai fail(); 2491e74fe623e115237968a3de1143d7cdb4df710858Max Cai } catch (NullPointerException expected) {} 2492e74fe623e115237968a3de1143d7cdb4df710858Max Cai try { 2493e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setOptionalString(null); 2494e74fe623e115237968a3de1143d7cdb4df710858Max Cai fail(); 2495e74fe623e115237968a3de1143d7cdb4df710858Max Cai } catch (NullPointerException expected) {} 2496e74fe623e115237968a3de1143d7cdb4df710858Max Cai 2497e74fe623e115237968a3de1143d7cdb4df710858Max Cai // Test has bit on bytes field with defaults and clear() re-clones the default array 2498e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasDefaultBytes()); 2499e74fe623e115237968a3de1143d7cdb4df710858Max Cai byte[] defaultBytes = msg.getDefaultBytes(); 2500e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setDefaultBytes(defaultBytes); 2501e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(msg.hasDefaultBytes()); 2502e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.clearDefaultBytes(); 2503e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasDefaultBytes()); 2504e74fe623e115237968a3de1143d7cdb4df710858Max Cai defaultBytes[0]++; // modify original array 2505e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(Arrays.equals(defaultBytes, msg.getDefaultBytes())); 2506e74fe623e115237968a3de1143d7cdb4df710858Max Cai 2507e74fe623e115237968a3de1143d7cdb4df710858Max Cai // Test has bits that require additional bit fields 2508e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasBitFieldCheck()); 2509e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setBitFieldCheck(0); 2510e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(msg.hasBitFieldCheck()); 2511e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasBeforeBitFieldCheck()); // checks bit field does not leak 2512e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasAfterBitFieldCheck()); 2513e74fe623e115237968a3de1143d7cdb4df710858Max Cai 2514e74fe623e115237968a3de1143d7cdb4df710858Max Cai // Test clear() clears has bits 2515e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setOptionalString("hi"); 2516e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setDefaultString("there"); 2517e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.clear(); 2518e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasOptionalString()); 2519e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasDefaultString()); 2520e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasBitFieldCheck()); 2521b15a1b379f896e371ca3375bdf51dd4a9a0268afMax Cai 2522b15a1b379f896e371ca3375bdf51dd4a9a0268afMax Cai // Test set() and clear() returns itself (compiles = success) 2523b15a1b379f896e371ca3375bdf51dd4a9a0268afMax Cai msg.clear() 2524b15a1b379f896e371ca3375bdf51dd4a9a0268afMax Cai .setOptionalInt32(3) 2525b15a1b379f896e371ca3375bdf51dd4a9a0268afMax Cai .clearDefaultBytes() 2526b15a1b379f896e371ca3375bdf51dd4a9a0268afMax Cai .setOptionalString("4"); 2527e74fe623e115237968a3de1143d7cdb4df710858Max Cai } 2528e74fe623e115237968a3de1143d7cdb4df710858Max Cai 2529e74fe623e115237968a3de1143d7cdb4df710858Max Cai public void testNanoWithAccessorsParseFrom() throws Exception { 2530e74fe623e115237968a3de1143d7cdb4df710858Max Cai TestNanoAccessors msg = null; 2531e74fe623e115237968a3de1143d7cdb4df710858Max Cai // Test false on creation, after clear and upon empty parse. 2532e74fe623e115237968a3de1143d7cdb4df710858Max Cai for (int i = 0; i < 3; i++) { 2533e74fe623e115237968a3de1143d7cdb4df710858Max Cai if (i == 0) { 2534e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg = new TestNanoAccessors(); 2535e74fe623e115237968a3de1143d7cdb4df710858Max Cai } else if (i == 1) { 2536e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.clear(); 2537e74fe623e115237968a3de1143d7cdb4df710858Max Cai } else if (i == 2) { 2538e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg = TestNanoAccessors.parseFrom(new byte[0]); 2539e74fe623e115237968a3de1143d7cdb4df710858Max Cai } 2540e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasOptionalInt32()); 2541e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasOptionalString()); 2542e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasOptionalBytes()); 2543e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasOptionalNestedEnum()); 2544e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasDefaultInt32()); 2545e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasDefaultString()); 2546e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasDefaultBytes()); 2547e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasDefaultFloatNan()); 2548e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertFalse(msg.hasDefaultNestedEnum()); 2549102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn msg.optionalNestedMessage = new TestNanoAccessors.NestedMessage(); 2550102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn msg.optionalNestedMessage.setBb(2); 2551e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setOptionalNestedEnum(TestNanoAccessors.BAZ); 2552e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setDefaultInt32(msg.getDefaultInt32()); 2553e74fe623e115237968a3de1143d7cdb4df710858Max Cai } 2554e74fe623e115237968a3de1143d7cdb4df710858Max Cai 2555e74fe623e115237968a3de1143d7cdb4df710858Max Cai byte [] result = MessageNano.toByteArray(msg); 2556e74fe623e115237968a3de1143d7cdb4df710858Max Cai int msgSerializedSize = msg.getSerializedSize(); 2557e74fe623e115237968a3de1143d7cdb4df710858Max Cai //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length); 2558e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(msgSerializedSize == 14); 2559e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(result.length, msgSerializedSize); 2560e74fe623e115237968a3de1143d7cdb4df710858Max Cai 2561e74fe623e115237968a3de1143d7cdb4df710858Max Cai // Has fields true upon parse. 2562e74fe623e115237968a3de1143d7cdb4df710858Max Cai TestNanoAccessors newMsg = TestNanoAccessors.parseFrom(result); 2563102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertEquals(2, newMsg.optionalNestedMessage.getBb()); 2564102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertTrue(newMsg.optionalNestedMessage.hasBb()); 2565e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(TestNanoAccessors.BAZ, newMsg.getOptionalNestedEnum()); 2566e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(newMsg.hasOptionalNestedEnum()); 2567e74fe623e115237968a3de1143d7cdb4df710858Max Cai 2568e74fe623e115237968a3de1143d7cdb4df710858Max Cai // Has field true on fields with explicit default values from wire. 2569e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(newMsg.hasDefaultInt32()); 2570e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(41, newMsg.getDefaultInt32()); 2571e74fe623e115237968a3de1143d7cdb4df710858Max Cai } 2572e74fe623e115237968a3de1143d7cdb4df710858Max Cai 2573102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn public void testNanoWithAccessorsPublicFieldTypes() throws Exception { 2574102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn TestNanoAccessors msg = new TestNanoAccessors(); 2575102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertNull(msg.optionalNestedMessage); 2576102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertEquals(0, msg.id); 2577102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertEquals(0, msg.repeatedNestedEnum.length); 2578102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn 2579102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn TestNanoAccessors newMsg = TestNanoAccessors.parseFrom(MessageNano.toByteArray(msg)); 2580102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertNull(newMsg.optionalNestedMessage); 2581102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertEquals(0, newMsg.id); 2582102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertEquals(0, newMsg.repeatedNestedEnum.length); 2583102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn 2584102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn TestNanoAccessors.NestedMessage nestedMessage = new TestNanoAccessors.NestedMessage(); 2585102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn nestedMessage.setBb(5); 2586102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn newMsg.optionalNestedMessage = nestedMessage; 2587102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn newMsg.id = -1; 2588102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn newMsg.repeatedNestedEnum = new int[] { TestAllTypesNano.FOO }; 2589102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn 2590102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn TestNanoAccessors newMsg2 = TestNanoAccessors.parseFrom(MessageNano.toByteArray(newMsg)); 2591102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertEquals(nestedMessage.getBb(), newMsg2.optionalNestedMessage.getBb()); 2592102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertEquals(-1, newMsg2.id); 2593102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertEquals(TestAllTypesNano.FOO, newMsg2.repeatedNestedEnum[0]); 2594102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn 2595102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn newMsg2.optionalNestedMessage = null; 2596102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn newMsg2.id = 0; 2597102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn newMsg2.repeatedNestedEnum = null; 2598102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn 2599102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn TestNanoAccessors newMsg3 = TestNanoAccessors.parseFrom(MessageNano.toByteArray(newMsg2)); 2600102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertNull(newMsg3.optionalNestedMessage); 2601102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertEquals(0, newMsg3.id); 2602102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertEquals(0, newMsg3.repeatedNestedEnum.length); 2603102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn } 2604102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn 2605e74fe623e115237968a3de1143d7cdb4df710858Max Cai public void testNanoWithAccessorsSerialize() throws Exception { 2606e74fe623e115237968a3de1143d7cdb4df710858Max Cai TestNanoAccessors msg = new TestNanoAccessors(); 2607e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setOptionalInt32(msg.getOptionalInt32()); 2608e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setOptionalString(msg.getOptionalString()); 2609e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setOptionalBytes(msg.getOptionalBytes()); 2610e74fe623e115237968a3de1143d7cdb4df710858Max Cai TestNanoAccessors.NestedMessage nestedMessage = new TestNanoAccessors.NestedMessage(); 2611e74fe623e115237968a3de1143d7cdb4df710858Max Cai nestedMessage.setBb(nestedMessage.getBb()); 2612102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn msg.optionalNestedMessage = nestedMessage; 2613e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setOptionalNestedEnum(msg.getOptionalNestedEnum()); 2614e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setDefaultInt32(msg.getDefaultInt32()); 2615e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setDefaultString(msg.getDefaultString()); 2616e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setDefaultBytes(msg.getDefaultBytes()); 2617e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setDefaultFloatNan(msg.getDefaultFloatNan()); 2618e74fe623e115237968a3de1143d7cdb4df710858Max Cai msg.setDefaultNestedEnum(msg.getDefaultNestedEnum()); 2619e74fe623e115237968a3de1143d7cdb4df710858Max Cai 2620e74fe623e115237968a3de1143d7cdb4df710858Max Cai byte [] result = MessageNano.toByteArray(msg); 2621e74fe623e115237968a3de1143d7cdb4df710858Max Cai int msgSerializedSize = msg.getSerializedSize(); 2622e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(result.length, msgSerializedSize); 2623e74fe623e115237968a3de1143d7cdb4df710858Max Cai 2624e74fe623e115237968a3de1143d7cdb4df710858Max Cai // Now deserialize and find that all fields are set and equal to their defaults. 2625e74fe623e115237968a3de1143d7cdb4df710858Max Cai TestNanoAccessors newMsg = TestNanoAccessors.parseFrom(result); 2626e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(newMsg.hasOptionalInt32()); 2627e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(newMsg.hasOptionalString()); 2628e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(newMsg.hasOptionalBytes()); 2629102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertTrue(newMsg.optionalNestedMessage.hasBb()); 2630e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(newMsg.hasOptionalNestedEnum()); 2631e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(newMsg.hasDefaultInt32()); 2632e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(newMsg.hasDefaultString()); 2633e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(newMsg.hasDefaultBytes()); 2634e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(newMsg.hasDefaultFloatNan()); 2635e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertTrue(newMsg.hasDefaultNestedEnum()); 2636e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(0, newMsg.getOptionalInt32()); 2637e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(0, newMsg.getOptionalString().length()); 2638e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(0, newMsg.getOptionalBytes().length); 2639102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn assertEquals(0, newMsg.optionalNestedMessage.getBb()); 2640e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(TestNanoAccessors.FOO, newMsg.getOptionalNestedEnum()); 2641e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(41, newMsg.getDefaultInt32()); 2642e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals("hello", newMsg.getDefaultString()); 2643e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals("world", new String(newMsg.getDefaultBytes(), "UTF-8")); 2644e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(TestNanoAccessors.BAR, newMsg.getDefaultNestedEnum()); 2645e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(Float.NaN, newMsg.getDefaultFloatNan()); 2646e74fe623e115237968a3de1143d7cdb4df710858Max Cai assertEquals(0, newMsg.id); 2647e74fe623e115237968a3de1143d7cdb4df710858Max Cai } 2648e74fe623e115237968a3de1143d7cdb4df710858Max Cai 264926266cd4660ffe1f3d6015b715713ee654c5b936Max Cai public void testNanoJavaEnumStyle() throws Exception { 265026266cd4660ffe1f3d6015b715713ee654c5b936Max Cai EnumClassNanos.EnumClassNano msg = new EnumClassNanos.EnumClassNano(); 265126266cd4660ffe1f3d6015b715713ee654c5b936Max Cai assertEquals(EnumClassNanos.FileScopeEnum.ONE, msg.one); 265226266cd4660ffe1f3d6015b715713ee654c5b936Max Cai assertEquals(EnumClassNanos.EnumClassNano.MessageScopeEnum.TWO, msg.two); 265326266cd4660ffe1f3d6015b715713ee654c5b936Max Cai 265426266cd4660ffe1f3d6015b715713ee654c5b936Max Cai EnumClassNanoMultiple msg2 = new EnumClassNanoMultiple(); 265526266cd4660ffe1f3d6015b715713ee654c5b936Max Cai assertEquals(FileScopeEnumMultiple.THREE, msg2.three); 265626266cd4660ffe1f3d6015b715713ee654c5b936Max Cai assertEquals(EnumClassNanoMultiple.MessageScopeEnumMultiple.FOUR, msg2.four); 265726266cd4660ffe1f3d6015b715713ee654c5b936Max Cai } 265826266cd4660ffe1f3d6015b715713ee654c5b936Max Cai 265964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /** 26600f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith * Tests that fields with a default value of NaN are not serialized when 26610f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith * set to NaN. This is a special case as NaN != NaN, so normal equality 26620f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith * checks don't work. 26630f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith */ 26640f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith public void testNanoNotANumberDefaults() throws Exception { 26650f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith TestAllTypesNano msg = new TestAllTypesNano(); 26660f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith msg.defaultDoubleNan = 0; 26670f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith msg.defaultFloatNan = 0; 26680f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith byte[] result = MessageNano.toByteArray(msg); 26690f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith int msgSerializedSize = msg.getSerializedSize(); 2670382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(result.length == msgSerializedSize); 26710f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith assertTrue(msgSerializedSize > 3); 26720f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith 26730f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith msg.defaultDoubleNan = Double.NaN; 26740f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith msg.defaultFloatNan = Float.NaN; 26750f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith result = MessageNano.toByteArray(msg); 26760f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith msgSerializedSize = msg.getSerializedSize(); 2677382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(3, result.length); 26780f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith assertEquals(3, msgSerializedSize); 26790f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith } 26800f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith 26810f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith /** 268264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * Test that a bug in skipRawBytes() has been fixed: if the skip skips 268364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * exactly up to a limit, this should not break things. 268464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci */ 268564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testSkipRawBytesBug() throws Exception { 268664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte[] rawBytes = new byte[] { 1, 2 }; 268764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci CodedInputByteBufferNano input = CodedInputByteBufferNano.newInstance(rawBytes); 268864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 268964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int limit = input.pushLimit(1); 269064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci input.skipRawBytes(1); 269164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci input.popLimit(limit); 269264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(2, input.readRawByte()); 269364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 269464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 269564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /** 269664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * Test that a bug in skipRawBytes() has been fixed: if the skip skips 269764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * past the end of a buffer with a limit that has been set past the end of 269864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * that buffer, this should not break things. 269964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci */ 270064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci public void testSkipRawBytesPastEndOfBufferWithLimit() throws Exception { 270164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci byte[] rawBytes = new byte[] { 1, 2, 3, 4, 5 }; 270264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci CodedInputByteBufferNano input = CodedInputByteBufferNano.newInstance(rawBytes); 270364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 270464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int limit = input.pushLimit(4); 270564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // In order to expose the bug we need to read at least one byte to prime the 270664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // buffer inside the CodedInputStream. 270764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(1, input.readRawByte()); 270864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci // Skip to the end of the limit. 270964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci input.skipRawBytes(3); 271064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertTrue(input.isAtEnd()); 271164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci input.popLimit(limit); 271264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci assertEquals(5, input.readRawByte()); 271364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 271447107914acbad70ff4db1664d3664ccc994315afAndrew Flynn 271547107914acbad70ff4db1664d3664ccc994315afAndrew Flynn // Test a smattering of various proto types for printing 271647107914acbad70ff4db1664d3664ccc994315afAndrew Flynn public void testMessageNanoPrinter() { 271747107914acbad70ff4db1664d3664ccc994315afAndrew Flynn TestAllTypesNano msg = new TestAllTypesNano(); 271847107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.optionalInt32 = 14; 271947107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.optionalFloat = 42.3f; 272047107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.optionalString = "String \"with' both quotes"; 272162a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar msg.optionalBytes = new byte[] {'"', '\0', 1, 8}; 272247107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.optionalGroup = new TestAllTypesNano.OptionalGroup(); 272347107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.optionalGroup.a = 15; 272447107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedInt64 = new long[2]; 272547107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedInt64[0] = 1L; 272647107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedInt64[1] = -1L; 272747107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedBytes = new byte[2][]; 272862a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar msg.repeatedBytes[1] = new byte[] {'h', 'e', 'l', 'l', 'o'}; 272947107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedGroup = new TestAllTypesNano.RepeatedGroup[2]; 273047107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedGroup[0] = new TestAllTypesNano.RepeatedGroup(); 273147107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedGroup[0].a = -27; 273247107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedGroup[1] = new TestAllTypesNano.RepeatedGroup(); 273347107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedGroup[1].a = -72; 273447107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.optionalNestedMessage = new TestAllTypesNano.NestedMessage(); 273547107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.optionalNestedMessage.bb = 7; 273647107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedNestedMessage = new TestAllTypesNano.NestedMessage[2]; 273747107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedNestedMessage[0] = new TestAllTypesNano.NestedMessage(); 273847107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedNestedMessage[0].bb = 77; 273947107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedNestedMessage[1] = new TestAllTypesNano.NestedMessage(); 274047107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedNestedMessage[1].bb = 88; 274147107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.optionalNestedEnum = TestAllTypesNano.BAZ; 274247107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedNestedEnum = new int[2]; 274347107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedNestedEnum[0] = TestAllTypesNano.BAR; 274447107914acbad70ff4db1664d3664ccc994315afAndrew Flynn msg.repeatedNestedEnum[1] = TestAllTypesNano.FOO; 274562a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar msg.repeatedStringPiece = new String[] {null, "world"}; 274647107914acbad70ff4db1664d3664ccc994315afAndrew Flynn 274747107914acbad70ff4db1664d3664ccc994315afAndrew Flynn String protoPrint = msg.toString(); 274862a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("optional_int32: 14")); 274962a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("optional_float: 42.3")); 275062a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("optional_double: 0.0")); 275162a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("optional_string: \"String \\u0022with\\u0027 both quotes\"")); 275262a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("optional_bytes: \"\\\"\\000\\001\\010\"")); 275362a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("optional_group <\n a: 15\n>")); 275462a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar 27556b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn assertTrue(protoPrint.contains("repeated_int64: 1\nrepeated_int64: -1")); 275662a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertFalse(protoPrint.contains("repeated_bytes: \"\"")); // null should be dropped 275762a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("repeated_bytes: \"hello\"")); 275862a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("repeated_group <\n a: -27\n>\n" 275962a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar + "repeated_group <\n a: -72\n>")); 276062a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("optional_nested_message <\n bb: 7\n>")); 276162a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("repeated_nested_message <\n bb: 77\n>\n" 276262a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar + "repeated_nested_message <\n bb: 88\n>")); 276362a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("optional_nested_enum: 3")); 276462a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("repeated_nested_enum: 2\nrepeated_nested_enum: 1")); 276562a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("default_int32: 41")); 276662a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("default_string: \"hello\"")); 276762a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertFalse(protoPrint.contains("repeated_string_piece: \"\"")); // null should be dropped 276862a22a732fb134e5f34dd3e01920933ca5b16346Nicholas Seckar assertTrue(protoPrint.contains("repeated_string_piece: \"world\"")); 276947107914acbad70ff4db1664d3664ccc994315afAndrew Flynn } 27700e055f079f53b07de3705838a7b4742ce56839f8Brian Duff 27716b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn public void testMessageNanoPrinterAccessors() throws Exception { 27726b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn TestNanoAccessors msg = new TestNanoAccessors(); 27736b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.setOptionalInt32(13); 27746b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.setOptionalString("foo"); 27756b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.setOptionalBytes(new byte[] {'"', '\0', 1, 8}); 27766b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.optionalNestedMessage = new TestNanoAccessors.NestedMessage(); 27776b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.optionalNestedMessage.setBb(7); 27786b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.setOptionalNestedEnum(TestNanoAccessors.BAZ); 27796b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.repeatedInt32 = new int[] { 1, -1 }; 27806b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.repeatedString = new String[] { "Hello", "world" }; 27816b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.repeatedBytes = new byte[2][]; 27826b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.repeatedBytes[1] = new byte[] {'h', 'e', 'l', 'l', 'o'}; 27836b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.repeatedNestedMessage = new TestNanoAccessors.NestedMessage[2]; 27846b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.repeatedNestedMessage[0] = new TestNanoAccessors.NestedMessage(); 27856b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.repeatedNestedMessage[0].setBb(5); 27866b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.repeatedNestedMessage[1] = new TestNanoAccessors.NestedMessage(); 27876b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.repeatedNestedMessage[1].setBb(6); 27886b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.repeatedNestedEnum = new int[] { TestNanoAccessors.FOO, TestNanoAccessors.BAR }; 27896b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn msg.id = 33; 27906b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn 27916b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn String protoPrint = msg.toString(); 27926b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn assertTrue(protoPrint.contains("optional_int32: 13")); 27936b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn assertTrue(protoPrint.contains("optional_string: \"foo\"")); 27946b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn assertTrue(protoPrint.contains("optional_bytes: \"\\\"\\000\\001\\010\"")); 27956b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn assertTrue(protoPrint.contains("optional_nested_message <\n bb: 7\n>")); 27966b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn assertTrue(protoPrint.contains("optional_nested_enum: 3")); 27976b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn assertTrue(protoPrint.contains("repeated_int32: 1\nrepeated_int32: -1")); 27986b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn assertTrue(protoPrint.contains("repeated_string: \"Hello\"\nrepeated_string: \"world\"")); 27996b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn assertFalse(protoPrint.contains("repeated_bytes: \"\"")); // null should be dropped 28006b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn assertTrue(protoPrint.contains("repeated_bytes: \"hello\"")); 28016b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn assertTrue(protoPrint.contains("repeated_nested_message <\n bb: 5\n>\n" 28026b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn + "repeated_nested_message <\n bb: 6\n>")); 28036b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn assertTrue(protoPrint.contains("repeated_nested_enum: 1\nrepeated_nested_enum: 2")); 28046b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn assertTrue(protoPrint.contains("id: 33")); 28056b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn } 28066b594c228e7954eb98353ad8e242b83fb255a277Andrew Flynn 28070e055f079f53b07de3705838a7b4742ce56839f8Brian Duff public void testExtensions() throws Exception { 28080e055f079f53b07de3705838a7b4742ce56839f8Brian Duff Extensions.ExtendableMessage message = new Extensions.ExtendableMessage(); 28090e055f079f53b07de3705838a7b4742ce56839f8Brian Duff message.field = 5; 2810382ddccb550e1c822ef26a0e65988998f7446624Max Cai int[] int32s = {1, 2}; 2811382ddccb550e1c822ef26a0e65988998f7446624Max Cai int[] uint32s = {3, 4}; 2812382ddccb550e1c822ef26a0e65988998f7446624Max Cai int[] sint32s = {-5, -6}; 2813382ddccb550e1c822ef26a0e65988998f7446624Max Cai long[] int64s = {7, 8}; 2814382ddccb550e1c822ef26a0e65988998f7446624Max Cai long[] uint64s = {9, 10}; 2815382ddccb550e1c822ef26a0e65988998f7446624Max Cai long[] sint64s = {-11, -12}; 2816382ddccb550e1c822ef26a0e65988998f7446624Max Cai int[] fixed32s = {13, 14}; 2817382ddccb550e1c822ef26a0e65988998f7446624Max Cai int[] sfixed32s = {-15, -16}; 2818382ddccb550e1c822ef26a0e65988998f7446624Max Cai long[] fixed64s = {17, 18}; 2819382ddccb550e1c822ef26a0e65988998f7446624Max Cai long[] sfixed64s = {-19, -20}; 2820382ddccb550e1c822ef26a0e65988998f7446624Max Cai boolean[] bools = {true, false}; 2821382ddccb550e1c822ef26a0e65988998f7446624Max Cai float[] floats = {2.1f, 2.2f}; 2822382ddccb550e1c822ef26a0e65988998f7446624Max Cai double[] doubles = {2.3, 2.4}; 2823382ddccb550e1c822ef26a0e65988998f7446624Max Cai int[] enums = {Extensions.SECOND_VALUE, Extensions.FIRST_VALUE}; 2824382ddccb550e1c822ef26a0e65988998f7446624Max Cai String[] strings = {"vijfentwintig", "twenty-six"}; 2825382ddccb550e1c822ef26a0e65988998f7446624Max Cai byte[][] bytess = {{2, 7}, {2, 8}}; 2826382ddccb550e1c822ef26a0e65988998f7446624Max Cai AnotherMessage another1 = new AnotherMessage(); 2827382ddccb550e1c822ef26a0e65988998f7446624Max Cai another1.string = "er shi jiu"; 2828382ddccb550e1c822ef26a0e65988998f7446624Max Cai another1.value = false; 2829382ddccb550e1c822ef26a0e65988998f7446624Max Cai AnotherMessage another2 = new AnotherMessage(); 2830382ddccb550e1c822ef26a0e65988998f7446624Max Cai another2.string = "trente"; 2831382ddccb550e1c822ef26a0e65988998f7446624Max Cai another2.value = true; 2832382ddccb550e1c822ef26a0e65988998f7446624Max Cai AnotherMessage[] messages = {another1, another2}; 2833382ddccb550e1c822ef26a0e65988998f7446624Max Cai RepeatedExtensions.RepeatedGroup group1 = new RepeatedExtensions.RepeatedGroup(); 2834382ddccb550e1c822ef26a0e65988998f7446624Max Cai group1.a = 31; 2835382ddccb550e1c822ef26a0e65988998f7446624Max Cai RepeatedExtensions.RepeatedGroup group2 = new RepeatedExtensions.RepeatedGroup(); 2836382ddccb550e1c822ef26a0e65988998f7446624Max Cai group2.a = 32; 2837382ddccb550e1c822ef26a0e65988998f7446624Max Cai RepeatedExtensions.RepeatedGroup[] groups = {group1, group2}; 28380f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedInt32)); 2839382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedInt32, int32s); 28400f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedInt32)); 28410f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedUint32)); 2842382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedUint32, uint32s); 28430f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedUint32)); 2844382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedSint32, sint32s); 28450f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedInt64)); 2846382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedInt64, int64s); 28470f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedInt64)); 28480f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedUint64)); 2849382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedUint64, uint64s); 28500f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedUint64)); 28510f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedSint64)); 2852382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedSint64, sint64s); 28530f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedSint64)); 28540f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedFixed32)); 2855382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedFixed32, fixed32s); 28560f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedFixed32)); 28570f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedSfixed32)); 2858382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedSfixed32, sfixed32s); 28590f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedSfixed32)); 28600f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedFixed64)); 2861382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedFixed64, fixed64s); 28620f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedFixed64)); 28630f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedSfixed64)); 2864382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedSfixed64, sfixed64s); 28650f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedSfixed64)); 28660f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedBool)); 2867382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedBool, bools); 28680f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedBool)); 28690f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedFloat)); 2870382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedFloat, floats); 28710f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedFloat)); 28720f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedDouble)); 2873382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedDouble, doubles); 28740f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedDouble)); 28750f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedEnum)); 2876382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedEnum, enums); 28770f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedEnum)); 28780f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedString)); 2879382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedString, strings); 28800f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedString)); 28810f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedBytes)); 2882382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedBytes, bytess); 28830f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedBytes)); 28840f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedMessage)); 2885382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedMessage, messages); 28860f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedMessage)); 28870f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(RepeatedExtensions.repeatedGroup)); 2888382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(RepeatedExtensions.repeatedGroup, groups); 28890f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(RepeatedExtensions.repeatedGroup)); 28900e055f079f53b07de3705838a7b4742ce56839f8Brian Duff 28910e055f079f53b07de3705838a7b4742ce56839f8Brian Duff byte[] data = MessageNano.toByteArray(message); 2892382ddccb550e1c822ef26a0e65988998f7446624Max Cai message = Extensions.ExtendableMessage.parseFrom(data); 2893382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(5, message.field); 2894382ddccb550e1c822ef26a0e65988998f7446624Max Cai 2895382ddccb550e1c822ef26a0e65988998f7446624Max Cai // Test reading back using SingularExtensions: the retrieved value should equal the last 2896382ddccb550e1c822ef26a0e65988998f7446624Max Cai // in each array. 2897382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(int32s[1], (int) message.getExtension(SingularExtensions.someInt32)); 2898382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(uint32s[1], (int) message.getExtension(SingularExtensions.someUint32)); 2899382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(sint32s[1], (int) message.getExtension(SingularExtensions.someSint32)); 2900382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(int64s[1], (long) message.getExtension(SingularExtensions.someInt64)); 2901382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(uint64s[1], (long) message.getExtension(SingularExtensions.someUint64)); 2902382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(sint64s[1], (long) message.getExtension(SingularExtensions.someSint64)); 2903382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(fixed32s[1], (int) message.getExtension(SingularExtensions.someFixed32)); 2904382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(sfixed32s[1], (int) message.getExtension(SingularExtensions.someSfixed32)); 2905382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(fixed64s[1], (long) message.getExtension(SingularExtensions.someFixed64)); 2906382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(sfixed64s[1], (long) message.getExtension(SingularExtensions.someSfixed64)); 2907382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(bools[1], (boolean) message.getExtension(SingularExtensions.someBool)); 2908382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(floats[1], (float) message.getExtension(SingularExtensions.someFloat)); 2909382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(doubles[1], (double) message.getExtension(SingularExtensions.someDouble)); 2910382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(enums[1], (int) message.getExtension(SingularExtensions.someEnum)); 2911382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(strings[1], message.getExtension(SingularExtensions.someString)); 2912382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(bytess[1], message.getExtension(SingularExtensions.someBytes))); 2913382ddccb550e1c822ef26a0e65988998f7446624Max Cai AnotherMessage deserializedMessage = message.getExtension(SingularExtensions.someMessage); 2914382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(another2.string, deserializedMessage.string); 2915382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(another2.value, deserializedMessage.value); 2916382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(group2.a, message.getExtension(SingularExtensions.someGroup).a); 2917382ddccb550e1c822ef26a0e65988998f7446624Max Cai 2918382ddccb550e1c822ef26a0e65988998f7446624Max Cai // Test reading back using RepeatedExtensions: the arrays should be equal. 2919cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira message = Extensions.ExtendableMessage.parseFrom(data); 2920cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira assertEquals(5, message.field); 2921382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(int32s, message.getExtension(RepeatedExtensions.repeatedInt32))); 2922382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(uint32s, message.getExtension(RepeatedExtensions.repeatedUint32))); 2923382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(sint32s, message.getExtension(RepeatedExtensions.repeatedSint32))); 2924382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(int64s, message.getExtension(RepeatedExtensions.repeatedInt64))); 2925382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(uint64s, message.getExtension(RepeatedExtensions.repeatedUint64))); 2926382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(sint64s, message.getExtension(RepeatedExtensions.repeatedSint64))); 2927382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(fixed32s, message.getExtension(RepeatedExtensions.repeatedFixed32))); 2928382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(sfixed32s, message.getExtension(RepeatedExtensions.repeatedSfixed32))); 2929382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(fixed64s, message.getExtension(RepeatedExtensions.repeatedFixed64))); 2930382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(sfixed64s, message.getExtension(RepeatedExtensions.repeatedSfixed64))); 2931382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(bools, message.getExtension(RepeatedExtensions.repeatedBool))); 2932382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(floats, message.getExtension(RepeatedExtensions.repeatedFloat))); 2933382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(doubles, message.getExtension(RepeatedExtensions.repeatedDouble))); 2934382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(enums, message.getExtension(RepeatedExtensions.repeatedEnum))); 2935382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(strings, message.getExtension(RepeatedExtensions.repeatedString))); 2936382ddccb550e1c822ef26a0e65988998f7446624Max Cai byte[][] deserializedRepeatedBytes = message.getExtension(RepeatedExtensions.repeatedBytes); 2937382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(2, deserializedRepeatedBytes.length); 2938382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(bytess[0], deserializedRepeatedBytes[0])); 2939382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(bytess[1], deserializedRepeatedBytes[1])); 2940382ddccb550e1c822ef26a0e65988998f7446624Max Cai AnotherMessage[] deserializedRepeatedMessage = 2941382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.getExtension(RepeatedExtensions.repeatedMessage); 2942382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(2, deserializedRepeatedMessage.length); 2943382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(another1.string, deserializedRepeatedMessage[0].string); 2944382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(another1.value, deserializedRepeatedMessage[0].value); 2945382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(another2.string, deserializedRepeatedMessage[1].string); 2946382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(another2.value, deserializedRepeatedMessage[1].value); 2947382ddccb550e1c822ef26a0e65988998f7446624Max Cai RepeatedExtensions.RepeatedGroup[] deserializedRepeatedGroup = 2948382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.getExtension(RepeatedExtensions.repeatedGroup); 2949382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(2, deserializedRepeatedGroup.length); 2950382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(group1.a, deserializedRepeatedGroup[0].a); 2951382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertEquals(group2.a, deserializedRepeatedGroup[1].a); 2952382ddccb550e1c822ef26a0e65988998f7446624Max Cai 2953cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira message = Extensions.ExtendableMessage.parseFrom(data); 2954cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira assertEquals(5, message.field); 29550f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira // Test hasExtension using PackedExtensions. 29560f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedInt32)); 29570f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedUint32)); 29580f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedSint32)); 29590f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedInt64)); 29600f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedUint64)); 29610f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedSint64)); 29620f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedFixed32)); 29630f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedSfixed32)); 29640f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedFixed64)); 29650f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedSfixed64)); 29660f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedBool)); 29670f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedFloat)); 29680f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedDouble)); 29690f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(PackedExtensions.packedEnum)); 29700f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira 29710f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira // Test reading back using PackedExtensions: the arrays should be equal, even the fields 29720f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira // are non-packed. 2973382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(int32s, message.getExtension(PackedExtensions.packedInt32))); 2974382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(uint32s, message.getExtension(PackedExtensions.packedUint32))); 2975382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(sint32s, message.getExtension(PackedExtensions.packedSint32))); 2976382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(int64s, message.getExtension(PackedExtensions.packedInt64))); 2977382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(uint64s, message.getExtension(PackedExtensions.packedUint64))); 2978382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(sint64s, message.getExtension(PackedExtensions.packedSint64))); 2979382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(fixed32s, message.getExtension(PackedExtensions.packedFixed32))); 2980382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(sfixed32s, message.getExtension(PackedExtensions.packedSfixed32))); 2981382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(fixed64s, message.getExtension(PackedExtensions.packedFixed64))); 2982382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(sfixed64s, message.getExtension(PackedExtensions.packedSfixed64))); 2983382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(bools, message.getExtension(PackedExtensions.packedBool))); 2984382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(floats, message.getExtension(PackedExtensions.packedFloat))); 2985382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(doubles, message.getExtension(PackedExtensions.packedDouble))); 2986382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(enums, message.getExtension(PackedExtensions.packedEnum))); 2987382ddccb550e1c822ef26a0e65988998f7446624Max Cai 2988382ddccb550e1c822ef26a0e65988998f7446624Max Cai // Now set the packable extension values using PackedExtensions so they're serialized packed. 2989382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedInt32, int32s); 2990382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedUint32, uint32s); 2991382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedSint32, sint32s); 2992382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedInt64, int64s); 2993382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedUint64, uint64s); 2994382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedSint64, sint64s); 2995382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedFixed32, fixed32s); 2996382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedSfixed32, sfixed32s); 2997382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedFixed64, fixed64s); 2998382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedSfixed64, sfixed64s); 2999382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedBool, bools); 3000382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedFloat, floats); 3001382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedDouble, doubles); 3002382ddccb550e1c822ef26a0e65988998f7446624Max Cai message.setExtension(PackedExtensions.packedEnum, enums); 3003382ddccb550e1c822ef26a0e65988998f7446624Max Cai 3004382ddccb550e1c822ef26a0e65988998f7446624Max Cai // And read back using non-packed RepeatedExtensions. 3005382ddccb550e1c822ef26a0e65988998f7446624Max Cai byte[] data2 = MessageNano.toByteArray(message); 3006382ddccb550e1c822ef26a0e65988998f7446624Max Cai message = MessageNano.mergeFrom(new Extensions.ExtendableMessage(), data2); 3007382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(int32s, message.getExtension(RepeatedExtensions.repeatedInt32))); 3008382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(uint32s, message.getExtension(RepeatedExtensions.repeatedUint32))); 3009382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(sint32s, message.getExtension(RepeatedExtensions.repeatedSint32))); 3010382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(int64s, message.getExtension(RepeatedExtensions.repeatedInt64))); 3011382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(uint64s, message.getExtension(RepeatedExtensions.repeatedUint64))); 3012382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(sint64s, message.getExtension(RepeatedExtensions.repeatedSint64))); 3013382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(fixed32s, message.getExtension(RepeatedExtensions.repeatedFixed32))); 3014382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(sfixed32s, message.getExtension(RepeatedExtensions.repeatedSfixed32))); 3015382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(fixed64s, message.getExtension(RepeatedExtensions.repeatedFixed64))); 3016382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(sfixed64s, message.getExtension(RepeatedExtensions.repeatedSfixed64))); 3017382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(bools, message.getExtension(RepeatedExtensions.repeatedBool))); 3018382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(floats, message.getExtension(RepeatedExtensions.repeatedFloat))); 3019382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(doubles, message.getExtension(RepeatedExtensions.repeatedDouble))); 3020382ddccb550e1c822ef26a0e65988998f7446624Max Cai assertTrue(Arrays.equals(enums, message.getExtension(RepeatedExtensions.repeatedEnum))); 3021bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff 3022bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff // Clone the message and ensure it's still equal. 3023bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff Extensions.ExtendableMessage clone = message.clone(); 3024bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff assertEquals(clone, message); 30250e055f079f53b07de3705838a7b4742ce56839f8Brian Duff } 30260e055f079f53b07de3705838a7b4742ce56839f8Brian Duff 30271ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse public void testNullExtensions() throws Exception { 30281ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse // Check that clearing the extension on an empty message is a no-op. 30291ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse Extensions.ExtendableMessage message = new Extensions.ExtendableMessage(); 30300f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(SingularExtensions.someMessage)); 30311ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse message.setExtension(SingularExtensions.someMessage, null); 30320f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(SingularExtensions.someMessage)); 30331ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse assertEquals(0, MessageNano.toByteArray(message).length); 30341ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse 30351ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse // Check that the message is empty after setting and clearing an extension. 30361ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse AnotherMessage another = new AnotherMessage(); 30370f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(SingularExtensions.someMessage)); 30381ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse message.setExtension(SingularExtensions.someMessage, another); 30390f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertTrue(message.hasExtension(SingularExtensions.someMessage)); 30401ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse assertTrue(MessageNano.toByteArray(message).length > 0); 30411ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse message.setExtension(SingularExtensions.someMessage, null); 30420f67b212cd169ccf83221273ed88504d7e3f8165Juan Silveira assertFalse(message.hasExtension(SingularExtensions.someMessage)); 30431ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse assertEquals(0, MessageNano.toByteArray(message).length); 30441ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse } 30451ee2760aed05bf072a05fd7b6aeb158691a5dfbcJan-Willem Maarse 3046cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira public void testExtensionsMutation() { 3047cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira Extensions.ExtendableMessage extendableMessage = new Extensions.ExtendableMessage(); 3048cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(SingularExtensions.someMessage, 3049cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira new Extensions.AnotherMessage()); 3050cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira 3051cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(SingularExtensions.someMessage).string = "not empty"; 3052cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira 3053cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira assertEquals("not empty", 3054cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(SingularExtensions.someMessage).string); 3055cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira } 3056cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira 3057cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira public void testExtensionsMutation_Equals() throws InvalidProtocolBufferNanoException { 3058cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira Extensions.ExtendableMessage extendableMessage = new Extensions.ExtendableMessage(); 3059cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.field = 5; 3060cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira int int32 = 42; 3061cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira int[] uint32s = {3, 4}; 3062cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira int[] sint32s = {-5, -6}; 3063cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira long[] int64s = {7, 8}; 3064cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira long[] uint64s = {9, 10}; 3065cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira long[] sint64s = {-11, -12}; 3066cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira int[] fixed32s = {13, 14}; 3067cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira int[] sfixed32s = {-15, -16}; 3068cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira long[] fixed64s = {17, 18}; 3069cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira long[] sfixed64s = {-19, -20}; 3070cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira boolean[] bools = {true, false}; 3071cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira float[] floats = {2.1f, 2.2f}; 3072cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira double[] doubles = {2.3, 2.4}; 3073cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira int[] enums = {Extensions.SECOND_VALUE, Extensions.FIRST_VALUE}; 3074cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira String[] strings = {"vijfentwintig", "twenty-six"}; 3075cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira byte[][] bytess = {{2, 7}, {2, 8}}; 3076cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira AnotherMessage another1 = new AnotherMessage(); 3077cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira another1.string = "er shi jiu"; 3078cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira another1.value = false; 3079cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira AnotherMessage another2 = new AnotherMessage(); 3080cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira another2.string = "trente"; 3081cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira another2.value = true; 3082cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira AnotherMessage[] messages = {another1, another2}; 3083cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira RepeatedExtensions.RepeatedGroup group1 = new RepeatedExtensions.RepeatedGroup(); 3084cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira group1.a = 31; 3085cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira RepeatedExtensions.RepeatedGroup group2 = new RepeatedExtensions.RepeatedGroup(); 3086cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira group2.a = 32; 3087cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira RepeatedExtensions.RepeatedGroup[] groups = {group1, group2}; 3088cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(SingularExtensions.someInt32, int32); 3089cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedUint32, uint32s); 3090cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedSint32, sint32s); 3091cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedInt64, int64s); 3092cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedUint64, uint64s); 3093cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedSint64, sint64s); 3094cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedFixed32, fixed32s); 3095cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedSfixed32, sfixed32s); 3096cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedFixed64, fixed64s); 3097cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedSfixed64, sfixed64s); 3098cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedBool, bools); 3099cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedFloat, floats); 3100cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedDouble, doubles); 3101cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedEnum, enums); 3102cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedString, strings); 3103cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedBytes, bytess); 3104cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedMessage, messages); 3105cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(RepeatedExtensions.repeatedGroup, groups); 3106cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira 3107cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira byte[] data = MessageNano.toByteArray(extendableMessage); 3108cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira 3109cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage = Extensions.ExtendableMessage.parseFrom(data); 3110cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira Extensions.ExtendableMessage messageCopy = Extensions.ExtendableMessage.parseFrom(data); 3111cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira 3112cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira // Without deserialising. 3113cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira assertEquals(extendableMessage, messageCopy); 3114cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira assertEquals(extendableMessage.hashCode(), messageCopy.hashCode()); 3115cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira 3116cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira // Only one deserialized. 3117cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(SingularExtensions.someInt32); 3118cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedUint32); 3119cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedSint32); 3120cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedInt64); 3121cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedUint64); 3122cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedSint64); 3123cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedFixed32); 3124cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedSfixed32); 3125cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedFixed64); 3126cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedSfixed64); 3127cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedBool); 3128cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedFloat); 3129cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedDouble); 3130cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedEnum); 3131cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedString); 3132cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedBytes); 3133cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedMessage); 3134cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(RepeatedExtensions.repeatedGroup); 3135cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira assertEquals(extendableMessage, messageCopy); 3136cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira assertEquals(extendableMessage.hashCode(), messageCopy.hashCode()); 3137cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira 3138cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira // Both deserialized. 3139cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(SingularExtensions.someInt32); 3140cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedUint32); 3141cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedSint32); 3142cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedInt64); 3143cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedUint64); 3144cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedSint64); 3145cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedFixed32); 3146cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedSfixed32); 3147cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedFixed64); 3148cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedSfixed64); 3149cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedBool); 3150cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedFloat); 3151cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedDouble); 3152cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedEnum); 3153cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedString); 3154cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedBytes); 3155cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedMessage); 3156cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedGroup); 3157cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira assertEquals(extendableMessage, messageCopy); 3158cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira assertEquals(extendableMessage.hashCode(), messageCopy.hashCode()); 3159cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira 3160cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira // Change one, make sure they are still different. 3161cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira messageCopy.getExtension(RepeatedExtensions.repeatedMessage)[0].string = "not empty"; 3162cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira assertFalse(extendableMessage.equals(messageCopy)); 3163cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira 3164cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira // Even if the extension hasn't been deserialized. 3165cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage = Extensions.ExtendableMessage.parseFrom(data); 3166cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira assertFalse(extendableMessage.equals(messageCopy)); 3167cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira } 3168cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira 3169cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira public void testExtensionsCaching() { 3170cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira Extensions.ExtendableMessage extendableMessage = new Extensions.ExtendableMessage(); 3171cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.setExtension(SingularExtensions.someMessage, 3172cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira new Extensions.AnotherMessage()); 3173cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira assertSame("Consecutive calls to getExtensions should return the same object", 3174cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(SingularExtensions.someMessage), 3175cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira extendableMessage.getExtension(SingularExtensions.someMessage)); 3176cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira } 3177cf1b416ae1327a26dd53a691fc1b3e30eec8e6a6Juan Silveira 31780e055f079f53b07de3705838a7b4742ce56839f8Brian Duff public void testUnknownFields() throws Exception { 31790e055f079f53b07de3705838a7b4742ce56839f8Brian Duff // Check that we roundtrip (serialize and deserialize) unrecognized fields. 31800e055f079f53b07de3705838a7b4742ce56839f8Brian Duff AnotherMessage message = new AnotherMessage(); 31810e055f079f53b07de3705838a7b4742ce56839f8Brian Duff message.string = "Hello World"; 31820e055f079f53b07de3705838a7b4742ce56839f8Brian Duff message.value = false; 31830e055f079f53b07de3705838a7b4742ce56839f8Brian Duff 31840e055f079f53b07de3705838a7b4742ce56839f8Brian Duff byte[] bytes = MessageNano.toByteArray(message); 31850e055f079f53b07de3705838a7b4742ce56839f8Brian Duff int extraFieldSize = CodedOutputStream.computeStringSize(1001, "This is an unknown field"); 31860e055f079f53b07de3705838a7b4742ce56839f8Brian Duff byte[] newBytes = new byte[bytes.length + extraFieldSize]; 31870e055f079f53b07de3705838a7b4742ce56839f8Brian Duff System.arraycopy(bytes, 0, newBytes, 0, bytes.length); 31880e055f079f53b07de3705838a7b4742ce56839f8Brian Duff CodedOutputStream.newInstance(newBytes, bytes.length, extraFieldSize).writeString(1001, 31890e055f079f53b07de3705838a7b4742ce56839f8Brian Duff "This is an unknown field"); 31900e055f079f53b07de3705838a7b4742ce56839f8Brian Duff 31910e055f079f53b07de3705838a7b4742ce56839f8Brian Duff // Deserialize with an unknown field. 31920e055f079f53b07de3705838a7b4742ce56839f8Brian Duff AnotherMessage deserialized = AnotherMessage.parseFrom(newBytes); 31930e055f079f53b07de3705838a7b4742ce56839f8Brian Duff byte[] serialized = MessageNano.toByteArray(deserialized); 31940e055f079f53b07de3705838a7b4742ce56839f8Brian Duff 31950e055f079f53b07de3705838a7b4742ce56839f8Brian Duff assertEquals(newBytes.length, serialized.length); 31960e055f079f53b07de3705838a7b4742ce56839f8Brian Duff 31970e055f079f53b07de3705838a7b4742ce56839f8Brian Duff // Clear, and make sure it clears everything. 31980e055f079f53b07de3705838a7b4742ce56839f8Brian Duff deserialized.clear(); 31990e055f079f53b07de3705838a7b4742ce56839f8Brian Duff assertEquals(0, MessageNano.toByteArray(deserialized).length); 32000e055f079f53b07de3705838a7b4742ce56839f8Brian Duff } 32010e055f079f53b07de3705838a7b4742ce56839f8Brian Duff 320219641419a381509bddfc2d0b5d60a411b67b105bBrian Duff public void testMergeFrom() throws Exception { 320319641419a381509bddfc2d0b5d60a411b67b105bBrian Duff SimpleMessageNano message = new SimpleMessageNano(); 320419641419a381509bddfc2d0b5d60a411b67b105bBrian Duff message.d = 123; 320519641419a381509bddfc2d0b5d60a411b67b105bBrian Duff byte[] bytes = MessageNano.toByteArray(message); 320619641419a381509bddfc2d0b5d60a411b67b105bBrian Duff 320719641419a381509bddfc2d0b5d60a411b67b105bBrian Duff SimpleMessageNano newMessage = MessageNano.mergeFrom(new SimpleMessageNano(), bytes); 320819641419a381509bddfc2d0b5d60a411b67b105bBrian Duff assertEquals(message.d, newMessage.d); 320919641419a381509bddfc2d0b5d60a411b67b105bBrian Duff } 321019641419a381509bddfc2d0b5d60a411b67b105bBrian Duff 3211f4e01452f159ae6b53f5edd25fa647ca2919ae10Tom Chao public void testJavaKeyword() throws Exception { 3212f4e01452f159ae6b53f5edd25fa647ca2919ae10Tom Chao TestAllTypesNano msg = new TestAllTypesNano(); 3213f4e01452f159ae6b53f5edd25fa647ca2919ae10Tom Chao msg.synchronized_ = 123; 3214f4e01452f159ae6b53f5edd25fa647ca2919ae10Tom Chao assertEquals(123, msg.synchronized_); 3215f4e01452f159ae6b53f5edd25fa647ca2919ae10Tom Chao } 3216f4e01452f159ae6b53f5edd25fa647ca2919ae10Tom Chao 32170b8579237336f221711a0aac42400eb31a58fed3Brian Duff public void testReferenceTypesForPrimitives() throws Exception { 32180b8579237336f221711a0aac42400eb31a58fed3Brian Duff NanoReferenceTypes.TestAllTypesNano message = new NanoReferenceTypes.TestAllTypesNano(); 32190b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32200b8579237336f221711a0aac42400eb31a58fed3Brian Duff // Base check - when nothing is set, we serialize nothing. 32210b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, false); 32220b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32230b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultBool = true; 32240b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, true); 32250b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32260b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultBool = false; 32270b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, true); 32280b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32290b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultBool = null; 32300b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, false); 32310b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32320b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultInt32 = 5; 32330b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, true); 32340b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32350b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultInt32 = null; 32360b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, false); 32370b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32380b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultInt64 = 123456L; 32390b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, true); 32400b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32410b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultInt64 = null; 32420b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, false); 32430b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32440b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultFloat = 1f; 32450b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, true); 32460b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32470b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultFloat = null; 32480b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, false); 32490b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32500b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultDouble = 2.1; 32510b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, true); 32520b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32530b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultDouble = null; 32540b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, false); 32550b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32560b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultString = "hello"; 32570b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, true); 32580b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32590b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultString = null; 32600b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, false); 32610b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32620b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultBytes = new byte[] { 1, 2, 3 }; 32630b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, true); 32640b8579237336f221711a0aac42400eb31a58fed3Brian Duff 32650b8579237336f221711a0aac42400eb31a58fed3Brian Duff message.defaultBytes = null; 32660b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertHasWireData(message, false); 32670b8579237336f221711a0aac42400eb31a58fed3Brian Duff } 32680b8579237336f221711a0aac42400eb31a58fed3Brian Duff 3269ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff public void testHashCodeEquals() throws Exception { 3270ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff // Complete equality: 3271ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNano a = createMessageForHashCodeEqualsTest(); 3272ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNano aEquivalent = createMessageForHashCodeEqualsTest(); 3273ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3274a882d4b4b6801edb1e67fb17632d2da50ba22266Brian Duff assertTrue(MessageNano.messageNanoEquals(a, aEquivalent)); 3275a882d4b4b6801edb1e67fb17632d2da50ba22266Brian Duff assertFalse(MessageNano.messageNanoEquals(a, new TestAllTypesNano())); 3276a882d4b4b6801edb1e67fb17632d2da50ba22266Brian Duff 3277ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff // Null and empty array for repeated fields equality: 3278ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNano b = createMessageForHashCodeEqualsTest(); 3279ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff b.repeatedBool = null; 3280ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff b.repeatedFloat = new float[0]; 3281ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNano bEquivalent = createMessageForHashCodeEqualsTest(); 3282ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff bEquivalent.repeatedBool = new boolean[0]; 3283ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff bEquivalent.repeatedFloat = null; 3284ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3285ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff // Ref-element-type repeated fields use non-null subsequence equality: 3286ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNano c = createMessageForHashCodeEqualsTest(); 3287ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff c.repeatedString = null; 3288ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff c.repeatedStringPiece = new String[] {null, "one", null, "two"}; 3289ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff c.repeatedBytes = new byte[][] {{3, 4}, null}; 3290ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNano cEquivalent = createMessageForHashCodeEqualsTest(); 3291ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff cEquivalent.repeatedString = new String[3]; 3292ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff cEquivalent.repeatedStringPiece = new String[] {"one", "two", null}; 3293ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff cEquivalent.repeatedBytes = new byte[][] {{3, 4}}; 3294ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3295ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff // Complete equality for messages with has fields: 3296ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNanoHas d = createMessageWithHasForHashCodeEqualsTest(); 3297ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNanoHas dEquivalent = createMessageWithHasForHashCodeEqualsTest(); 3298ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3299ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff // If has-fields exist, fields with the same default values but 3300ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff // different has-field values are different. 3301ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNanoHas e = createMessageWithHasForHashCodeEqualsTest(); 3302ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff e.optionalInt32++; // make different from d 3303ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff e.hasDefaultString = false; 3304ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNanoHas eDifferent = createMessageWithHasForHashCodeEqualsTest(); 3305ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff eDifferent.optionalInt32 = e.optionalInt32; 3306ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff eDifferent.hasDefaultString = true; 3307ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3308ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff // Complete equality for messages with accessors: 3309ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestNanoAccessors f = createMessageWithAccessorsForHashCodeEqualsTest(); 3310ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestNanoAccessors fEquivalent = createMessageWithAccessorsForHashCodeEqualsTest(); 3311ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3312ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff // If using accessors, explicitly setting a field to its default value 3313ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff // should make the message different. 3314ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestNanoAccessors g = createMessageWithAccessorsForHashCodeEqualsTest(); 3315ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff g.setOptionalInt32(g.getOptionalInt32() + 1); // make different from f 3316ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff g.clearDefaultString(); 3317ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestNanoAccessors gDifferent = createMessageWithAccessorsForHashCodeEqualsTest(); 3318ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff gDifferent.setOptionalInt32(g.getOptionalInt32()); 3319ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff gDifferent.setDefaultString(g.getDefaultString()); 3320ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3321ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff // Complete equality for reference typed messages: 3322ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff NanoReferenceTypes.TestAllTypesNano h = createRefTypedMessageForHashCodeEqualsTest(); 3323ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff NanoReferenceTypes.TestAllTypesNano hEquivalent = createRefTypedMessageForHashCodeEqualsTest(); 3324ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3325ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff // Inequality of null and default value for reference typed messages: 3326ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff NanoReferenceTypes.TestAllTypesNano i = createRefTypedMessageForHashCodeEqualsTest(); 3327ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff i.optionalInt32 = 1; // make different from h 3328ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff i.optionalFloat = null; 3329ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff NanoReferenceTypes.TestAllTypesNano iDifferent = createRefTypedMessageForHashCodeEqualsTest(); 3330ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff iDifferent.optionalInt32 = i.optionalInt32; 3331ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff iDifferent.optionalFloat = 0.0f; 3332ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3333ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff HashMap<MessageNano, String> hashMap = new HashMap<MessageNano, String>(); 3334ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff hashMap.put(a, "a"); 3335ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff hashMap.put(b, "b"); 3336ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff hashMap.put(c, "c"); 3337ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff hashMap.put(d, "d"); 3338ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff hashMap.put(e, "e"); 3339ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff hashMap.put(f, "f"); 3340ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff hashMap.put(g, "g"); 3341ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff hashMap.put(h, "h"); 3342ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff hashMap.put(i, "i"); 3343ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3344ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals(9, hashMap.size()); // a-i should be different from each other. 3345ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3346ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("a", hashMap.get(a)); 3347ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("a", hashMap.get(aEquivalent)); 3348ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3349ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("b", hashMap.get(b)); 3350ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("b", hashMap.get(bEquivalent)); 3351ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3352ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("c", hashMap.get(c)); 3353ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("c", hashMap.get(cEquivalent)); 3354ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3355ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("d", hashMap.get(d)); 3356ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("d", hashMap.get(dEquivalent)); 3357ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3358ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("e", hashMap.get(e)); 3359ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertNull(hashMap.get(eDifferent)); 3360ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3361ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("f", hashMap.get(f)); 3362ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("f", hashMap.get(fEquivalent)); 3363ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3364ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("g", hashMap.get(g)); 3365ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertNull(hashMap.get(gDifferent)); 3366ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3367ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("h", hashMap.get(h)); 3368ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("h", hashMap.get(hEquivalent)); 3369ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3370ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertEquals("i", hashMap.get(i)); 3371ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff assertNull(hashMap.get(iDifferent)); 3372ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff } 3373ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3374ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff private TestAllTypesNano createMessageForHashCodeEqualsTest() { 3375ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNano message = new TestAllTypesNano(); 3376ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalInt32 = 5; 3377ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalInt64 = 777; 3378ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalFloat = 1.0f; 3379ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalDouble = 2.0; 3380ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalBool = true; 3381ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalString = "Hello"; 3382ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalBytes = new byte[] { 1, 2, 3 }; 3383ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedMessage = new TestAllTypesNano.NestedMessage(); 3384ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedMessage.bb = 27; 3385ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedEnum = TestAllTypesNano.BAR; 3386ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedInt32 = new int[] { 5, 6, 7, 8 }; 3387ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedInt64 = new long[] { 27L, 28L, 29L }; 3388ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedFloat = new float[] { 5.0f, 6.0f }; 3389ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedDouble = new double[] { 99.1, 22.5 }; 3390ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedBool = new boolean[] { true, false, true }; 3391ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedString = new String[] { "One", "Two" }; 3392ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedBytes = new byte[][] { { 2, 7 }, { 2, 7 } }; 3393ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedNestedMessage = new TestAllTypesNano.NestedMessage[] { 3394ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedMessage, 3395ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedMessage 3396ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff }; 3397ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedNestedEnum = new int[] { 3398ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNano.BAR, 3399ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNano.BAZ 3400ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff }; 3401ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff return message; 3402ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff } 3403ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3404ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff private TestAllTypesNanoHas createMessageWithHasForHashCodeEqualsTest() { 3405ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNanoHas message = new TestAllTypesNanoHas(); 3406ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalInt32 = 5; 3407ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalString = "Hello"; 3408ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalBytes = new byte[] { 1, 2, 3 }; 3409ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedMessage = new TestAllTypesNanoHas.NestedMessage(); 3410ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedMessage.bb = 27; 3411ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedEnum = TestAllTypesNano.BAR; 3412ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedInt32 = new int[] { 5, 6, 7, 8 }; 3413ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedString = new String[] { "One", "Two" }; 3414ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedBytes = new byte[][] { { 2, 7 }, { 2, 7 } }; 3415ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedNestedMessage = new TestAllTypesNanoHas.NestedMessage[] { 3416ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedMessage, 3417ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedMessage 3418ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff }; 3419ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedNestedEnum = new int[] { 3420ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNano.BAR, 3421ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNano.BAZ 3422ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff }; 3423ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff return message; 3424ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff } 3425ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3426ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff private TestNanoAccessors createMessageWithAccessorsForHashCodeEqualsTest() { 3427ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestNanoAccessors message = new TestNanoAccessors() 3428ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff .setOptionalInt32(5) 3429ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff .setOptionalString("Hello") 3430ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff .setOptionalBytes(new byte[] {1, 2, 3}) 343104e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai .setOptionalNestedEnum(TestNanoAccessors.BAR); 3432102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn message.optionalNestedMessage = new TestNanoAccessors.NestedMessage().setBb(27); 3433ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedInt32 = new int[] { 5, 6, 7, 8 }; 3434ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedString = new String[] { "One", "Two" }; 3435ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedBytes = new byte[][] { { 2, 7 }, { 2, 7 } }; 3436ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedNestedMessage = new TestNanoAccessors.NestedMessage[] { 3437102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn message.optionalNestedMessage, 3438102cfe65b9b9e2b458c3d0ec69d47e8fc40dc726Andrew Flynn message.optionalNestedMessage 3439ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff }; 3440ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedNestedEnum = new int[] { 3441ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNano.BAR, 3442ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff TestAllTypesNano.BAZ 3443ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff }; 3444ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff return message; 3445ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff } 3446ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 3447ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff private NanoReferenceTypes.TestAllTypesNano createRefTypedMessageForHashCodeEqualsTest() { 3448ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff NanoReferenceTypes.TestAllTypesNano message = new NanoReferenceTypes.TestAllTypesNano(); 3449ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalInt32 = 5; 3450ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalInt64 = 777L; 3451ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalFloat = 1.0f; 3452ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalDouble = 2.0; 3453ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalBool = true; 3454ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalString = "Hello"; 3455ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalBytes = new byte[] { 1, 2, 3 }; 3456ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedMessage = 3457ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff new NanoReferenceTypes.TestAllTypesNano.NestedMessage(); 3458ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedMessage.foo = 27; 3459ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedEnum = NanoReferenceTypes.TestAllTypesNano.BAR; 3460ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedInt32 = new int[] { 5, 6, 7, 8 }; 3461ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedInt64 = new long[] { 27L, 28L, 29L }; 3462ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedFloat = new float[] { 5.0f, 6.0f }; 3463ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedDouble = new double[] { 99.1, 22.5 }; 3464ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedBool = new boolean[] { true, false, true }; 3465ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedString = new String[] { "One", "Two" }; 3466ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedBytes = new byte[][] { { 2, 7 }, { 2, 7 } }; 3467ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedNestedMessage = 3468ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff new NanoReferenceTypes.TestAllTypesNano.NestedMessage[] { 3469ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedMessage, 3470ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.optionalNestedMessage 3471ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff }; 3472ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff message.repeatedNestedEnum = new int[] { 3473ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff NanoReferenceTypes.TestAllTypesNano.BAR, 3474ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff NanoReferenceTypes.TestAllTypesNano.BAZ 3475ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff }; 3476ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff return message; 3477ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff } 3478ccc48faf20dbf3b3cddcffe78d198876d543529bBrian Duff 347904e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai public void testEqualsWithSpecialFloatingPointValues() throws Exception { 348004e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai // Checks that the nano implementation complies with Object.equals() when treating 348104e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai // floating point numbers, i.e. NaN == NaN and +0.0 != -0.0. 348204e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai // This test assumes that the generated equals() implementations are symmetric, so 348304e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai // there will only be one direction for each equality check. 348404e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 348504e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai TestAllTypesNano m1 = new TestAllTypesNano(); 348604e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m1.optionalFloat = Float.NaN; 348704e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m1.optionalDouble = Double.NaN; 348804e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai TestAllTypesNano m2 = new TestAllTypesNano(); 348904e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m2.optionalFloat = Float.NaN; 349004e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m2.optionalDouble = Double.NaN; 349104e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m1.equals(m2)); 349204e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m1.equals( 349304e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai MessageNano.mergeFrom(new TestAllTypesNano(), MessageNano.toByteArray(m1)))); 349404e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 349504e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m1.optionalFloat = +0f; 349604e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m2.optionalFloat = -0f; 349704e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertFalse(m1.equals(m2)); 349804e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 349904e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m1.optionalFloat = -0f; 350004e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m1.optionalDouble = +0d; 350104e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m2.optionalDouble = -0d; 350204e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertFalse(m1.equals(m2)); 350304e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 350404e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m1.optionalDouble = -0d; 350504e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m1.equals(m2)); 350604e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertFalse(m1.equals(new TestAllTypesNano())); // -0 does not equals() the default +0 350704e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m1.equals( 350804e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai MessageNano.mergeFrom(new TestAllTypesNano(), MessageNano.toByteArray(m1)))); 350904e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 351004e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai // ------- 351104e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 351204e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai TestAllTypesNanoHas m3 = new TestAllTypesNanoHas(); 351304e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m3.optionalFloat = Float.NaN; 351404e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m3.hasOptionalFloat = true; 351504e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m3.optionalDouble = Double.NaN; 351604e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m3.hasOptionalDouble = true; 351704e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai TestAllTypesNanoHas m4 = new TestAllTypesNanoHas(); 351804e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m4.optionalFloat = Float.NaN; 351904e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m4.hasOptionalFloat = true; 352004e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m4.optionalDouble = Double.NaN; 352104e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m4.hasOptionalDouble = true; 352204e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m3.equals(m4)); 352304e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m3.equals( 352404e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai MessageNano.mergeFrom(new TestAllTypesNanoHas(), MessageNano.toByteArray(m3)))); 352504e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 352604e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m3.optionalFloat = +0f; 352704e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m4.optionalFloat = -0f; 352804e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertFalse(m3.equals(m4)); 352904e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 353004e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m3.optionalFloat = -0f; 353104e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m3.optionalDouble = +0d; 353204e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m4.optionalDouble = -0d; 353304e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertFalse(m3.equals(m4)); 353404e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 353504e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m3.optionalDouble = -0d; 353604e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m3.hasOptionalFloat = false; // -0 does not equals() the default +0, 353704e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m3.hasOptionalDouble = false; // so these incorrect 'has' flags should be disregarded. 353804e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m3.equals(m4)); // note: m4 has the 'has' flags set. 353904e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertFalse(m3.equals(new TestAllTypesNanoHas())); // note: the new message has +0 defaults 354004e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m3.equals( 354104e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai MessageNano.mergeFrom(new TestAllTypesNanoHas(), MessageNano.toByteArray(m3)))); 354204e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai // note: the deserialized message has the 'has' flags set. 354304e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 354404e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai // ------- 354504e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 354604e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai TestNanoAccessors m5 = new TestNanoAccessors(); 354704e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m5.setOptionalFloat(Float.NaN); 354804e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m5.setOptionalDouble(Double.NaN); 354904e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai TestNanoAccessors m6 = new TestNanoAccessors(); 355004e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m6.setOptionalFloat(Float.NaN); 355104e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m6.setOptionalDouble(Double.NaN); 355204e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m5.equals(m6)); 355304e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m5.equals( 355404e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai MessageNano.mergeFrom(new TestNanoAccessors(), MessageNano.toByteArray(m6)))); 355504e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 355604e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m5.setOptionalFloat(+0f); 355704e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m6.setOptionalFloat(-0f); 355804e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertFalse(m5.equals(m6)); 355904e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 356004e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m5.setOptionalFloat(-0f); 356104e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m5.setOptionalDouble(+0d); 356204e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m6.setOptionalDouble(-0d); 356304e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertFalse(m5.equals(m6)); 356404e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 356504e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m5.setOptionalDouble(-0d); 356604e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m5.equals(m6)); 356704e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertFalse(m5.equals(new TestNanoAccessors())); 356804e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m5.equals( 356904e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai MessageNano.mergeFrom(new TestNanoAccessors(), MessageNano.toByteArray(m6)))); 357004e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 357104e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai // ------- 357204e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 357304e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai NanoReferenceTypes.TestAllTypesNano m7 = new NanoReferenceTypes.TestAllTypesNano(); 357404e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m7.optionalFloat = Float.NaN; 357504e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m7.optionalDouble = Double.NaN; 357604e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai NanoReferenceTypes.TestAllTypesNano m8 = new NanoReferenceTypes.TestAllTypesNano(); 357704e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m8.optionalFloat = Float.NaN; 357804e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m8.optionalDouble = Double.NaN; 357904e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m7.equals(m8)); 358004e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m7.equals(MessageNano.mergeFrom( 358104e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai new NanoReferenceTypes.TestAllTypesNano(), MessageNano.toByteArray(m7)))); 358204e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 358304e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m7.optionalFloat = +0f; 358404e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m8.optionalFloat = -0f; 358504e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertFalse(m7.equals(m8)); 358604e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 358704e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m7.optionalFloat = -0f; 358804e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m7.optionalDouble = +0d; 358904e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m8.optionalDouble = -0d; 359004e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertFalse(m7.equals(m8)); 359104e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 359204e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai m7.optionalDouble = -0d; 359304e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m7.equals(m8)); 359404e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertFalse(m7.equals(new NanoReferenceTypes.TestAllTypesNano())); 359504e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai assertTrue(m7.equals(MessageNano.mergeFrom( 359604e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai new NanoReferenceTypes.TestAllTypesNano(), MessageNano.toByteArray(m7)))); 359704e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai } 359804e0fa44e105bc644bf07ba5154fc4a1ca4baec2Max Cai 3599e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff public void testNullRepeatedFields() throws Exception { 3600e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff // Check that serialization after explicitly setting a repeated field 3601e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff // to null doesn't NPE. 3602e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff TestAllTypesNano message = new TestAllTypesNano(); 3603e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff message.repeatedInt32 = null; 3604e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff MessageNano.toByteArray(message); // should not NPE 3605e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff message.toString(); // should not NPE 3606e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff 3607e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff message.repeatedNestedEnum = null; 3608e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff MessageNano.toByteArray(message); // should not NPE 3609e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff message.toString(); // should not NPE 3610e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff 3611e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff message.repeatedBytes = null; 3612e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff MessageNano.toByteArray(message); // should not NPE 3613e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff message.toString(); // should not NPE 3614e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff 3615e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff message.repeatedNestedMessage = null; 3616e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff MessageNano.toByteArray(message); // should not NPE 3617e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff message.toString(); // should not NPE 3618e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff 3619334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai message.repeatedPackedInt32 = null; 3620334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai MessageNano.toByteArray(message); // should not NPE 3621334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai message.toString(); // should not NPE 3622334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai 3623334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai message.repeatedPackedNestedEnum = null; 3624334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai MessageNano.toByteArray(message); // should not NPE 3625334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai message.toString(); // should not NPE 3626334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai 3627e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff // Create a second message to merge into message. 3628e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff TestAllTypesNano secondMessage = new TestAllTypesNano(); 3629334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai secondMessage.repeatedInt32 = new int[] {1, 2, 3}; 3630334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai secondMessage.repeatedNestedEnum = new int[] { 3631334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai TestAllTypesNano.FOO, TestAllTypesNano.BAR 3632334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai }; 3633334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai secondMessage.repeatedBytes = new byte[][] {{1, 2}, {3, 4}}; 3634e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff TestAllTypesNano.NestedMessage nested = 3635e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff new TestAllTypesNano.NestedMessage(); 3636e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff nested.bb = 55; 3637e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff secondMessage.repeatedNestedMessage = 3638334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai new TestAllTypesNano.NestedMessage[] {nested}; 3639334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai secondMessage.repeatedPackedInt32 = new int[] {1, 2, 3}; 3640334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai secondMessage.repeatedPackedNestedEnum = new int[] { 3641334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai TestAllTypesNano.FOO, TestAllTypesNano.BAR 3642334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai }; 3643e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff 3644e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff // Should not NPE 3645e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff message.mergeFrom(CodedInputByteBufferNano.newInstance( 3646e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff MessageNano.toByteArray(secondMessage))); 3647334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(3, message.repeatedInt32.length); 3648334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(3, message.repeatedInt32[2]); 3649334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(2, message.repeatedNestedEnum.length); 3650334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(TestAllTypesNano.FOO, message.repeatedNestedEnum[0]); 3651334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(2, message.repeatedBytes.length); 3652334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(4, message.repeatedBytes[1][1]); 3653334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(1, message.repeatedNestedMessage.length); 3654e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff assertEquals(55, message.repeatedNestedMessage[0].bb); 3655334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(3, message.repeatedPackedInt32.length); 3656334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(2, message.repeatedPackedInt32[1]); 3657334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(2, message.repeatedPackedNestedEnum.length); 3658334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(TestAllTypesNano.BAR, message.repeatedPackedNestedEnum[1]); 3659334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai } 3660334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai 3661beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod public void testNullRepeatedFieldElements() throws Exception { 3662beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod // Check that serialization with null array elements doesn't NPE. 3663beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod String string1 = "1"; 3664beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod String string2 = "2"; 3665beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod byte[] bytes1 = {3, 4}; 3666beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod byte[] bytes2 = {5, 6}; 3667beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod TestAllTypesNano.NestedMessage msg1 = new TestAllTypesNano.NestedMessage(); 3668beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod msg1.bb = 7; 3669beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod TestAllTypesNano.NestedMessage msg2 = new TestAllTypesNano.NestedMessage(); 3670beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod msg2.bb = 8; 3671beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod 3672beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod TestAllTypesNano message = new TestAllTypesNano(); 3673beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod message.repeatedString = new String[] {null, string1, string2}; 3674beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod message.repeatedBytes = new byte[][] {bytes1, null, bytes2}; 3675beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod message.repeatedNestedMessage = new TestAllTypesNano.NestedMessage[] {msg1, msg2, null}; 3676beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod message.repeatedGroup = new TestAllTypesNano.RepeatedGroup[] {null, null, null}; 3677beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod 3678beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod byte[] serialized = MessageNano.toByteArray(message); // should not NPE 3679beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod TestAllTypesNano deserialized = MessageNano.mergeFrom(new TestAllTypesNano(), serialized); 3680beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod assertEquals(2, deserialized.repeatedString.length); 3681beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod assertEquals(string1, deserialized.repeatedString[0]); 3682beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod assertEquals(string2, deserialized.repeatedString[1]); 3683beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod assertEquals(2, deserialized.repeatedBytes.length); 3684beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod assertTrue(Arrays.equals(bytes1, deserialized.repeatedBytes[0])); 3685beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod assertTrue(Arrays.equals(bytes2, deserialized.repeatedBytes[1])); 3686beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod assertEquals(2, deserialized.repeatedNestedMessage.length); 3687beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod assertEquals(msg1.bb, deserialized.repeatedNestedMessage[0].bb); 3688beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod assertEquals(msg2.bb, deserialized.repeatedNestedMessage[1].bb); 3689beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod assertEquals(0, deserialized.repeatedGroup.length); 3690beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod } 3691beb57e08a44a140bf52235717f1f907ca857f360Aurash Mahbod 3692334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai public void testRepeatedMerge() throws Exception { 3693334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai // Check that merging repeated fields cause the arrays to expand with 3694334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai // new data. 3695334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai TestAllTypesNano first = new TestAllTypesNano(); 3696334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai first.repeatedInt32 = new int[] {1, 2, 3}; 3697334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai TestAllTypesNano second = new TestAllTypesNano(); 3698334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai second.repeatedInt32 = new int[] {4, 5}; 3699334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai MessageNano.mergeFrom(first, MessageNano.toByteArray(second)); 3700334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(5, first.repeatedInt32.length); 3701334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(1, first.repeatedInt32[0]); 3702334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(4, first.repeatedInt32[3]); 3703334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai 3704334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai first = new TestAllTypesNano(); 3705334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai first.repeatedNestedEnum = new int[] {TestAllTypesNano.BAR}; 3706334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai second = new TestAllTypesNano(); 3707334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai second.repeatedNestedEnum = new int[] {TestAllTypesNano.FOO}; 3708334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai MessageNano.mergeFrom(first, MessageNano.toByteArray(second)); 3709334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(2, first.repeatedNestedEnum.length); 3710334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(TestAllTypesNano.BAR, first.repeatedNestedEnum[0]); 3711334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(TestAllTypesNano.FOO, first.repeatedNestedEnum[1]); 3712334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai 3713334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai first = new TestAllTypesNano(); 3714334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai first.repeatedNestedMessage = new TestAllTypesNano.NestedMessage[] { 3715334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai new TestAllTypesNano.NestedMessage() 3716334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai }; 3717334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai first.repeatedNestedMessage[0].bb = 3; 3718334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai second = new TestAllTypesNano(); 3719334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai second.repeatedNestedMessage = new TestAllTypesNano.NestedMessage[] { 3720334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai new TestAllTypesNano.NestedMessage() 3721334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai }; 3722334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai second.repeatedNestedMessage[0].bb = 5; 3723334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai MessageNano.mergeFrom(first, MessageNano.toByteArray(second)); 3724334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(2, first.repeatedNestedMessage.length); 3725334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(3, first.repeatedNestedMessage[0].bb); 3726334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(5, first.repeatedNestedMessage[1].bb); 3727334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai 3728334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai first = new TestAllTypesNano(); 3729334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai first.repeatedPackedSfixed64 = new long[] {-1, -2, -3}; 3730334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai second = new TestAllTypesNano(); 3731334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai second.repeatedPackedSfixed64 = new long[] {-4, -5}; 3732334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai MessageNano.mergeFrom(first, MessageNano.toByteArray(second)); 3733334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(5, first.repeatedPackedSfixed64.length); 3734334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(-1, first.repeatedPackedSfixed64[0]); 3735334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(-4, first.repeatedPackedSfixed64[3]); 3736334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai 3737334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai first = new TestAllTypesNano(); 3738334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai first.repeatedPackedNestedEnum = new int[] {TestAllTypesNano.BAR}; 3739334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai second = new TestAllTypesNano(); 3740334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai second.repeatedPackedNestedEnum = new int[] {TestAllTypesNano.FOO}; 3741334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai MessageNano.mergeFrom(first, MessageNano.toByteArray(second)); 3742334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(2, first.repeatedPackedNestedEnum.length); 3743334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(TestAllTypesNano.BAR, first.repeatedPackedNestedEnum[0]); 3744334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(TestAllTypesNano.FOO, first.repeatedPackedNestedEnum[1]); 3745334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai 3746334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai // Now test repeated merging in a nested scope 3747334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai TestRepeatedMergeNano firstContainer = new TestRepeatedMergeNano(); 3748334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai firstContainer.contained = new TestAllTypesNano(); 3749334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai firstContainer.contained.repeatedInt32 = new int[] {10, 20}; 3750334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai TestRepeatedMergeNano secondContainer = new TestRepeatedMergeNano(); 3751334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai secondContainer.contained = new TestAllTypesNano(); 3752334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai secondContainer.contained.repeatedInt32 = new int[] {30}; 3753334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai MessageNano.mergeFrom(firstContainer, MessageNano.toByteArray(secondContainer)); 3754334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(3, firstContainer.contained.repeatedInt32.length); 3755334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(20, firstContainer.contained.repeatedInt32[1]); 3756334a7d1117a576bc6010c14677fb6444639c1ddaMax Cai assertEquals(30, firstContainer.contained.repeatedInt32[2]); 3757e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff } 3758e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff 3759fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai public void testRepeatedPackables() throws Exception { 3760fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai // Check that repeated fields with packable types can accept both packed and unpacked 3761fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai // serialized forms. 3762fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai NanoRepeatedPackables.NonPacked nonPacked = new NanoRepeatedPackables.NonPacked(); 3763f4523ddb8a4e6f1008bfec2ee9e39629be792639Max Cai // Exaggerates the first values of varint-typed arrays. This is to test that the parsing code 3764f4523ddb8a4e6f1008bfec2ee9e39629be792639Max Cai // of packed fields handles non-packed data correctly. If the code incorrectly thinks it is 3765f4523ddb8a4e6f1008bfec2ee9e39629be792639Max Cai // reading from a packed tag, it will read the first value as the byte length of the field, 3766f4523ddb8a4e6f1008bfec2ee9e39629be792639Max Cai // and the large number will cause the input to go out of bounds, thus capturing the error. 3767f4523ddb8a4e6f1008bfec2ee9e39629be792639Max Cai nonPacked.int32S = new int[] {1000, 2, 3}; 3768f4523ddb8a4e6f1008bfec2ee9e39629be792639Max Cai nonPacked.int64S = new long[] {4000, 5, 6}; 3769f4523ddb8a4e6f1008bfec2ee9e39629be792639Max Cai nonPacked.uint32S = new int[] {7000, 8, 9}; 3770f4523ddb8a4e6f1008bfec2ee9e39629be792639Max Cai nonPacked.uint64S = new long[] {10000, 11, 12}; 3771f4523ddb8a4e6f1008bfec2ee9e39629be792639Max Cai nonPacked.sint32S = new int[] {13000, 14, 15}; 3772f4523ddb8a4e6f1008bfec2ee9e39629be792639Max Cai nonPacked.sint64S = new long[] {16000, 17, 18}; 3773fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai nonPacked.fixed32S = new int[] {19, 20, 21}; 3774fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai nonPacked.fixed64S = new long[] {22, 23, 24}; 3775fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai nonPacked.sfixed32S = new int[] {25, 26, 27}; 3776fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai nonPacked.sfixed64S = new long[] {28, 29, 30}; 3777fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai nonPacked.floats = new float[] {31, 32, 33}; 3778fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai nonPacked.doubles = new double[] {34, 35, 36}; 3779fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai nonPacked.bools = new boolean[] {false, true}; 3780fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai nonPacked.enums = new int[] { 3781fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai NanoRepeatedPackables.Enum.OPTION_ONE, 3782fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai NanoRepeatedPackables.Enum.OPTION_TWO, 3783fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai }; 3784fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai nonPacked.noise = 13579; 3785fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai 3786fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai byte[] nonPackedSerialized = MessageNano.toByteArray(nonPacked); 3787fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai 3788fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai NanoRepeatedPackables.Packed packed = 3789fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai MessageNano.mergeFrom(new NanoRepeatedPackables.Packed(), nonPackedSerialized); 3790fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertRepeatedPackablesEqual(nonPacked, packed); 3791fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai 3792fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai byte[] packedSerialized = MessageNano.toByteArray(packed); 3793fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai // Just a cautious check that the two serialized forms are different, 3794fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai // to make sure the remaining of this test is useful: 3795fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertFalse(Arrays.equals(nonPackedSerialized, packedSerialized)); 3796fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai 3797fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai nonPacked = MessageNano.mergeFrom(new NanoRepeatedPackables.NonPacked(), packedSerialized); 3798fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertRepeatedPackablesEqual(nonPacked, packed); 3799fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai 3800fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai // Test mixed serialized form. 3801fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai byte[] mixedSerialized = new byte[nonPackedSerialized.length + packedSerialized.length]; 3802fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai System.arraycopy(nonPackedSerialized, 0, mixedSerialized, 0, nonPackedSerialized.length); 3803fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai System.arraycopy(packedSerialized, 0, 3804fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai mixedSerialized, nonPackedSerialized.length, packedSerialized.length); 3805fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai 3806fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai nonPacked = MessageNano.mergeFrom(new NanoRepeatedPackables.NonPacked(), mixedSerialized); 3807fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai packed = MessageNano.mergeFrom(new NanoRepeatedPackables.Packed(), mixedSerialized); 3808fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertRepeatedPackablesEqual(nonPacked, packed); 3809f4523ddb8a4e6f1008bfec2ee9e39629be792639Max Cai assertTrue(Arrays.equals(new int[] {1000, 2, 3, 1000, 2, 3}, nonPacked.int32S)); 3810f4523ddb8a4e6f1008bfec2ee9e39629be792639Max Cai assertTrue(Arrays.equals(new int[] {13000, 14, 15, 13000, 14, 15}, nonPacked.sint32S)); 3811fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(new int[] {25, 26, 27, 25, 26, 27}, nonPacked.sfixed32S)); 3812fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(new boolean[] {false, true, false, true}, nonPacked.bools)); 3813fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai } 3814fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai 38155537d6fe4af105eb769bacc530e8d5d9e0b027cbBrian Duff public void testRepeatedFieldInitializedInReftypesCompatMode() { 38165537d6fe4af105eb769bacc530e8d5d9e0b027cbBrian Duff NanoReferenceTypesCompat.TestAllTypesNano proto = new NanoReferenceTypesCompat.TestAllTypesNano(); 38175537d6fe4af105eb769bacc530e8d5d9e0b027cbBrian Duff assertNotNull(proto.repeatedString); 38185537d6fe4af105eb769bacc530e8d5d9e0b027cbBrian Duff } 38195537d6fe4af105eb769bacc530e8d5d9e0b027cbBrian Duff 3820fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai private void assertRepeatedPackablesEqual( 3821fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai NanoRepeatedPackables.NonPacked nonPacked, NanoRepeatedPackables.Packed packed) { 3822fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai // Not using MessageNano.equals() -- that belongs to a separate test. 3823fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.int32S, packed.int32S)); 3824fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.int64S, packed.int64S)); 3825fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.uint32S, packed.uint32S)); 3826fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.uint64S, packed.uint64S)); 3827fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.sint32S, packed.sint32S)); 3828fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.sint64S, packed.sint64S)); 3829fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.fixed32S, packed.fixed32S)); 3830fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.fixed64S, packed.fixed64S)); 3831fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.sfixed32S, packed.sfixed32S)); 3832fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.sfixed64S, packed.sfixed64S)); 3833fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.floats, packed.floats)); 3834fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.doubles, packed.doubles)); 3835fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.bools, packed.bools)); 3836fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai assertTrue(Arrays.equals(nonPacked.enums, packed.enums)); 3837fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai } 3838fea3fd5cb6ff88b51da60b1f33004944d93a9fceMax Cai 3839bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff public void testClone() throws Exception { 3840bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff // A simple message. 3841bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff AnotherMessage anotherMessage = new AnotherMessage(); 3842bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff anotherMessage.string = "Hello"; 3843bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff anotherMessage.value = true; 3844bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff anotherMessage.integers = new int[] { 1, 2, 3 }; 3845bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff 3846bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff AnotherMessage clone = anotherMessage.clone(); 3847bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff assertEquals(clone, anotherMessage); 3848bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff 3849bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff // Verify it was a deep clone - changes to the clone shouldn't affect the 3850bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff // original. 3851bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff clone.integers[1] = 100; 3852bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff assertFalse(clone.equals(anotherMessage)); 3853bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff } 3854bcf45045f229edab8c2589c1f561e7b7495a763bBrian Duff 38550b8579237336f221711a0aac42400eb31a58fed3Brian Duff private void assertHasWireData(MessageNano message, boolean expected) { 3856e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff byte[] bytes = MessageNano.toByteArray(message); 3857e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff int wireLength = bytes.length; 38580b8579237336f221711a0aac42400eb31a58fed3Brian Duff if (expected) { 38590b8579237336f221711a0aac42400eb31a58fed3Brian Duff assertFalse(wireLength == 0); 38600b8579237336f221711a0aac42400eb31a58fed3Brian Duff } else { 3861e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff if (wireLength != 0) { 3862e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff fail("Expected no wire data for message \n" + message 3863e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff + "\nBut got:\n" 3864e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff + hexDump(bytes)); 3865e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff } 3866e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff } 3867e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff } 3868e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff 3869e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff private static String hexDump(byte[] bytes) { 3870e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff StringBuilder sb = new StringBuilder(); 3871e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff for (byte b : bytes) { 3872e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff sb.append(String.format("%02x ", b)); 38730b8579237336f221711a0aac42400eb31a58fed3Brian Duff } 3874e03e9f4b5774c0ffe04140d83bbdb532863b1720Brian Duff return sb.toString(); 38750b8579237336f221711a0aac42400eb31a58fed3Brian Duff } 387664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 3877