1e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// Protocol Buffers - Google's data interchange format
2e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// Copyright 2008 Google Inc.  All rights reserved.
3e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// http://code.google.com/p/protobuf/
4e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville//
5e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// Redistribution and use in source and binary forms, with or without
6e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// modification, are permitted provided that the following conditions are
7e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// met:
8e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville//
9e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville//     * Redistributions of source code must retain the above copyright
10e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// notice, this list of conditions and the following disclaimer.
11e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville//     * Redistributions in binary form must reproduce the above
12e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// copyright notice, this list of conditions and the following disclaimer
13e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// in the documentation and/or other materials provided with the
14e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// distribution.
15e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville//     * Neither the name of Google Inc. nor the names of its
16e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// contributors may be used to endorse or promote products derived from
17e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// this software without specific prior written permission.
18e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville//
19e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
31e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Savillepackage com.google.protobuf;
32e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
338170787391efcb6cc6a8babc1cce35d5b1aff420Max Caiimport com.google.protobuf.micro.ByteStringMicro;
348170787391efcb6cc6a8babc1cce35d5b1aff420Max Caiimport com.google.protobuf.micro.CodedInputStreamMicro;
35624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.micro.FileScopeEnumRefMicro;
36624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.micro.MessageScopeEnumRefMicro;
37e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Savilleimport com.google.protobuf.micro.MicroOuterClass;
38e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Savilleimport com.google.protobuf.micro.MicroOuterClass.TestAllTypesMicro;
398170787391efcb6cc6a8babc1cce35d5b1aff420Max Caiimport com.google.protobuf.micro.MultipleImportingNonMultipleMicro1;
408170787391efcb6cc6a8babc1cce35d5b1aff420Max Caiimport com.google.protobuf.micro.MultipleImportingNonMultipleMicro2;
41624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.micro.MultipleNameClashMicro;
42e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Savilleimport com.google.protobuf.micro.UnittestImportMicro;
43624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.micro.UnittestMultipleMicro;
44624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.micro.UnittestRecursiveMicro.RecursiveMessageMicro;
45624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.micro.UnittestSimpleMicro.SimpleMessageMicro;
46624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.micro.UnittestSingleMicro.SingleMessageMicro;
47624c448fbef20a1a2fad2289f622b468c25763d1Max Caiimport com.google.protobuf.micro.UnittestStringutf8Micro.StringUtf8;
48e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
49e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Savilleimport junit.framework.TestCase;
50e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
518a2f7578bb6289415f1d0a01c9cc96d283730480Wink Savilleimport java.io.ByteArrayInputStream;
528a2f7578bb6289415f1d0a01c9cc96d283730480Wink Savilleimport java.io.FilterInputStream;
538a2f7578bb6289415f1d0a01c9cc96d283730480Wink Savilleimport java.io.InputStream;
548a2f7578bb6289415f1d0a01c9cc96d283730480Wink Savilleimport java.io.IOException;
558a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville
56e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville/**
57e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville * Test micro runtime.
58e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *
59e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville * @author wink@google.com Wink Saville
60e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville */
61e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Savillepublic class MicroTest extends TestCase {
62e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void setUp() throws Exception {
63e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
64e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
65e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testSimpleMessageMicro() throws Exception {
66e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    SimpleMessageMicro msg = new SimpleMessageMicro();
67e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasD());
68e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getD());
69e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasNestedMsg());
70e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(null, msg.getNestedMsg());
71e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultNestedEnum());
72e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(SimpleMessageMicro.BAZ, msg.getDefaultNestedEnum());
73e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
74e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setD(456);
75e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasD());
76e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getD());
77e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearD()
78e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setD(456);
79e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasD());
80e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
81e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    SimpleMessageMicro.NestedMessage nestedMsg = new SimpleMessageMicro.NestedMessage()
82e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      .setBb(2);
83e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(nestedMsg.hasBb());
84e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, nestedMsg.getBb());
85e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setNestedMsg(nestedMsg);
86e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasNestedMsg());
87e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getNestedMsg().getBb());
88e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
89e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setDefaultNestedEnum(SimpleMessageMicro.BAR);
90e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasDefaultNestedEnum());
91e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(SimpleMessageMicro.BAR, msg.getDefaultNestedEnum());
92e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
93e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
94e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
95e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
96e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 9);
97e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
98e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
99e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    SimpleMessageMicro newMsg = SimpleMessageMicro.parseFrom(result);
100e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasD());
101e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasNestedMsg());
102e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasDefaultNestedEnum());
103e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, newMsg.getD());
104e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getNestedMsg().getBb());
105e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(SimpleMessageMicro.BAR, msg.getDefaultNestedEnum());
106e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
107e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
108e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testRecursiveMessageMicro() throws Exception {
109e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    RecursiveMessageMicro msg = new RecursiveMessageMicro();
110e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasId());
111e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasNestedMessage());
112e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalRecursiveMessageMicro());
113e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedRecursiveMessageMicroCount());
114e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
115e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    RecursiveMessageMicro msg1 = new RecursiveMessageMicro();
116e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg1.setId(1);
117e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg1.getId());
118e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    RecursiveMessageMicro msg2 = new RecursiveMessageMicro();
119e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg2.setId(2);
120e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    RecursiveMessageMicro msg3 = new RecursiveMessageMicro();
121e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg3.setId(3);
122e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
123e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    RecursiveMessageMicro.NestedMessage nestedMsg = new RecursiveMessageMicro.NestedMessage();
124e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    nestedMsg.setA(msg1);
125e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, nestedMsg.getA().getId());
126e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
127e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setId(0);
128e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setNestedMessage(nestedMsg);
129e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalRecursiveMessageMicro(msg2);
130e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedRecursiveMessageMicro(msg3);
131e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
132e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
133e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
134e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
135e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 16);
136e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
137e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
138e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    RecursiveMessageMicro newMsg = RecursiveMessageMicro.parseFrom(result);
139e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasId());
140e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasNestedMessage());
141e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalRecursiveMessageMicro());
142e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedRecursiveMessageMicroCount());
143e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
144e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, newMsg.getId());
145e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getNestedMessage().getA().getId());
146e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getOptionalRecursiveMessageMicro().getId());
147e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(3, newMsg.getRepeatedRecursiveMessageMicro(0).getId());
148e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
149e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
150e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRequiredInt32() throws Exception {
151e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
152e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasId());
153e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.isInitialized());
154e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setId(123);
155e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasId());
156e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.isInitialized());
157e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getId());
158e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearId();
159e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasId());
160e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.isInitialized());
161e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearId()
162e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setId(456);
163e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasId());
164e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
165e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasId());
166e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.isInitialized());
167e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
168e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setId(123);
169e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
170e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
171e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
172e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
173e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
174e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
175e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
176e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasId());
177e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.isInitialized());
178e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getId());
179e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
180e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
181e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalInt32() throws Exception {
182e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
183e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalInt32());
184e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalInt32(123);
185e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalInt32());
186e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getOptionalInt32());
187e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalInt32();
188e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalInt32());
189e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalInt32()
190e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalInt32(456);
191e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalInt32());
192e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
193e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalInt32());
194e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
195e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalInt32(123);
196e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
197e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
198e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
199e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 2);
200e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
201e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
202e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
203e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalInt32());
204e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getOptionalInt32());
205e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
206e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
207e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalInt64() throws Exception {
208e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
209e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalInt64());
210e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalInt64(123);
211e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalInt64());
212e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getOptionalInt64());
213e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalInt64();
214e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalInt64());
215e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalInt64()
216e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalInt64(456);
217e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalInt64());
218e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
219e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalInt64());
220e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
221e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalInt64(123);
222e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
223e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
224e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
225e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 2);
226e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
227e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
228e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
229e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalInt64());
230e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getOptionalInt64());
231e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
232e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
233e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalUint32() throws Exception {
234e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
235e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalUint32());
236e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalUint32(123);
237e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalUint32());
238e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getOptionalUint32());
239e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalUint32();
240e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalUint32());
241e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalUint32()
242e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalUint32(456);
243e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalUint32());
244e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
245e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalUint32());
246e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
247e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalUint32(123);
248e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
249e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
250e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
251e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 2);
252e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
253e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
254e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
255e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalUint32());
256e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getOptionalUint32());
257e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
258e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
259e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalUint64() throws Exception {
260e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
261e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalUint64());
262e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalUint64(123);
263e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalUint64());
264e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getOptionalUint64());
265e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalUint64();
266e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalUint64());
267e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalUint64()
268e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalUint64(456);
269e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalUint64());
270e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
271e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalUint64());
272e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
273e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalUint64(123);
274e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
275e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
276e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
277e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 2);
278e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
279e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
280e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
281e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalUint64());
282e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getOptionalUint64());
283e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
284e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
285e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalSint32() throws Exception {
286e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
287e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalSint32());
288e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalSint32(123);
289e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalSint32());
290e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getOptionalSint32());
291e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalSint32();
292e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalSint32());
293e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalSint32()
294e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalSint32(456);
295e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalSint32());
296e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
297e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalSint32());
298e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
299e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalSint32(-123);
300e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
301e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
302e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
303e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
304e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
305e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
306e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
307e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalSint32());
308e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(-123, newMsg.getOptionalSint32());
309e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
310e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
311e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalSint64() throws Exception {
312e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
313e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalSint64());
314e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalSint64(123);
315e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalSint64());
316e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getOptionalSint64());
317e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalSint64();
318e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalSint64());
319e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalSint64()
320e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalSint64(456);
321e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalSint64());
322e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
323e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalSint64());
324e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
325e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalSint64(-123);
326e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
327e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
328e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
329e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
330e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
331e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
332e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
333e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalSint64());
334e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(-123, newMsg.getOptionalSint64());
335e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
336e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
337e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalFixed32() throws Exception {
338e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
339e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalFixed32());
340e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalFixed32(123);
341e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalFixed32());
342e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getOptionalFixed32());
343e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalFixed32();
344e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalFixed32());
345e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalFixed32()
346e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalFixed32(456);
347e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalFixed32());
348e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
349e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalFixed32());
350e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
351e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalFixed32(123);
352e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
353e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
354e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
355e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 5);
356e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
357e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
358e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
359e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalFixed32());
360e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getOptionalFixed32());
361e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
362e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
363e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalFixed64() throws Exception {
364e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
365e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalFixed64());
366e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalFixed64(123);
367e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalFixed64());
368e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getOptionalFixed64());
369e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalFixed64();
370e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalFixed64());
371e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalFixed64()
372e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalFixed64(456);
373e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalFixed64());
374e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
375e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalFixed64());
376e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
377e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalFixed64(123);
378e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
379e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
380e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
381e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 9);
382e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
383e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
384e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
385e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalFixed64());
386e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getOptionalFixed64());
387e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
388e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalSfixed32() throws Exception {
389e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
390e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalSfixed32());
391e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalSfixed32(123);
392e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalSfixed32());
393e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getOptionalSfixed32());
394e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalSfixed32();
395e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalSfixed32());
396e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalSfixed32()
397e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalSfixed32(456);
398e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalSfixed32());
399e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
400e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalSfixed32());
401e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
402e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalSfixed32(123);
403e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
404e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
405e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
406e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 5);
407e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
408e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
409e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
410e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalSfixed32());
411e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getOptionalSfixed32());
412e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
413e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
414e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalSfixed64() throws Exception {
415e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
416e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalSfixed64());
417e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalSfixed64(123);
418e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalSfixed64());
419e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getOptionalSfixed64());
420e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalSfixed64();
421e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalSfixed64());
422e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalSfixed64()
423e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalSfixed64(456);
424e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalSfixed64());
425e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
426e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalSfixed64());
427e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
428e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalSfixed64(-123);
429e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
430e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
431e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
432e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 9);
433e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
434e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
435e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
436e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalSfixed64());
437e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(-123, newMsg.getOptionalSfixed64());
438e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
439e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
440e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalFloat() throws Exception {
441e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
442e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalFloat());
443e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalFloat(123f);
444e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalFloat());
445e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(123.0f == msg.getOptionalFloat());
446e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalFloat();
447e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalFloat());
448e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalFloat()
449e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalFloat(456.0f);
450e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalFloat());
451e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
452e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalFloat());
453e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
454e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalFloat(-123.456f);
455e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
456e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
457e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
458e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 5);
459e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
460e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
461e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
462e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalFloat());
463e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(-123.456f == newMsg.getOptionalFloat());
464e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
465e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
466e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalDouble() throws Exception {
467e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
468e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalDouble());
469e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalDouble(123);
470e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalDouble());
471e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(123.0 == msg.getOptionalDouble());
472e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalDouble();
473e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalDouble());
474e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalDouble()
475e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalDouble(456.0);
476e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalDouble());
477e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
478e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalDouble());
479e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
480e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalDouble(-123.456);
481e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
482e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
483e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
484e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 9);
485e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
486e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
487e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
488e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalDouble());
489e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(-123.456 == newMsg.getOptionalDouble());
490e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
491e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
492e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalBool() throws Exception {
493e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
494e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalBool());
495e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalBool(true);
496e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalBool());
497e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(true, msg.getOptionalBool());
498e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalBool();
499e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalBool());
500e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalBool()
501e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalBool(true);
502e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalBool());
503e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
504e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalBool());
505e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
506e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalBool(false);
507e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
508e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
509e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
510e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 2);
511e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
512e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
513e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
514e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalBool());
515e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(false, newMsg.getOptionalBool());
516e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
517e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
518e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalString() throws Exception {
519e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
520e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalString());
521e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalString("hello");
522e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalString());
523e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getOptionalString());
524e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalString();
525e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalString());
526e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalString()
527e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalString("hello");
528e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalString());
529e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
530e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalString());
531e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
532e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalString("bye");
533e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
534e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
535e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
536e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 5);
537e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
538e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
539e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
540e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalString());
541e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("bye", newMsg.getOptionalString());
542e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
543e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
544e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalBytes() throws Exception {
545e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
546e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalBytes());
547e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalBytes(ByteStringMicro.copyFromUtf8("hello"));
548e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalBytes());
549e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getOptionalBytes().toStringUtf8());
550e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalBytes();
551e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalBytes());
552e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalBytes()
553e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalBytes(ByteStringMicro.copyFromUtf8("hello"));
554e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalBytes());
555e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
556e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalBytes());
557e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
558e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalBytes(ByteStringMicro.copyFromUtf8("bye"));
559e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
560e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
561e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
562e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 5);
563e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
564e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
565e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
566e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalBytes());
567e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("bye", newMsg.getOptionalBytes().toStringUtf8());
568e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
569e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
570e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalGroup() throws Exception {
571e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
572e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro.OptionalGroup grp = new TestAllTypesMicro.OptionalGroup();
573e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    grp.setA(1);
574e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalGroup());
575e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalGroup(grp);
576e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalGroup());
577e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getOptionalGroup().getA());
578e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalGroup();
579e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalGroup());
580e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalGroup()
581e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalGroup(new TestAllTypesMicro.OptionalGroup().setA(2));
582e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalGroup());
583e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
584e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalGroup());
585e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
586e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalGroup(grp);
587e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
588e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
589e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
590e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 7);
591e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
592e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
593e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
594e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalGroup());
595e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getOptionalGroup().getA());
596e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
597e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
598e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalNestedMessage() throws Exception {
599e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
600e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro.NestedMessage nestedMsg = new TestAllTypesMicro.NestedMessage();
601e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    nestedMsg.setBb(1);
602e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalNestedMessage());
603e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalNestedMessage(nestedMsg);
604e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalNestedMessage());
605e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getOptionalNestedMessage().getBb());
606e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalNestedMessage();
607e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalNestedMessage());
608e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalNestedMessage()
609e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalNestedMessage(new TestAllTypesMicro.NestedMessage().setBb(2));
610e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalNestedMessage());
611e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
612e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalNestedMessage());
613e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
614e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalNestedMessage(nestedMsg);
615e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
616e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
617e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
618e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 5);
619e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
620e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
621e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
622e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalNestedMessage());
623e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getOptionalNestedMessage().getBb());
624e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
625e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
626e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalForeignMessage() throws Exception {
627e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
628e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    MicroOuterClass.ForeignMessageMicro foreignMsg =
629e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville        new MicroOuterClass.ForeignMessageMicro();
630e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(foreignMsg.hasC());
631e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    foreignMsg.setC(1);
632e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(foreignMsg.hasC());
633e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalForeignMessage());
634e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalForeignMessage(foreignMsg);
635e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalForeignMessage());
636e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getOptionalForeignMessage().getC());
637e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalForeignMessage();
638e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalForeignMessage());
639e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalForeignMessage()
640e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalForeignMessage(new MicroOuterClass.ForeignMessageMicro().setC(2));
641e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalForeignMessage());
642e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
643e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalForeignMessage());
644e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
645e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalForeignMessage(foreignMsg);
646e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
647e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
648e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
649e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 5);
650e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
651e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
652e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
653e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalForeignMessage());
654e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getOptionalForeignMessage().getC());
655e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
656e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
657e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalImportMessage() throws Exception {
658e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
659e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    UnittestImportMicro.ImportMessageMicro importMsg =
660e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville        new UnittestImportMicro.ImportMessageMicro();
661e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(importMsg.hasD());
662e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    importMsg.setD(1);
663e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(importMsg.hasD());
664e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalImportMessage());
665e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalImportMessage(importMsg);
666e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalImportMessage());
667e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getOptionalImportMessage().getD());
668e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalImportMessage();
669e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalImportMessage());
670e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalImportMessage()
671e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalImportMessage(new UnittestImportMicro.ImportMessageMicro().setD(2));
672e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalImportMessage());
673e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
674e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalImportMessage());
675e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
676e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalImportMessage(importMsg);
677e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
678e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
679e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
680e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 5);
681e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
682e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
683e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
684e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalImportMessage());
685e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getOptionalImportMessage().getD());
686e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
687e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
688e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalNestedEnum() throws Exception {
689e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
690e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalNestedEnum(TestAllTypesMicro.BAR);
691e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalNestedEnum());
692e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(TestAllTypesMicro.BAR, msg.getOptionalNestedEnum());
693e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalNestedEnum();
694e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalNestedEnum());
695e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalNestedEnum()
696e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalNestedEnum(TestAllTypesMicro.BAZ);
697e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalNestedEnum());
698e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
699e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalNestedEnum());
700e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
701e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalNestedEnum(TestAllTypesMicro.BAR);
702e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
703e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
704e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
705e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
706e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
707e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
708e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
709e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalNestedEnum());
710e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(TestAllTypesMicro.BAR, newMsg.getOptionalNestedEnum());
711e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
712e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
713e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalForeignEnum() throws Exception {
714e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
715e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalForeignEnum(MicroOuterClass.FOREIGN_MICRO_BAR);
716e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalForeignEnum());
717e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR,
718e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville        msg.getOptionalForeignEnum());
719e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalForeignEnum();
720e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalForeignEnum());
721e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalForeignEnum()
722e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalForeignEnum(MicroOuterClass.FOREIGN_MICRO_BAZ);
723e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalForeignEnum());
724e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
725e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalForeignEnum());
726e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
727e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalForeignEnum(MicroOuterClass.FOREIGN_MICRO_BAR);
728e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
729e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
730e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
731e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
732e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
733e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
734e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
735e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalForeignEnum());
736e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR,
737e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville        newMsg.getOptionalForeignEnum());
738e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
739e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
740e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalImportEnum() throws Exception {
741e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
742e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalImportEnum(UnittestImportMicro.IMPORT_MICRO_BAR);
743e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalImportEnum());
744e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR,
745e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville        msg.getOptionalImportEnum());
746e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalImportEnum();
747e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalImportEnum());
748e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalImportEnum()
749e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalImportEnum(UnittestImportMicro.IMPORT_MICRO_BAZ);
750e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalImportEnum());
751e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
752e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalImportEnum());
753e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
754e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalImportEnum(UnittestImportMicro.IMPORT_MICRO_BAR);
755e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
756e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
757e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
758e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
759e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
760e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
761e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
762e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalImportEnum());
763e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR,
764e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville        newMsg.getOptionalImportEnum());
765e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
766e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
767e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalStringPiece() throws Exception {
768e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
769e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalStringPiece());
770e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalStringPiece("hello");
771e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalStringPiece());
772e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getOptionalStringPiece());
773e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalStringPiece();
774e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalStringPiece());
775e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalStringPiece()
776e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .setOptionalStringPiece("hello");
777e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalStringPiece());
778e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
779e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalStringPiece());
780e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
781e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalStringPiece("bye");
782e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
783e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
784e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
785e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 6);
786e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
787e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
788e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
789e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalStringPiece());
790e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("bye", newMsg.getOptionalStringPiece());
791e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
792e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
793e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroOptionalCord() throws Exception {
794e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
795e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalCord());
796e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalCord("hello");
797e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalCord());
798e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getOptionalCord());
799e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalCord();
800e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalCord());
801e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearOptionalCord()
802e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      .setOptionalCord("hello");
803e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msg.hasOptionalCord());
804e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
805e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasOptionalCord());
806e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
807e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setOptionalCord("bye");
808e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
809e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
810e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
811e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 6);
812e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
813e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
814e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
815e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(newMsg.hasOptionalCord());
816e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("bye", newMsg.getOptionalCord());
817e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
818e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
819e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedInt32() throws Exception {
820e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
821e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedInt32Count());
822e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedInt32(123);
823e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedInt32Count());
824e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedInt32(0));
825e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedInt32(456);
826e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedInt32Count());
827e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedInt32(0));
828e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedInt32(1));
829e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedInt32(0, 789);
830e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedInt32Count());
831e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(789, msg.getRepeatedInt32(0));
832e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedInt32(1));
833e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedInt32();
834e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedInt32Count());
835e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedInt32()
836e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedInt32(456);
837e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedInt32Count());
838e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedInt32(0));
839e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
840e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedInt32Count());
841e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
842e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
843e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
844e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedInt32(123);
845e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedInt32Count());
846e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
847e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
848e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
849e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
850e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
851e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
852e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedInt32Count());
853e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedInt32(0));
854e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
855e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
856e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
857e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedInt32(123)
858e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedInt32(456);
859e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedInt32Count());
860e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
861e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
862e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
863e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 7);
864e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
865e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
866e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
867e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedInt32Count());
868e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedInt32(0));
869e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, newMsg.getRepeatedInt32(1));
870e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
871e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
872e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedInt64() throws Exception {
873e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
874e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedInt64Count());
875e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedInt64(123);
876e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedInt64Count());
877e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedInt64(0));
878e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedInt64(456);
879e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedInt64Count());
880e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedInt64(0));
881e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedInt64(1));
882e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedInt64(0, 789);
883e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedInt64Count());
884e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(789, msg.getRepeatedInt64(0));
885e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedInt64(1));
886e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedInt64();
887e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedInt64Count());
888e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedInt64()
889e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedInt64(456);
890e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedInt64Count());
891e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedInt64(0));
892e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
893e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedInt64Count());
894e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
895e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
896e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
897e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedInt64(123);
898e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedInt64Count());
899e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
900e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
901e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
902e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
903e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
904e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
905e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedInt64Count());
906e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedInt64(0));
907e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
908e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
909e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
910e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedInt64(123)
911e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedInt64(456);
912e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedInt64Count());
913e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
914e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
915e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
916e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 7);
917e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
918e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
919e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
920e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedInt64Count());
921e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedInt64(0));
922e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, newMsg.getRepeatedInt64(1));
923e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
924e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
925e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedUint32() throws Exception {
926e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
927e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedUint32Count());
928e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedUint32(123);
929e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedUint32Count());
930e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedUint32(0));
931e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedUint32(456);
932e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedUint32Count());
933e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedUint32(0));
934e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedUint32(1));
935e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedUint32(0, 789);
936e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedUint32Count());
937e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(789, msg.getRepeatedUint32(0));
938e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedUint32(1));
939e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedUint32();
940e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedUint32Count());
941e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedUint32()
942e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedUint32(456);
943e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedUint32Count());
944e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedUint32(0));
945e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
946e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedUint32Count());
947e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
948e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
949e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
950e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedUint32(123);
951e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedUint32Count());
952e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
953e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
954e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
955e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
956e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
957e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
958e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedUint32Count());
959e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedUint32(0));
960e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
961e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
962e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
963e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedUint32(123)
964e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedUint32(456);
965e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedUint32Count());
966e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
967e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
968e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
969e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 7);
970e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
971e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
972e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
973e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedUint32Count());
974e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedUint32(0));
975e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, newMsg.getRepeatedUint32(1));
976e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
977e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
978e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedUint64() throws Exception {
979e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
980e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedUint64Count());
981e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedUint64(123);
982e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedUint64Count());
983e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedUint64(0));
984e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedUint64(456);
985e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedUint64Count());
986e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedUint64(0));
987e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedUint64(1));
988e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedUint64(0, 789);
989e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedUint64Count());
990e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(789, msg.getRepeatedUint64(0));
991e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedUint64(1));
992e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedUint64();
993e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedUint64Count());
994e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedUint64()
995e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedUint64(456);
996e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedUint64Count());
997e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedUint64(0));
998e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
999e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedUint64Count());
1000e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1001e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1002e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1003e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedUint64(123);
1004e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedUint64Count());
1005e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1006e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1007e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1008e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
1009e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1010e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1011e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedUint64Count());
1012e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedUint64(0));
1013e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1014e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1015e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1016e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedUint64(123)
1017e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedUint64(456);
1018e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedUint64Count());
1019e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1020e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1021e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1022e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 7);
1023e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1024e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1025e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1026e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedUint64Count());
1027e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedUint64(0));
1028e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, newMsg.getRepeatedUint64(1));
1029e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1030e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1031e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedSint32() throws Exception {
1032e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1033e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedSint32Count());
1034e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedSint32(123);
1035e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedSint32Count());
1036e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedSint32(0));
1037e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedSint32(456);
1038e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedSint32Count());
1039e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedSint32(0));
1040e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedSint32(1));
1041e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedSint32(0, 789);
1042e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedSint32Count());
1043e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(789, msg.getRepeatedSint32(0));
1044e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedSint32(1));
1045e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedSint32();
1046e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedSint32Count());
1047e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedSint32()
1048e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSint32(456);
1049e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedSint32Count());
1050e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedSint32(0));
1051e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1052e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedSint32Count());
1053e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1054e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1055e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1056e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSint32(123);
1057e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedSint32Count());
1058e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1059e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1060e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1061e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 4);
1062e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1063e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1064e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedSint32Count());
1065e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedSint32(0));
1066e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1067e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1068e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1069e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSint32(123)
1070e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSint32(456);
1071e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedSint32Count());
1072e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1073e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1074e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1075e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 8);
1076e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1077e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1078e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1079e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedSint32Count());
1080e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedSint32(0));
1081e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, newMsg.getRepeatedSint32(1));
1082e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1083e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1084e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedSint64() throws Exception {
1085e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1086e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedSint64Count());
1087e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedSint64(123);
1088e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedSint64Count());
1089e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedSint64(0));
1090e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedSint64(456);
1091e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedSint64Count());
1092e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedSint64(0));
1093e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedSint64(1));
1094e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedSint64(0, 789);
1095e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedSint64Count());
1096e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(789, msg.getRepeatedSint64(0));
1097e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedSint64(1));
1098e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedSint64();
1099e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedSint64Count());
1100e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedSint64()
1101e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSint64(456);
1102e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedSint64Count());
1103e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedSint64(0));
1104e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1105e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedSint64Count());
1106e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1107e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1108e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1109e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSint64(123);
1110e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedSint64Count());
1111e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1112e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1113e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1114e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 4);
1115e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1116e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1117e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedSint64Count());
1118e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedSint64(0));
1119e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1120e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1121e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1122e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSint64(123)
1123e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSint64(456);
1124e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedSint64Count());
1125e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1126e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1127e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1128e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 8);
1129e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1130e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1131e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1132e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedSint64Count());
1133e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedSint64(0));
1134e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, newMsg.getRepeatedSint64(1));
1135e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1136e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1137e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedFixed32() throws Exception {
1138e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1139e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedFixed32Count());
1140e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedFixed32(123);
1141e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedFixed32Count());
1142e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedFixed32(0));
1143e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedFixed32(456);
1144e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedFixed32Count());
1145e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedFixed32(0));
1146e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedFixed32(1));
1147e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedFixed32(0, 789);
1148e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedFixed32Count());
1149e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(789, msg.getRepeatedFixed32(0));
1150e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedFixed32(1));
1151e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedFixed32();
1152e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedFixed32Count());
1153e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedFixed32()
1154e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedFixed32(456);
1155e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedFixed32Count());
1156e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedFixed32(0));
1157e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1158e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedFixed32Count());
1159e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1160e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1161e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1162e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedFixed32(123);
1163e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedFixed32Count());
1164e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1165e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1166e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1167e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 6);
1168e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1169e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1170e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedFixed32Count());
1171e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedFixed32(0));
1172e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1173e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1174e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1175e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedFixed32(123)
1176e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedFixed32(456);
1177e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedFixed32Count());
1178e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1179e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1180e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1181e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 12);
1182e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1183e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1184e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1185e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedFixed32Count());
1186e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedFixed32(0));
1187e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, newMsg.getRepeatedFixed32(1));
1188e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1189e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1190e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedFixed64() throws Exception {
1191e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1192e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedFixed64Count());
1193e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedFixed64(123);
1194e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedFixed64Count());
1195e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedFixed64(0));
1196e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedFixed64(456);
1197e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedFixed64Count());
1198e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedFixed64(0));
1199e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedFixed64(1));
1200e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedFixed64(0, 789);
1201e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedFixed64Count());
1202e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(789, msg.getRepeatedFixed64(0));
1203e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedFixed64(1));
1204e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedFixed64();
1205e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedFixed64Count());
1206e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedFixed64()
1207e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedFixed64(456);
1208e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedFixed64Count());
1209e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedFixed64(0));
1210e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1211e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedFixed64Count());
1212e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1213e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1214e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1215e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedFixed64(123);
1216e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedFixed64Count());
1217e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1218e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1219e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1220e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 10);
1221e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1222e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1223e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedFixed64Count());
1224e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedFixed64(0));
1225e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1226e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1227e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1228e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedFixed64(123)
1229e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedFixed64(456);
1230e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedFixed64Count());
1231e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1232e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1233e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1234e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 20);
1235e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1236e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1237e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1238e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedFixed64Count());
1239e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedFixed64(0));
1240e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, newMsg.getRepeatedFixed64(1));
1241e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1242e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1243e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedSfixed32() throws Exception {
1244e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1245e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedSfixed32Count());
1246e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedSfixed32(123);
1247e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedSfixed32Count());
1248e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedSfixed32(0));
1249e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedSfixed32(456);
1250e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedSfixed32Count());
1251e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedSfixed32(0));
1252e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedSfixed32(1));
1253e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedSfixed32(0, 789);
1254e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedSfixed32Count());
1255e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(789, msg.getRepeatedSfixed32(0));
1256e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedSfixed32(1));
1257e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedSfixed32();
1258e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedSfixed32Count());
1259e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedSfixed32()
1260e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSfixed32(456);
1261e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedSfixed32Count());
1262e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedSfixed32(0));
1263e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1264e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedSfixed32Count());
1265e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1266e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1267e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1268e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSfixed32(123);
1269e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedSfixed32Count());
1270e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1271e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1272e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1273e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 6);
1274e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1275e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1276e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedSfixed32Count());
1277e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedSfixed32(0));
1278e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1279e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1280e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1281e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSfixed32(123)
1282e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSfixed32(456);
1283e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedSfixed32Count());
1284e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1285e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1286e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1287e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 12);
1288e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1289e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1290e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1291e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedSfixed32Count());
1292e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedSfixed32(0));
1293e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, newMsg.getRepeatedSfixed32(1));
1294e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1295e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1296e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedSfixed64() throws Exception {
1297e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1298e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedSfixed64Count());
1299e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedSfixed64(123);
1300e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedSfixed64Count());
1301e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedSfixed64(0));
1302e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedSfixed64(456);
1303e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedSfixed64Count());
1304e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, msg.getRepeatedSfixed64(0));
1305e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedSfixed64(1));
1306e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedSfixed64(0, 789);
1307e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedSfixed64Count());
1308e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(789, msg.getRepeatedSfixed64(0));
1309e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedSfixed64(1));
1310e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedSfixed64();
1311e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedSfixed64Count());
1312e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedSfixed64()
1313e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSfixed64(456);
1314e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedSfixed64Count());
1315e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, msg.getRepeatedSfixed64(0));
1316e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1317e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedSfixed64Count());
1318e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1319e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1320e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1321e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSfixed64(123);
1322e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedSfixed64Count());
1323e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1324e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1325e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1326e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 10);
1327e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1328e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1329e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedSfixed64Count());
1330e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedSfixed64(0));
1331e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1332e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1333e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1334e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSfixed64(123)
1335e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedSfixed64(456);
1336e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedSfixed64Count());
1337e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1338e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1339e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1340e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 20);
1341e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1342e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1343e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1344e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedSfixed64Count());
1345e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(123, newMsg.getRepeatedSfixed64(0));
1346e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(456, newMsg.getRepeatedSfixed64(1));
1347e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1348e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1349e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedFloat() throws Exception {
1350e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1351e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedFloatCount());
1352e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedFloat(123f);
1353e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedFloatCount());
1354e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(123f == msg.getRepeatedFloat(0));
1355e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedFloat(456f);
1356e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedFloatCount());
1357e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(123f == msg.getRepeatedFloat(0));
1358e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(456f == msg.getRepeatedFloat(1));
1359e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedFloat(0, 789f);
1360e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedFloatCount());
1361e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(789f == msg.getRepeatedFloat(0));
1362e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(456f == msg.getRepeatedFloat(1));
1363e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedFloat();
1364e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedFloatCount());
1365e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedFloat()
1366e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedFloat(456f);
1367e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedFloatCount());
1368e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(456f == msg.getRepeatedFloat(0));
1369e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1370e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedFloatCount());
1371e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1372e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1373e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1374e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedFloat(123f);
1375e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedFloatCount());
1376e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1377e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1378e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1379e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 6);
1380e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1381e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1382e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedFloatCount());
1383e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(123f == newMsg.getRepeatedFloat(0));
1384e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1385e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1386e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1387e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedFloat(123f)
1388e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedFloat(456f);
1389e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedFloatCount());
1390e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1391e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1392e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1393e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 12);
1394e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1395e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1396e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1397e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedFloatCount());
1398e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(123f == newMsg.getRepeatedFloat(0));
1399e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(456f == newMsg.getRepeatedFloat(1));
1400e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1401e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1402e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedDouble() throws Exception {
1403e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1404e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedDoubleCount());
1405e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedDouble(123.0);
1406e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedDoubleCount());
1407e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(123.0 == msg.getRepeatedDouble(0));
1408e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedDouble(456.0);
1409e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedDoubleCount());
1410e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(123.0 == msg.getRepeatedDouble(0));
1411e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(456.0 == msg.getRepeatedDouble(1));
1412e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedDouble(0, 789.0);
1413e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedDoubleCount());
1414e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(789.0 == msg.getRepeatedDouble(0));
1415e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(456.0 == msg.getRepeatedDouble(1));
1416e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedDouble();
1417e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedDoubleCount());
1418e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedDouble()
1419e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedDouble(456.0);
1420e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedDoubleCount());
1421e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(456.0 == msg.getRepeatedDouble(0));
1422e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1423e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedDoubleCount());
1424e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1425e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1426e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1427e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedDouble(123.0);
1428e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedDoubleCount());
1429e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1430e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1431e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1432e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 10);
1433e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1434e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1435e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedDoubleCount());
1436e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(123.0 == newMsg.getRepeatedDouble(0));
1437e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1438e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1439e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1440e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedDouble(123.0)
1441e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedDouble(456.0);
1442e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedDoubleCount());
1443e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1444e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1445e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1446e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 20);
1447e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1448e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1449e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1450e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedDoubleCount());
1451e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(123.0 == newMsg.getRepeatedDouble(0));
1452e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(456.0 == newMsg.getRepeatedDouble(1));
1453e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1454e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1455e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedBool() throws Exception {
1456e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1457e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedBoolCount());
1458e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedBool(true);
1459e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedBoolCount());
1460e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(true, msg.getRepeatedBool(0));
1461e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedBool(false);
1462e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedBoolCount());
1463e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(true, msg.getRepeatedBool(0));
1464e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(false, msg.getRepeatedBool(1));
1465e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedBool(0, false);
1466e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedBoolCount());
1467e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(false, msg.getRepeatedBool(0));
1468e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(false, msg.getRepeatedBool(1));
1469e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedBool();
1470e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedBoolCount());
1471e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedBool()
1472e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedBool(true);
1473e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedBoolCount());
1474e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(true, msg.getRepeatedBool(0));
1475e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1476e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedBoolCount());
1477e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1478e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1479e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1480e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedBool(false);
1481e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedBoolCount());
1482e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1483e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1484e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1485e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
1486e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1487e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1488e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedBoolCount());
1489e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(false, newMsg.getRepeatedBool(0));
1490e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1491e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1492e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1493e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedBool(true)
1494e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedBool(false);
1495e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedBoolCount());
1496e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1497e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1498e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1499e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 6);
1500e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1501e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1502e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1503e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedBoolCount());
1504e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(true, newMsg.getRepeatedBool(0));
1505e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(false, newMsg.getRepeatedBool(1));
1506e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1507e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1508e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedString() throws Exception {
1509e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1510e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedStringCount());
1511e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedString("hello");
1512e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedStringCount());
1513e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getRepeatedString(0));
1514e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedString("bye");
1515e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedStringCount());
1516e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getRepeatedString(0));
1517e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("bye", msg.getRepeatedString(1));
1518e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedString(0, "boo");
1519e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedStringCount());
1520e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("boo", msg.getRepeatedString(0));
1521e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("bye", msg.getRepeatedString(1));
1522e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedString();
1523e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedStringCount());
1524e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedString()
1525e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedString("hello");
1526e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedStringCount());
1527e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getRepeatedString(0));
1528e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1529e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedStringCount());
1530e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1531e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry and an empty string
1532e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1533e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedString("");
1534e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedStringCount());
1535e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1536e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1537e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1538e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
1539e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1540e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1541e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedStringCount());
1542e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("", newMsg.getRepeatedString(0));
1543e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1544e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1545e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1546e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedString("hello")
1547e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedString("world");
1548e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedStringCount());
1549e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1550e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1551e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1552e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 16);
1553e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1554e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1555e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1556e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedStringCount());
1557e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", newMsg.getRepeatedString(0));
1558e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("world", newMsg.getRepeatedString(1));
1559e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1560e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1561e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedBytes() throws Exception {
1562e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1563e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedBytesCount());
1564e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedBytes(ByteStringMicro.copyFromUtf8("hello"));
1565e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedBytesCount());
1566e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getRepeatedBytes(0).toStringUtf8());
1567e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedBytes(ByteStringMicro.copyFromUtf8("bye"));
1568e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedBytesCount());
1569e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getRepeatedBytes(0).toStringUtf8());
1570e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("bye", msg.getRepeatedBytes(1).toStringUtf8());
1571e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedBytes(0, ByteStringMicro.copyFromUtf8("boo"));
1572e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedBytesCount());
1573e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("boo", msg.getRepeatedBytes(0).toStringUtf8());
1574e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("bye", msg.getRepeatedBytes(1).toStringUtf8());
1575e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedBytes();
1576e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedBytesCount());
1577e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedBytes()
1578e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedBytes(ByteStringMicro.copyFromUtf8("hello"));
1579e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedBytesCount());
1580e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getRepeatedBytes(0).toStringUtf8());
1581e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1582e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedBytesCount());
1583e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1584e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry and an empty byte array can be serialized
1585e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1586e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedBytes(ByteStringMicro.copyFromUtf8(""));
1587e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedBytesCount());
1588e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("", msg.getRepeatedBytes(0).toStringUtf8());
1589e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1590e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1591e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1592e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
1593e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1594e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1595e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedBytesCount());
1596e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("", newMsg.getRepeatedBytes(0).toStringUtf8());
1597e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1598e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1599e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1600e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedBytes(ByteStringMicro.copyFromUtf8("hello"))
1601e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedBytes(ByteStringMicro.copyFromUtf8("world"));
1602e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedBytesCount());
1603e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1604e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1605e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1606e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 16);
1607e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1608e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1609e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1610e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedBytesCount());
1611e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", newMsg.getRepeatedBytes(0).toStringUtf8());
1612e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("world", newMsg.getRepeatedBytes(1).toStringUtf8());
1613e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1614e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1615e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedGroup() throws Exception {
1616e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1617e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro.RepeatedGroup group0 =
1618e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      new TestAllTypesMicro.RepeatedGroup().setA(0);
1619e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro.RepeatedGroup group1 =
1620e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      new TestAllTypesMicro.RepeatedGroup().setA(1);
1621e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro.RepeatedGroup group2 =
1622e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      new TestAllTypesMicro.RepeatedGroup().setA(2);
1623e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1624e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedGroup(group0);
1625e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedGroupCount());
1626e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedGroup(0).getA());
1627e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedGroup(group1);
1628e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedGroupCount());
1629e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedGroup(0).getA());
1630e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedGroup(1).getA());
1631e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedGroup(0, group2);
1632e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedGroupCount());
1633e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedGroup(0).getA());
1634e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedGroup(1).getA());
1635e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedGroup();
1636e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedGroupCount());
1637e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedGroup()
1638e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedGroup(group1);
1639e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedGroupCount());
1640e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedGroup(0).getA());
1641e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1642e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedGroupCount());
1643e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1644e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1645e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1646e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedGroup(group0);
1647e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedGroupCount());
1648e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1649e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1650e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1651e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 7);
1652e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1653e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1654e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedGroupCount());
1655e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, newMsg.getRepeatedGroup(0).getA());
1656e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1657e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1658e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1659e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedGroup(group0)
1660e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedGroup(group1);
1661e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedGroupCount());
1662e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1663e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1664e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1665e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 14);
1666e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1667e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1668e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1669e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedGroupCount());
1670e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, newMsg.getRepeatedGroup(0).getA());
1671e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedGroup(1).getA());
1672e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1673e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1674e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1675e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedNestedMessage() throws Exception {
1676e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1677e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro.NestedMessage nestedMsg0 =
1678e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      new TestAllTypesMicro.NestedMessage().setBb(0);
1679e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro.NestedMessage nestedMsg1 =
1680e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      new TestAllTypesMicro.NestedMessage().setBb(1);
1681e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro.NestedMessage nestedMsg2 =
1682e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      new TestAllTypesMicro.NestedMessage().setBb(2);
1683e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1684e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedNestedMessage(nestedMsg0);
1685e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedNestedMessageCount());
1686e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedNestedMessage(0).getBb());
1687e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedNestedMessage(nestedMsg1);
1688e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedNestedMessageCount());
1689e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedNestedMessage(0).getBb());
1690e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedNestedMessage(1).getBb());
1691e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedNestedMessage(0, nestedMsg2);
1692e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedNestedMessageCount());
1693e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedNestedMessage(0).getBb());
1694e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedNestedMessage(1).getBb());
1695e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedNestedMessage();
1696e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedNestedMessageCount());
1697e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedNestedMessage()
1698e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedNestedMessage(nestedMsg1);
1699e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedNestedMessageCount());
1700e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedNestedMessage(0).getBb());
1701e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1702e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedNestedMessageCount());
1703e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1704e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1705e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1706e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedNestedMessage(nestedMsg0);
1707e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedNestedMessageCount());
1708e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1709e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1710e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1711e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 5);
1712e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1713e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1714e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedNestedMessageCount());
1715e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, newMsg.getRepeatedNestedMessage(0).getBb());
1716e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1717e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1718e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1719e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedNestedMessage(nestedMsg0)
1720e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedNestedMessage(nestedMsg1);
1721e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedNestedMessageCount());
1722e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1723e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1724e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1725e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 10);
1726e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1727e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1728e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1729e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedNestedMessageCount());
1730e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, newMsg.getRepeatedNestedMessage(0).getBb());
1731e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedNestedMessage(1).getBb());
1732e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1733e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1734e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedForeignMessage() throws Exception {
1735e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1736e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    MicroOuterClass.ForeignMessageMicro foreignMsg0 =
1737e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      new MicroOuterClass.ForeignMessageMicro().setC(0);
1738e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    MicroOuterClass.ForeignMessageMicro foreignMsg1 =
1739e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      new MicroOuterClass.ForeignMessageMicro().setC(1);
1740e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    MicroOuterClass.ForeignMessageMicro foreignMsg2 =
1741e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      new MicroOuterClass.ForeignMessageMicro().setC(2);
1742e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1743e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedForeignMessage(foreignMsg0);
1744e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedForeignMessageCount());
1745e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedForeignMessage(0).getC());
1746e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedForeignMessage(foreignMsg1);
1747e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedForeignMessageCount());
1748e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedForeignMessage(0).getC());
1749e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedForeignMessage(1).getC());
1750e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedForeignMessage(0, foreignMsg2);
1751e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedForeignMessageCount());
1752e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedForeignMessage(0).getC());
1753e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedForeignMessage(1).getC());
1754e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedForeignMessage();
1755e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedForeignMessageCount());
1756e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedForeignMessage()
1757e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedForeignMessage(foreignMsg1);
1758e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedForeignMessageCount());
1759e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedForeignMessage(0).getC());
1760e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1761e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedForeignMessageCount());
1762e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1763e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1764e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1765e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedForeignMessage(foreignMsg0);
1766e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedForeignMessageCount());
1767e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1768e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1769e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1770e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 5);
1771e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1772e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1773e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedForeignMessageCount());
1774e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, newMsg.getRepeatedForeignMessage(0).getC());
1775e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1776e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1777e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1778e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedForeignMessage(foreignMsg0)
1779e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedForeignMessage(foreignMsg1);
1780e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedForeignMessageCount());
1781e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1782e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1783e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1784e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 10);
1785e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1786e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1787e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1788e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedForeignMessageCount());
1789e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, newMsg.getRepeatedForeignMessage(0).getC());
1790e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedForeignMessage(1).getC());
1791e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1792e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1793e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedImportMessage() throws Exception {
1794e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1795e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    UnittestImportMicro.ImportMessageMicro importMsg0 =
1796e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      new UnittestImportMicro.ImportMessageMicro().setD(0);
1797e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    UnittestImportMicro.ImportMessageMicro importMsg1 =
1798e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      new UnittestImportMicro.ImportMessageMicro().setD(1);
1799e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    UnittestImportMicro.ImportMessageMicro importMsg2 =
1800e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville      new UnittestImportMicro.ImportMessageMicro().setD(2);
1801e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1802e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedImportMessage(importMsg0);
1803e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedImportMessageCount());
1804e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedImportMessage(0).getD());
1805e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedImportMessage(importMsg1);
1806e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedImportMessageCount());
1807e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedImportMessage(0).getD());
1808e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedImportMessage(1).getD());
1809e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedImportMessage(0, importMsg2);
1810e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedImportMessageCount());
1811e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedImportMessage(0).getD());
1812e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedImportMessage(1).getD());
1813e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedImportMessage();
1814e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedImportMessageCount());
1815e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedImportMessage()
1816e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedImportMessage(importMsg1);
1817e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedImportMessageCount());
1818e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedImportMessage(0).getD());
1819e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1820e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedImportMessageCount());
1821e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1822e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1823e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1824e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedImportMessage(importMsg0);
1825e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedImportMessageCount());
1826e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1827e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1828e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1829e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 5);
1830e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1831e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1832e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedImportMessageCount());
1833e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, newMsg.getRepeatedImportMessage(0).getD());
1834e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1835e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1836e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1837e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedImportMessage(importMsg0)
1838e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedImportMessage(importMsg1);
1839e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedImportMessageCount());
1840e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1841e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1842e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1843e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 10);
1844e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1845e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1846e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1847e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedImportMessageCount());
1848e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, newMsg.getRepeatedImportMessage(0).getD());
1849e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedImportMessage(1).getD());
1850e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1851e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1852e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedNestedEnum() throws Exception {
1853e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1854e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedNestedEnum(TestAllTypesMicro.FOO);
1855e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedNestedEnumCount());
1856e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(TestAllTypesMicro.FOO, msg.getRepeatedNestedEnum(0));
1857e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedNestedEnum(TestAllTypesMicro.BAR);
1858e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedNestedEnumCount());
1859e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(TestAllTypesMicro.FOO, msg.getRepeatedNestedEnum(0));
1860e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(TestAllTypesMicro.BAR, msg.getRepeatedNestedEnum(1));
1861e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedNestedEnum(0, TestAllTypesMicro.BAZ);
1862e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedNestedEnumCount());
1863e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(TestAllTypesMicro.BAZ, msg.getRepeatedNestedEnum(0));
1864e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(TestAllTypesMicro.BAR, msg.getRepeatedNestedEnum(1));
1865e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedNestedEnum();
1866e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedNestedEnumCount());
1867e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedNestedEnum()
1868e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedNestedEnum(TestAllTypesMicro.BAR);
1869e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedNestedEnumCount());
1870e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(TestAllTypesMicro.BAR, msg.getRepeatedNestedEnum(0));
1871e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1872e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedNestedEnumCount());
1873e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1874e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1875e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1876e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedNestedEnum(TestAllTypesMicro.FOO);
1877e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1878e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1879e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1880e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
1881e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1882e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1883e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedNestedEnumCount());
1884e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(TestAllTypesMicro.FOO, msg.getRepeatedNestedEnum(0));
1885e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1886e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1887e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1888e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedNestedEnum(TestAllTypesMicro.FOO)
1889e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedNestedEnum(TestAllTypesMicro.BAR);
1890e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedNestedEnumCount());
1891e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1892e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1893e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1894e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 6);
1895e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1896e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1897e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1898e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedNestedEnumCount());
1899e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(TestAllTypesMicro.FOO, msg.getRepeatedNestedEnum(0));
1900e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(TestAllTypesMicro.BAR, msg.getRepeatedNestedEnum(1));
1901e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1902e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1903e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedForeignEnum() throws Exception {
1904e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1905e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedForeignEnum(MicroOuterClass.FOREIGN_MICRO_FOO);
1906e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedForeignEnumCount());
1907e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(MicroOuterClass.FOREIGN_MICRO_FOO, msg.getRepeatedForeignEnum(0));
1908e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedForeignEnum(MicroOuterClass.FOREIGN_MICRO_BAR);
1909e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedForeignEnumCount());
1910e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(MicroOuterClass.FOREIGN_MICRO_FOO, msg.getRepeatedForeignEnum(0));
1911e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR, msg.getRepeatedForeignEnum(1));
1912e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedForeignEnum(0, MicroOuterClass.FOREIGN_MICRO_BAZ);
1913e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedForeignEnumCount());
1914e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(MicroOuterClass.FOREIGN_MICRO_BAZ, msg.getRepeatedForeignEnum(0));
1915e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR, msg.getRepeatedForeignEnum(1));
1916e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedForeignEnum();
1917e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedForeignEnumCount());
1918e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedForeignEnum()
1919e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedForeignEnum(MicroOuterClass.FOREIGN_MICRO_BAR);
1920e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedForeignEnumCount());
1921e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR, msg.getRepeatedForeignEnum(0));
1922e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1923e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedForeignEnumCount());
1924e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1925e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1926e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1927e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedForeignEnum(MicroOuterClass.FOREIGN_MICRO_FOO);
1928e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1929e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1930e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1931e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
1932e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1933e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1934e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedForeignEnumCount());
1935e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(MicroOuterClass.FOREIGN_MICRO_FOO, msg.getRepeatedForeignEnum(0));
1936e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1937e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1938e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1939e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedForeignEnum(MicroOuterClass.FOREIGN_MICRO_FOO)
1940e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedForeignEnum(MicroOuterClass.FOREIGN_MICRO_BAR);
1941e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedForeignEnumCount());
1942e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1943e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1944e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1945e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 6);
1946e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1947e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1948e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
1949e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedForeignEnumCount());
1950e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(MicroOuterClass.FOREIGN_MICRO_FOO, msg.getRepeatedForeignEnum(0));
1951e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR, msg.getRepeatedForeignEnum(1));
1952e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
1953e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1954e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedImportEnum() throws Exception {
1955e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
1956e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedImportEnum(UnittestImportMicro.IMPORT_MICRO_FOO);
1957e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedImportEnumCount());
1958e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(UnittestImportMicro.IMPORT_MICRO_FOO, msg.getRepeatedImportEnum(0));
1959e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedImportEnum(UnittestImportMicro.IMPORT_MICRO_BAR);
1960e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedImportEnumCount());
1961e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(UnittestImportMicro.IMPORT_MICRO_FOO, msg.getRepeatedImportEnum(0));
1962e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR, msg.getRepeatedImportEnum(1));
1963e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedImportEnum(0, UnittestImportMicro.IMPORT_MICRO_BAZ);
1964e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedImportEnumCount());
1965e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(UnittestImportMicro.IMPORT_MICRO_BAZ, msg.getRepeatedImportEnum(0));
1966e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR, msg.getRepeatedImportEnum(1));
1967e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedImportEnum();
1968e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedImportEnumCount());
1969e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedImportEnum()
1970e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedImportEnum(UnittestImportMicro.IMPORT_MICRO_BAR);
1971e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedImportEnumCount());
1972e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR, msg.getRepeatedImportEnum(0));
1973e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
1974e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedImportEnumCount());
1975e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1976e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry
1977e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1978e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedImportEnum(UnittestImportMicro.IMPORT_MICRO_FOO);
1979e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
1980e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
1981e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1982e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
1983e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1984e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
1985e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedImportEnumCount());
1986e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(UnittestImportMicro.IMPORT_MICRO_FOO, msg.getRepeatedImportEnum(0));
1987e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1988e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
1989e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
1990e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedImportEnum(UnittestImportMicro.IMPORT_MICRO_FOO)
1991e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedImportEnum(UnittestImportMicro.IMPORT_MICRO_BAR);
1992e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedImportEnumCount());
1993e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
1994e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
1995e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
1996e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 6);
1997e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
1998e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
1999e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
2000e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedImportEnumCount());
2001e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(UnittestImportMicro.IMPORT_MICRO_FOO, msg.getRepeatedImportEnum(0));
2002e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR, msg.getRepeatedImportEnum(1));
2003e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
2004e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
2005e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedStringPiece() throws Exception {
2006e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
2007e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedStringPieceCount());
2008e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedStringPiece("hello");
2009e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedStringPieceCount());
2010e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getRepeatedStringPiece(0));
2011e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedStringPiece("bye");
2012e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedStringPieceCount());
2013e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getRepeatedStringPiece(0));
2014e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("bye", msg.getRepeatedStringPiece(1));
2015e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedStringPiece(0, "boo");
2016e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedStringPieceCount());
2017e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("boo", msg.getRepeatedStringPiece(0));
2018e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("bye", msg.getRepeatedStringPiece(1));
2019e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedStringPiece();
2020e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedStringPieceCount());
2021e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedStringPiece()
2022e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedStringPiece("hello");
2023e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedStringPieceCount());
2024e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getRepeatedStringPiece(0));
2025e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
2026e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedStringPieceCount());
2027e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
2028e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry and an empty string
2029e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
2030e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedStringPiece("");
2031e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedStringPieceCount());
2032e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
2033e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
2034e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
2035e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
2036e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
2037e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
2038e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedStringPieceCount());
2039e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("", newMsg.getRepeatedStringPiece(0));
2040e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
2041e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
2042e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
2043e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedStringPiece("hello")
2044e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedStringPiece("world");
2045e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedStringPieceCount());
2046e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
2047e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
2048e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
2049e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 16);
2050e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
2051e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
2052e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
2053e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedStringPieceCount());
2054e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", newMsg.getRepeatedStringPiece(0));
2055e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("world", newMsg.getRepeatedStringPiece(1));
2056e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
2057e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
2058e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroRepeatedCord() throws Exception {
2059e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
2060e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedCordCount());
2061e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedCord("hello");
2062e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedCordCount());
2063e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getRepeatedCord(0));
2064e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.addRepeatedCord("bye");
2065e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedCordCount());
2066e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getRepeatedCord(0));
2067e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("bye", msg.getRepeatedCord(1));
2068e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.setRepeatedCord(0, "boo");
2069e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedCordCount());
2070e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("boo", msg.getRepeatedCord(0));
2071e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("bye", msg.getRepeatedCord(1));
2072e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedCord();
2073e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedCordCount());
2074e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clearRepeatedCord()
2075e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedCord("hello");
2076e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedCordCount());
2077e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getRepeatedCord(0));
2078e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear();
2079e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(0, msg.getRepeatedCordCount());
2080e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
2081e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 1 entry and an empty string
2082e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
2083e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedCord("");
2084e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, msg.getRepeatedCordCount());
2085e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    byte [] result = msg.toByteArray();
2086e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int msgSerializedSize = msg.getSerializedSize();
2087e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
2088e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 3);
2089e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
2090e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro newMsg = TestAllTypesMicro.parseFrom(result);
2091e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(1, newMsg.getRepeatedCordCount());
2092e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("", newMsg.getRepeatedCord(0));
2093e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
2094e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    // Test 2 entries
2095e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msg.clear()
2096e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedCord("hello")
2097e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville       .addRepeatedCord("world");
2098e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, msg.getRepeatedCordCount());
2099e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    result = msg.toByteArray();
2100e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    msgSerializedSize = msg.getSerializedSize();
2101e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //System.out.printf("mss=%d result.length=%d\n", msgSerializedSize, result.length);
2102e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(msgSerializedSize == 16);
2103e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(result.length, msgSerializedSize);
2104e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
2105e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    newMsg = TestAllTypesMicro.parseFrom(result);
2106e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(2, newMsg.getRepeatedCordCount());
2107e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", newMsg.getRepeatedCord(0));
2108e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("world", newMsg.getRepeatedCord(1));
2109e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
2110e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
21118170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai  /**
2112624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   * Tests that code generation correctly wraps a single message into its outer
2113624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   * class. The class {@code SingleMessageMicro} is imported from the outer
2114624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   * class {@code UnittestSingleMicro}, whose name is implicit. Any error would
2115624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   * cause this method to fail compilation.
2116624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   */
2117624c448fbef20a1a2fad2289f622b468c25763d1Max Cai  public void testMicroSingle() throws Exception {
2118624c448fbef20a1a2fad2289f622b468c25763d1Max Cai    SingleMessageMicro msg = new SingleMessageMicro();
2119624c448fbef20a1a2fad2289f622b468c25763d1Max Cai  }
2120624c448fbef20a1a2fad2289f622b468c25763d1Max Cai
2121624c448fbef20a1a2fad2289f622b468c25763d1Max Cai  /**
2122624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   * Tests that code generation correctly skips generating the outer class if
2123624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   * unnecessary, letting a file-scope entity have the same name. The class
2124624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   * {@code MultipleNameClashMicro} shares the same name with the file's outer
2125624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   * class defined explicitly, but the file contains no other entities and has
2126624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   * java_multiple_files set. Any error would cause this method to fail
2127624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   * compilation.
2128624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   */
2129624c448fbef20a1a2fad2289f622b468c25763d1Max Cai  public void testMicroMultipleNameClash() throws Exception {
2130624c448fbef20a1a2fad2289f622b468c25763d1Max Cai    MultipleNameClashMicro msg = new MultipleNameClashMicro();
2131624c448fbef20a1a2fad2289f622b468c25763d1Max Cai    msg.setField(0);
2132624c448fbef20a1a2fad2289f622b468c25763d1Max Cai  }
2133624c448fbef20a1a2fad2289f622b468c25763d1Max Cai
2134624c448fbef20a1a2fad2289f622b468c25763d1Max Cai  /**
2135624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   * Tests that code generation correctly handles enums in different scopes in
2136624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   * a source file with the option java_multiple_files set to true. Any error
2137624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   * would cause this method to fail compilation.
2138624c448fbef20a1a2fad2289f622b468c25763d1Max Cai   */
2139624c448fbef20a1a2fad2289f622b468c25763d1Max Cai  public void testMicroMultipleEnumScoping() throws Exception {
2140624c448fbef20a1a2fad2289f622b468c25763d1Max Cai    FileScopeEnumRefMicro msg1 = new FileScopeEnumRefMicro();
2141624c448fbef20a1a2fad2289f622b468c25763d1Max Cai    msg1.setEnumField(UnittestMultipleMicro.ONE);
2142624c448fbef20a1a2fad2289f622b468c25763d1Max Cai    MessageScopeEnumRefMicro msg2 = new MessageScopeEnumRefMicro();
2143624c448fbef20a1a2fad2289f622b468c25763d1Max Cai    msg2.setEnumField(MessageScopeEnumRefMicro.TWO);
2144624c448fbef20a1a2fad2289f622b468c25763d1Max Cai  }
2145624c448fbef20a1a2fad2289f622b468c25763d1Max Cai
2146624c448fbef20a1a2fad2289f622b468c25763d1Max Cai  /**
21478170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai   * Tests that code generation with mixed values of the java_multiple_files
21488170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai   * options between the main source file and the imported source files would
21498170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai   * generate correct references. Any error would cause this method to fail
21508170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai   * compilation.
21518170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai   */
21528170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai  public void testMicroMultipleImportingNonMultiple() throws Exception {
21538170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai    UnittestImportMicro.ImportMessageMicro importMsg =
21548170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai        new UnittestImportMicro.ImportMessageMicro();
21558170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai    MultipleImportingNonMultipleMicro1 micro1 = new MultipleImportingNonMultipleMicro1();
21568170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai    micro1.setField(importMsg);
21578170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai    MultipleImportingNonMultipleMicro2 micro2 = new MultipleImportingNonMultipleMicro2();
21588170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai    micro2.setMicro1(micro1);
21598170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai  }
21608170787391efcb6cc6a8babc1cce35d5b1aff420Max Cai
2161e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  public void testMicroDefaults() throws Exception {
2162e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    TestAllTypesMicro msg = new TestAllTypesMicro();
2163e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultInt32());
2164e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(41, msg.getDefaultInt32());
2165e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultInt64());
2166e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(42, msg.getDefaultInt64());
2167e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultUint32());
2168e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(43, msg.getDefaultUint32());
2169e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultUint64());
2170e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(44, msg.getDefaultUint64());
2171e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultSint32());
2172e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(-45, msg.getDefaultSint32());
2173e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultSint64());
2174e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(46, msg.getDefaultSint64());
2175e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultFixed32());
2176e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(47, msg.getDefaultFixed32());
2177e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultFixed64());
2178e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(48, msg.getDefaultFixed64());
2179e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultSfixed32());
2180e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(49, msg.getDefaultSfixed32());
2181e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultSfixed64());
2182e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(-50, msg.getDefaultSfixed64());
2183e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultFloat());
2184e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(51.5f == msg.getDefaultFloat());
2185e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultDouble());
2186e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertTrue(52.0e3 == msg.getDefaultDouble());
2187e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultBool());
2188e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(true, msg.getDefaultBool());
2189e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultString());
2190e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("hello", msg.getDefaultString());
2191e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultBytes());
2192e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals("world", msg.getDefaultBytes().toStringUtf8());
2193e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultNestedEnum());
2194e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(TestAllTypesMicro.BAR, msg.getDefaultNestedEnum());
2195e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultForeignEnum());
2196e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(MicroOuterClass.FOREIGN_MICRO_BAR, msg.getDefaultForeignEnum());
2197e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertFalse(msg.hasDefaultImportEnum());
2198e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    assertEquals(UnittestImportMicro.IMPORT_MICRO_BAR, msg.getDefaultImportEnum());
21990f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith    assertFalse(msg.hasDefaultFloatInf());
22000f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith    assertEquals(Float.POSITIVE_INFINITY, msg.getDefaultFloatInf());
22010f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith    assertFalse(msg.hasDefaultFloatNegInf());
22020f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith    assertEquals(Float.NEGATIVE_INFINITY, msg.getDefaultFloatNegInf());
22030f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith    assertFalse(msg.hasDefaultFloatNan());
22040f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith    assertEquals(Float.NaN, msg.getDefaultFloatNan());
22050f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith    assertFalse(msg.hasDefaultDoubleInf());
22060f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith    assertEquals(Double.POSITIVE_INFINITY, msg.getDefaultDoubleInf());
22070f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith    assertFalse(msg.hasDefaultDoubleNegInf());
22080f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith    assertEquals(Double.NEGATIVE_INFINITY, msg.getDefaultDoubleNegInf());
22090f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith    assertFalse(msg.hasDefaultDoubleNan());
22100f2ca89132ab81441f7eb351c7a053a8c8d9d1c3Chris Smith    assertEquals(Double.NaN, msg.getDefaultDoubleNan());
2211e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville  }
22128a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville
22138a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville  /**
22148a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville   * Test that a bug in skipRawBytes() has been fixed:  if the skip skips
22158a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville   * exactly up to a limit, this should not break things.
22168a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville   */
22178a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville  public void testSkipRawBytesBug() throws Exception {
22188a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    byte[] rawBytes = new byte[] { 1, 2 };
22198a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    CodedInputStreamMicro input = CodedInputStreamMicro.newInstance(rawBytes);
22208a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville
22218a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    int limit = input.pushLimit(1);
22228a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    input.skipRawBytes(1);
22238a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    input.popLimit(limit);
22248a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    assertEquals(2, input.readRawByte());
22258a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville  }
22268a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville
22278a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville  /**
22288a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville   * Test that a bug in skipRawBytes() has been fixed:  if the skip skips
22298a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville   * past the end of a buffer with a limit that has been set past the end of
22308a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville   * that buffer, this should not break things.
22318a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville   */
22328a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville  public void testSkipRawBytesPastEndOfBufferWithLimit() throws Exception {
22338a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    byte[] rawBytes = new byte[] { 1, 2, 3, 4, 5 };
22348a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    CodedInputStreamMicro input = CodedInputStreamMicro.newInstance(
22358a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville        new SmallBlockInputStream(rawBytes, 3));
22368a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville
22378a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    int limit = input.pushLimit(4);
22388a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    // In order to expose the bug we need to read at least one byte to prime the
22398a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    // buffer inside the CodedInputStream.
22408a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    assertEquals(1, input.readRawByte());
22418a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    // Skip to the end of the limit.
22428a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    input.skipRawBytes(3);
22438a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    assertTrue(input.isAtEnd());
22448a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    input.popLimit(limit);
22458a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    assertEquals(5, input.readRawByte());
22468a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville  }
22478a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville
22488a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville  /**
22498a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville   * An InputStream which limits the number of bytes it reads at a time.
22508a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville   * We use this to make sure that CodedInputStream doesn't screw up when
22518a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville   * reading in small blocks.
22528a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville   */
22538a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville  private static final class SmallBlockInputStream extends FilterInputStream {
22548a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    private final int blockSize;
22558a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville
22568a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    public SmallBlockInputStream(byte[] data, int blockSize) {
22578a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville      this(new ByteArrayInputStream(data), blockSize);
22588a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    }
22598a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville
22608a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    public SmallBlockInputStream(InputStream in, int blockSize) {
22618a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville      super(in);
22628a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville      this.blockSize = blockSize;
22638a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    }
22648a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville
22658a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    public int read(byte[] b) throws IOException {
22668a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville      return super.read(b, 0, Math.min(b.length, blockSize));
22678a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    }
22688a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville
22698a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    public int read(byte[] b, int off, int len) throws IOException {
22708a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville      return super.read(b, off, Math.min(len, blockSize));
22718a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville    }
22728a2f7578bb6289415f1d0a01c9cc96d283730480Wink Saville  }
2273e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville}
2274