1fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Protocol Buffers - Google's data interchange format
2fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Copyright 2008 Google Inc.  All rights reserved.
3fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// http://code.google.com/p/protobuf/
4fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville//
5fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Redistribution and use in source and binary forms, with or without
6fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// modification, are permitted provided that the following conditions are
7fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// met:
8fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville//
9fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville//     * Redistributions of source code must retain the above copyright
10fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// notice, this list of conditions and the following disclaimer.
11fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville//     * Redistributions in binary form must reproduce the above
12fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// copyright notice, this list of conditions and the following disclaimer
13fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// in the documentation and/or other materials provided with the
14fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// distribution.
15fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville//     * Neither the name of Google Inc. nor the names of its
16fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// contributors may be used to endorse or promote products derived from
17fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// this software without specific prior written permission.
18fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville//
19fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
31fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Author: kenton@google.com (Kenton Varda)
32fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville//  Based on original Protocol Buffers design by
33fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville//  Sanjay Ghemawat, Jeff Dean, and others.
34fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
35fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef _WIN32
36fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Verify that #including windows.h does not break anything (e.g. because
37fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// windows.h #defines GetMessage() as a macro).
38fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <windows.h>
39fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
40fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
41fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <google/protobuf/test_util.h>
42fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <google/protobuf/descriptor.h>
43fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <google/protobuf/message.h>
44fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
45fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <google/protobuf/stubs/common.h>
46fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <google/protobuf/testing/googletest.h>
47fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <gtest/gtest.h>
48fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
49fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenamespace google {
50fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenamespace protobuf {
51fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
52fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::SetAllFields(unittest::TestAllTypes* message) {
53fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_int32   (101);
54fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_int64   (102);
55fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_uint32  (103);
56fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_uint64  (104);
57fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_sint32  (105);
58fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_sint64  (106);
59fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_fixed32 (107);
60fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_fixed64 (108);
61fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_sfixed32(109);
62fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_sfixed64(110);
63fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_float   (111);
64fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_double  (112);
65fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_bool    (true);
66fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_string  ("115");
67fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_bytes   ("116");
68fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
69fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->mutable_optionalgroup           ()->set_a(117);
70fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->mutable_optional_nested_message ()->set_bb(118);
71fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->mutable_optional_foreign_message()->set_c(119);
72fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->mutable_optional_import_message ()->set_d(120);
73fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
74fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_nested_enum (unittest::TestAllTypes::BAZ);
75fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_foreign_enum(unittest::FOREIGN_BAZ      );
76fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_optional_import_enum (unittest_import::IMPORT_BAZ);
77fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
78fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // StringPiece and Cord fields are only accessible via reflection in the
79fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // open source release; see comments in compiler/cpp/string_field.cc.
80fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef PROTOBUF_TEST_NO_DESCRIPTORS
81fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->GetReflection()->SetString(
82fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message,
83fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message->GetDescriptor()->FindFieldByName("optional_string_piece"),
84fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    "124");
85fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->GetReflection()->SetString(
86fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message,
87fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message->GetDescriptor()->FindFieldByName("optional_cord"),
88fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    "125");
89fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif  // !PROTOBUF_TEST_NO_DESCRIPTORS
90fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
91fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // -----------------------------------------------------------------
92fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
93fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_int32   (201);
94fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_int64   (202);
95fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_uint32  (203);
96fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_uint64  (204);
97fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_sint32  (205);
98fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_sint64  (206);
99fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_fixed32 (207);
100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_fixed64 (208);
101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_sfixed32(209);
102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_sfixed64(210);
103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_float   (211);
104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_double  (212);
105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_bool    (true);
106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_string  ("215");
107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_bytes   ("216");
108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeatedgroup           ()->set_a(217);
110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_nested_message ()->set_bb(218);
111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_foreign_message()->set_c(219);
112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_import_message ()->set_d(220);
113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_nested_enum (unittest::TestAllTypes::BAR);
115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_foreign_enum(unittest::FOREIGN_BAR      );
116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_import_enum (unittest_import::IMPORT_BAR);
117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef PROTOBUF_TEST_NO_DESCRIPTORS
119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->GetReflection()->AddString(
120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message,
121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message->GetDescriptor()->FindFieldByName("repeated_string_piece"),
122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    "224");
123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->GetReflection()->AddString(
124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message,
125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message->GetDescriptor()->FindFieldByName("repeated_cord"),
126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    "225");
127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif  // !PROTOBUF_TEST_NO_DESCRIPTORS
128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Add a second one of each field.
130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_int32   (301);
131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_int64   (302);
132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_uint32  (303);
133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_uint64  (304);
134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_sint32  (305);
135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_sint64  (306);
136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_fixed32 (307);
137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_fixed64 (308);
138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_sfixed32(309);
139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_sfixed64(310);
140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_float   (311);
141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_double  (312);
142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_bool    (false);
143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_string  ("315");
144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_bytes   ("316");
145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeatedgroup           ()->set_a(317);
147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_nested_message ()->set_bb(318);
148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_foreign_message()->set_c(319);
149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_import_message ()->set_d(320);
150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_nested_enum (unittest::TestAllTypes::BAZ);
152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_foreign_enum(unittest::FOREIGN_BAZ      );
153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_repeated_import_enum (unittest_import::IMPORT_BAZ);
154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef PROTOBUF_TEST_NO_DESCRIPTORS
156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->GetReflection()->AddString(
157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message,
158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message->GetDescriptor()->FindFieldByName("repeated_string_piece"),
159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    "324");
160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->GetReflection()->AddString(
161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message,
162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message->GetDescriptor()->FindFieldByName("repeated_cord"),
163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    "325");
164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif  // !PROTOBUF_TEST_NO_DESCRIPTORS
165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // -----------------------------------------------------------------
167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_int32   (401);
169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_int64   (402);
170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_uint32  (403);
171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_uint64  (404);
172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_sint32  (405);
173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_sint64  (406);
174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_fixed32 (407);
175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_fixed64 (408);
176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_sfixed32(409);
177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_sfixed64(410);
178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_float   (411);
179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_double  (412);
180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_bool    (false);
181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_string  ("415");
182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_bytes   ("416");
183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_nested_enum (unittest::TestAllTypes::FOO);
185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_foreign_enum(unittest::FOREIGN_FOO      );
186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_default_import_enum (unittest_import::IMPORT_FOO);
187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef PROTOBUF_TEST_NO_DESCRIPTORS
189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->GetReflection()->SetString(
190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message,
191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message->GetDescriptor()->FindFieldByName("default_string_piece"),
192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    "424");
193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->GetReflection()->SetString(
194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message,
195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message->GetDescriptor()->FindFieldByName("default_cord"),
196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    "425");
197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif  // !PROTOBUF_TEST_NO_DESCRIPTORS
198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ModifyRepeatedFields(unittest::TestAllTypes* message) {
203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_int32   (1, 501);
204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_int64   (1, 502);
205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_uint32  (1, 503);
206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_uint64  (1, 504);
207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_sint32  (1, 505);
208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_sint64  (1, 506);
209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_fixed32 (1, 507);
210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_fixed64 (1, 508);
211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_sfixed32(1, 509);
212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_sfixed64(1, 510);
213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_float   (1, 511);
214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_double  (1, 512);
215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_bool    (1, true);
216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_string  (1, "515");
217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_bytes   (1, "516");
218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->mutable_repeatedgroup           (1)->set_a(517);
220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->mutable_repeated_nested_message (1)->set_bb(518);
221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->mutable_repeated_foreign_message(1)->set_c(519);
222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->mutable_repeated_import_message (1)->set_d(520);
223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_nested_enum (1, unittest::TestAllTypes::FOO);
225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_foreign_enum(1, unittest::FOREIGN_FOO      );
226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_repeated_import_enum (1, unittest_import::IMPORT_FOO);
227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef PROTOBUF_TEST_NO_DESCRIPTORS
229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->GetReflection()->SetRepeatedString(
230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message,
231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message->GetDescriptor()->FindFieldByName("repeated_string_piece"),
232d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville    1, "524");
233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->GetReflection()->SetRepeatedString(
234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message,
235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    message->GetDescriptor()->FindFieldByName("repeated_cord"),
236d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville    1, "525");
237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif  // !PROTOBUF_TEST_NO_DESCRIPTORS
238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectAllFieldsSet(const unittest::TestAllTypes& message) {
243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_int32   ());
244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_int64   ());
245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_uint32  ());
246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_uint64  ());
247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_sint32  ());
248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_sint64  ());
249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_fixed32 ());
250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_fixed64 ());
251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_sfixed32());
252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_sfixed64());
253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_float   ());
254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_double  ());
255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_bool    ());
256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_string  ());
257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_bytes   ());
258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optionalgroup           ());
260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_nested_message ());
261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_foreign_message());
262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_import_message ());
263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.optionalgroup           ().has_a());
265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.optional_nested_message ().has_bb());
266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.optional_foreign_message().has_c());
267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.optional_import_message ().has_d());
268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_nested_enum ());
270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_foreign_enum());
271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_import_enum ());
272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef PROTOBUF_TEST_NO_DESCRIPTORS
274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_string_piece());
275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_optional_cord());
276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(101  , message.optional_int32   ());
279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(102  , message.optional_int64   ());
280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(103  , message.optional_uint32  ());
281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(104  , message.optional_uint64  ());
282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(105  , message.optional_sint32  ());
283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(106  , message.optional_sint64  ());
284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(107  , message.optional_fixed32 ());
285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(108  , message.optional_fixed64 ());
286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(109  , message.optional_sfixed32());
287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(110  , message.optional_sfixed64());
288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(111  , message.optional_float   ());
289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(112  , message.optional_double  ());
290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.optional_bool    ());
291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("115", message.optional_string  ());
292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("116", message.optional_bytes   ());
293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(117, message.optionalgroup           ().a());
295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(118, message.optional_nested_message ().bb());
296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(119, message.optional_foreign_message().c());
297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(120, message.optional_import_message ().d());
298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAZ, message.optional_nested_enum ());
300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAZ      , message.optional_foreign_enum());
301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAZ, message.optional_import_enum ());
302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // -----------------------------------------------------------------
305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_int32_size   ());
307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_int64_size   ());
308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_uint32_size  ());
309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_uint64_size  ());
310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_sint32_size  ());
311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_sint64_size  ());
312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_fixed32_size ());
313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_fixed64_size ());
314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_sfixed32_size());
315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_sfixed64_size());
316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_float_size   ());
317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_double_size  ());
318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_bool_size    ());
319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_string_size  ());
320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_bytes_size   ());
321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeatedgroup_size           ());
323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_nested_message_size ());
324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_foreign_message_size());
325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_import_message_size ());
326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_nested_enum_size    ());
327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_foreign_enum_size   ());
328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_import_enum_size    ());
329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef PROTOBUF_TEST_NO_DESCRIPTORS
331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_string_piece_size());
332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_cord_size());
333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(201  , message.repeated_int32   (0));
336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(202  , message.repeated_int64   (0));
337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(203  , message.repeated_uint32  (0));
338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(204  , message.repeated_uint64  (0));
339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(205  , message.repeated_sint32  (0));
340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(206  , message.repeated_sint64  (0));
341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(207  , message.repeated_fixed32 (0));
342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(208  , message.repeated_fixed64 (0));
343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(209  , message.repeated_sfixed32(0));
344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(210  , message.repeated_sfixed64(0));
345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(211  , message.repeated_float   (0));
346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(212  , message.repeated_double  (0));
347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.repeated_bool    (0));
348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("215", message.repeated_string  (0));
349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("216", message.repeated_bytes   (0));
350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(217, message.repeatedgroup           (0).a());
352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(218, message.repeated_nested_message (0).bb());
353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(219, message.repeated_foreign_message(0).c());
354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(220, message.repeated_import_message (0).d());
355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAR, message.repeated_nested_enum (0));
358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR      , message.repeated_foreign_enum(0));
359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAR, message.repeated_import_enum (0));
360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(301  , message.repeated_int32   (1));
362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(302  , message.repeated_int64   (1));
363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(303  , message.repeated_uint32  (1));
364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(304  , message.repeated_uint64  (1));
365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(305  , message.repeated_sint32  (1));
366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(306  , message.repeated_sint64  (1));
367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(307  , message.repeated_fixed32 (1));
368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(308  , message.repeated_fixed64 (1));
369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(309  , message.repeated_sfixed32(1));
370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(310  , message.repeated_sfixed64(1));
371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(311  , message.repeated_float   (1));
372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(312  , message.repeated_double  (1));
373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, message.repeated_bool    (1));
374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("315", message.repeated_string  (1));
375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("316", message.repeated_bytes   (1));
376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(317, message.repeatedgroup           (1).a());
378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(318, message.repeated_nested_message (1).bb());
379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(319, message.repeated_foreign_message(1).c());
380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(320, message.repeated_import_message (1).d());
381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAZ, message.repeated_nested_enum (1));
383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAZ      , message.repeated_foreign_enum(1));
384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAZ, message.repeated_import_enum (1));
385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // -----------------------------------------------------------------
388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_int32   ());
390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_int64   ());
391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_uint32  ());
392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_uint64  ());
393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_sint32  ());
394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_sint64  ());
395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_fixed32 ());
396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_fixed64 ());
397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_sfixed32());
398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_sfixed64());
399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_float   ());
400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_double  ());
401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_bool    ());
402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_string  ());
403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_bytes   ());
404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_nested_enum ());
406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_foreign_enum());
407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.has_default_import_enum ());
408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(401  , message.default_int32   ());
411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(402  , message.default_int64   ());
412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(403  , message.default_uint32  ());
413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(404  , message.default_uint64  ());
414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(405  , message.default_sint32  ());
415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(406  , message.default_sint64  ());
416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(407  , message.default_fixed32 ());
417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(408  , message.default_fixed64 ());
418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(409  , message.default_sfixed32());
419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(410  , message.default_sfixed64());
420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(411  , message.default_float   ());
421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(412  , message.default_double  ());
422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, message.default_bool    ());
423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("415", message.default_string  ());
424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("416", message.default_bytes   ());
425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::FOO, message.default_nested_enum ());
427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_FOO      , message.default_foreign_enum());
428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_FOO, message.default_import_enum ());
429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectClear(const unittest::TestAllTypes& message) {
435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // has_blah() should initially be false for all optional fields.
436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_int32   ());
437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_int64   ());
438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_uint32  ());
439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_uint64  ());
440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_sint32  ());
441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_sint64  ());
442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_fixed32 ());
443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_fixed64 ());
444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_sfixed32());
445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_sfixed64());
446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_float   ());
447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_double  ());
448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_bool    ());
449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_string  ());
450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_bytes   ());
451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optionalgroup           ());
453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_nested_message ());
454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_foreign_message());
455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_import_message ());
456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_nested_enum ());
458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_foreign_enum());
459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_import_enum ());
460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_string_piece());
462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_optional_cord());
463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Optional fields without defaults are set to zero or something like it.
465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.optional_int32   ());
466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.optional_int64   ());
467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.optional_uint32  ());
468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.optional_uint64  ());
469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.optional_sint32  ());
470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.optional_sint64  ());
471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.optional_fixed32 ());
472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.optional_fixed64 ());
473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.optional_sfixed32());
474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.optional_sfixed64());
475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.optional_float   ());
476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.optional_double  ());
477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, message.optional_bool    ());
478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(""   , message.optional_string  ());
479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(""   , message.optional_bytes   ());
480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Embedded messages should also be clear.
482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.optionalgroup           ().has_a());
483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.optional_nested_message ().has_bb());
484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.optional_foreign_message().has_c());
485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.optional_import_message ().has_d());
486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.optionalgroup           ().a());
488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.optional_nested_message ().bb());
489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.optional_foreign_message().c());
490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.optional_import_message ().d());
491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Enums without defaults are set to the first value in the enum.
493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::FOO, message.optional_nested_enum ());
494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_FOO      , message.optional_foreign_enum());
495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_FOO, message.optional_import_enum ());
496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Repeated fields are empty.
499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_int32_size   ());
500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_int64_size   ());
501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_uint32_size  ());
502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_uint64_size  ());
503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_sint32_size  ());
504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_sint64_size  ());
505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_fixed32_size ());
506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_fixed64_size ());
507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_sfixed32_size());
508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_sfixed64_size());
509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_float_size   ());
510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_double_size  ());
511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_bool_size    ());
512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_string_size  ());
513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_bytes_size   ());
514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeatedgroup_size           ());
516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_nested_message_size ());
517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_foreign_message_size());
518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_import_message_size ());
519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_nested_enum_size    ());
520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_foreign_enum_size   ());
521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_import_enum_size    ());
522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_string_piece_size());
524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.repeated_cord_size());
525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // has_blah() should also be false for all default fields.
527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_int32   ());
528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_int64   ());
529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_uint32  ());
530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_uint64  ());
531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_sint32  ());
532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_sint64  ());
533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_fixed32 ());
534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_fixed64 ());
535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_sfixed32());
536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_sfixed64());
537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_float   ());
538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_double  ());
539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_bool    ());
540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_string  ());
541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_bytes   ());
542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_nested_enum ());
544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_foreign_enum());
545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.has_default_import_enum ());
546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Fields with defaults have their default values (duh).
549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 41    , message.default_int32   ());
550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 42    , message.default_int64   ());
551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 43    , message.default_uint32  ());
552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 44    , message.default_uint64  ());
553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(-45    , message.default_sint32  ());
554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 46    , message.default_sint64  ());
555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 47    , message.default_fixed32 ());
556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 48    , message.default_fixed64 ());
557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 49    , message.default_sfixed32());
558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(-50    , message.default_sfixed64());
559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 51.5  , message.default_float   ());
560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 52e3  , message.default_double  ());
561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true   , message.default_bool    ());
562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("hello", message.default_string  ());
563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("world", message.default_bytes   ());
564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAR, message.default_nested_enum ());
566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR      , message.default_foreign_enum());
567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAR, message.default_import_enum ());
568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectRepeatedFieldsModified(
574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const unittest::TestAllTypes& message) {
575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // ModifyRepeatedFields only sets the second repeated element of each
576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // field.  In addition to verifying this, we also verify that the first
577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // element and size were *not* modified.
578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_int32_size   ());
579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_int64_size   ());
580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_uint32_size  ());
581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_uint64_size  ());
582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_sint32_size  ());
583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_sint64_size  ());
584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_fixed32_size ());
585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_fixed64_size ());
586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_sfixed32_size());
587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_sfixed64_size());
588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_float_size   ());
589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_double_size  ());
590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_bool_size    ());
591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_string_size  ());
592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_bytes_size   ());
593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeatedgroup_size           ());
595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_nested_message_size ());
596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_foreign_message_size());
597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_import_message_size ());
598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_nested_enum_size    ());
599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_foreign_enum_size   ());
600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_import_enum_size    ());
601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef PROTOBUF_TEST_NO_DESCRIPTORS
603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_string_piece_size());
604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_cord_size());
605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(201  , message.repeated_int32   (0));
608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(202  , message.repeated_int64   (0));
609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(203  , message.repeated_uint32  (0));
610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(204  , message.repeated_uint64  (0));
611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(205  , message.repeated_sint32  (0));
612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(206  , message.repeated_sint64  (0));
613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(207  , message.repeated_fixed32 (0));
614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(208  , message.repeated_fixed64 (0));
615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(209  , message.repeated_sfixed32(0));
616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(210  , message.repeated_sfixed64(0));
617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(211  , message.repeated_float   (0));
618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(212  , message.repeated_double  (0));
619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.repeated_bool    (0));
620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("215", message.repeated_string  (0));
621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("216", message.repeated_bytes   (0));
622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(217, message.repeatedgroup           (0).a());
624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(218, message.repeated_nested_message (0).bb());
625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(219, message.repeated_foreign_message(0).c());
626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(220, message.repeated_import_message (0).d());
627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAR, message.repeated_nested_enum (0));
629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR      , message.repeated_foreign_enum(0));
630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAR, message.repeated_import_enum (0));
631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Actually verify the second (modified) elements now.
634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(501  , message.repeated_int32   (1));
635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(502  , message.repeated_int64   (1));
636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(503  , message.repeated_uint32  (1));
637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(504  , message.repeated_uint64  (1));
638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(505  , message.repeated_sint32  (1));
639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(506  , message.repeated_sint64  (1));
640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(507  , message.repeated_fixed32 (1));
641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(508  , message.repeated_fixed64 (1));
642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(509  , message.repeated_sfixed32(1));
643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(510  , message.repeated_sfixed64(1));
644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(511  , message.repeated_float   (1));
645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(512  , message.repeated_double  (1));
646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.repeated_bool    (1));
647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("515", message.repeated_string  (1));
648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("516", message.repeated_bytes   (1));
649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(517, message.repeatedgroup           (1).a());
651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(518, message.repeated_nested_message (1).bb());
652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(519, message.repeated_foreign_message(1).c());
653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(520, message.repeated_import_message (1).d());
654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::FOO, message.repeated_nested_enum (1));
656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_FOO      , message.repeated_foreign_enum(1));
657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_FOO, message.repeated_import_enum (1));
658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::SetPackedFields(unittest::TestPackedTypes* message) {
664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_int32   (601);
665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_int64   (602);
666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_uint32  (603);
667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_uint64  (604);
668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_sint32  (605);
669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_sint64  (606);
670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_fixed32 (607);
671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_fixed64 (608);
672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_sfixed32(609);
673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_sfixed64(610);
674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_float   (611);
675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_double  (612);
676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_bool    (true);
677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_enum    (unittest::FOREIGN_BAR);
678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // add a second one of each field
679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_int32   (701);
680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_int64   (702);
681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_uint32  (703);
682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_uint64  (704);
683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_sint32  (705);
684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_sint64  (706);
685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_fixed32 (707);
686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_fixed64 (708);
687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_sfixed32(709);
688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_sfixed64(710);
689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_float   (711);
690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_double  (712);
691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_bool    (false);
692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->add_packed_enum    (unittest::FOREIGN_BAZ);
693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
695d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Savillevoid TestUtil::SetUnpackedFields(unittest::TestUnpackedTypes* message) {
696d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  // The values applied here must match those of SetPackedFields.
697d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville
698d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_int32   (601);
699d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_int64   (602);
700d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_uint32  (603);
701d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_uint64  (604);
702d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_sint32  (605);
703d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_sint64  (606);
704d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_fixed32 (607);
705d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_fixed64 (608);
706d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_sfixed32(609);
707d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_sfixed64(610);
708d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_float   (611);
709d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_double  (612);
710d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_bool    (true);
711d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_enum    (unittest::FOREIGN_BAR);
712d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  // add a second one of each field
713d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_int32   (701);
714d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_int64   (702);
715d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_uint32  (703);
716d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_uint64  (704);
717d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_sint32  (705);
718d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_sint64  (706);
719d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_fixed32 (707);
720d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_fixed64 (708);
721d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_sfixed32(709);
722d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_sfixed64(710);
723d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_float   (711);
724d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_double  (712);
725d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_bool    (false);
726d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  message->add_unpacked_enum    (unittest::FOREIGN_BAZ);
727d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville}
728d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville
729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ModifyPackedFields(unittest::TestPackedTypes* message) {
732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_int32   (1, 801);
733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_int64   (1, 802);
734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_uint32  (1, 803);
735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_uint64  (1, 804);
736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_sint32  (1, 805);
737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_sint64  (1, 806);
738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_fixed32 (1, 807);
739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_fixed64 (1, 808);
740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_sfixed32(1, 809);
741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_sfixed64(1, 810);
742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_float   (1, 811);
743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_double  (1, 812);
744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_bool    (1, true);
745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_packed_enum    (1, unittest::FOREIGN_FOO);
746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectPackedFieldsSet(const unittest::TestPackedTypes& message) {
751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_int32_size   ());
752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_int64_size   ());
753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_uint32_size  ());
754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_uint64_size  ());
755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_sint32_size  ());
756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_sint64_size  ());
757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_fixed32_size ());
758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_fixed64_size ());
759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_sfixed32_size());
760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_sfixed64_size());
761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_float_size   ());
762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_double_size  ());
763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_bool_size    ());
764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_enum_size    ());
765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(601  , message.packed_int32   (0));
767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(602  , message.packed_int64   (0));
768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(603  , message.packed_uint32  (0));
769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(604  , message.packed_uint64  (0));
770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(605  , message.packed_sint32  (0));
771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(606  , message.packed_sint64  (0));
772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(607  , message.packed_fixed32 (0));
773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(608  , message.packed_fixed64 (0));
774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(609  , message.packed_sfixed32(0));
775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(610  , message.packed_sfixed64(0));
776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(611  , message.packed_float   (0));
777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(612  , message.packed_double  (0));
778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.packed_bool    (0));
779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR, message.packed_enum(0));
780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(701  , message.packed_int32   (1));
782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(702  , message.packed_int64   (1));
783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(703  , message.packed_uint32  (1));
784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(704  , message.packed_uint64  (1));
785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(705  , message.packed_sint32  (1));
786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(706  , message.packed_sint64  (1));
787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(707  , message.packed_fixed32 (1));
788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(708  , message.packed_fixed64 (1));
789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(709  , message.packed_sfixed32(1));
790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(710  , message.packed_sfixed64(1));
791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(711  , message.packed_float   (1));
792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(712  , message.packed_double  (1));
793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, message.packed_bool    (1));
794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAZ, message.packed_enum(1));
795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
797d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Savillevoid TestUtil::ExpectUnpackedFieldsSet(
798d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville    const unittest::TestUnpackedTypes& message) {
799d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  // The values expected here must match those of ExpectPackedFieldsSet.
800d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville
801d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_int32_size   ());
802d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_int64_size   ());
803d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_uint32_size  ());
804d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_uint64_size  ());
805d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_sint32_size  ());
806d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_sint64_size  ());
807d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_fixed32_size ());
808d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_fixed64_size ());
809d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_sfixed32_size());
810d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_sfixed64_size());
811d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_float_size   ());
812d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_double_size  ());
813d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_bool_size    ());
814d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  ASSERT_EQ(2, message.unpacked_enum_size    ());
815d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville
816d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(601  , message.unpacked_int32   (0));
817d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(602  , message.unpacked_int64   (0));
818d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(603  , message.unpacked_uint32  (0));
819d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(604  , message.unpacked_uint64  (0));
820d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(605  , message.unpacked_sint32  (0));
821d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(606  , message.unpacked_sint64  (0));
822d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(607  , message.unpacked_fixed32 (0));
823d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(608  , message.unpacked_fixed64 (0));
824d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(609  , message.unpacked_sfixed32(0));
825d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(610  , message.unpacked_sfixed64(0));
826d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(611  , message.unpacked_float   (0));
827d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(612  , message.unpacked_double  (0));
828d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(true , message.unpacked_bool    (0));
829d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(unittest::FOREIGN_BAR, message.unpacked_enum(0));
830d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville
831d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(701  , message.unpacked_int32   (1));
832d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(702  , message.unpacked_int64   (1));
833d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(703  , message.unpacked_uint32  (1));
834d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(704  , message.unpacked_uint64  (1));
835d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(705  , message.unpacked_sint32  (1));
836d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(706  , message.unpacked_sint64  (1));
837d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(707  , message.unpacked_fixed32 (1));
838d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(708  , message.unpacked_fixed64 (1));
839d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(709  , message.unpacked_sfixed32(1));
840d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(710  , message.unpacked_sfixed64(1));
841d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(711  , message.unpacked_float   (1));
842d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(712  , message.unpacked_double  (1));
843d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(false, message.unpacked_bool    (1));
844d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville  EXPECT_EQ(unittest::FOREIGN_BAZ, message.unpacked_enum(1));
845d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville}
846d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville
847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectPackedClear(
850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const unittest::TestPackedTypes& message) {
851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Packed repeated fields are empty.
852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_int32_size   ());
853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_int64_size   ());
854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_uint32_size  ());
855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_uint64_size  ());
856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_sint32_size  ());
857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_sint64_size  ());
858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_fixed32_size ());
859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_fixed64_size ());
860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_sfixed32_size());
861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_sfixed64_size());
862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_float_size   ());
863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_double_size  ());
864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_bool_size    ());
865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.packed_enum_size    ());
866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectPackedFieldsModified(
871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const unittest::TestPackedTypes& message) {
872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Do the same for packed repeated fields.
873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_int32_size   ());
874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_int64_size   ());
875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_uint32_size  ());
876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_uint64_size  ());
877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_sint32_size  ());
878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_sint64_size  ());
879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_fixed32_size ());
880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_fixed64_size ());
881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_sfixed32_size());
882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_sfixed64_size());
883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_float_size   ());
884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_double_size  ());
885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_bool_size    ());
886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.packed_enum_size    ());
887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(601  , message.packed_int32   (0));
889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(602  , message.packed_int64   (0));
890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(603  , message.packed_uint32  (0));
891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(604  , message.packed_uint64  (0));
892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(605  , message.packed_sint32  (0));
893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(606  , message.packed_sint64  (0));
894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(607  , message.packed_fixed32 (0));
895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(608  , message.packed_fixed64 (0));
896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(609  , message.packed_sfixed32(0));
897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(610  , message.packed_sfixed64(0));
898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(611  , message.packed_float   (0));
899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(612  , message.packed_double  (0));
900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.packed_bool    (0));
901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR, message.packed_enum(0));
902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Actually verify the second (modified) elements now.
903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(801  , message.packed_int32   (1));
904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(802  , message.packed_int64   (1));
905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(803  , message.packed_uint32  (1));
906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(804  , message.packed_uint64  (1));
907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(805  , message.packed_sint32  (1));
908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(806  , message.packed_sint64  (1));
909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(807  , message.packed_fixed32 (1));
910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(808  , message.packed_fixed64 (1));
911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(809  , message.packed_sfixed32(1));
912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(810  , message.packed_sfixed64(1));
913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(811  , message.packed_float   (1));
914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(812  , message.packed_double  (1));
915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.packed_bool    (1));
916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_FOO, message.packed_enum(1));
917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// ===================================================================
920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Extensions
921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville//
922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// All this code is exactly equivalent to the above code except that it's
923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// manipulating extension fields instead of normal ones.
924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville//
925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// I gave up on the 80-char limit here.  Sorry.
926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::SetAllExtensions(unittest::TestAllExtensions* message) {
928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_int32_extension   , 101);
929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_int64_extension   , 102);
930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_uint32_extension  , 103);
931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_uint64_extension  , 104);
932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_sint32_extension  , 105);
933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_sint64_extension  , 106);
934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_fixed32_extension , 107);
935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_fixed64_extension , 108);
936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_sfixed32_extension, 109);
937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_sfixed64_extension, 110);
938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_float_extension   , 111);
939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_double_extension  , 112);
940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_bool_extension    , true);
941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_string_extension  , "115");
942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_bytes_extension   , "116");
943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->MutableExtension(unittest::optionalgroup_extension           )->set_a(117);
945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->MutableExtension(unittest::optional_nested_message_extension )->set_bb(118);
946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->MutableExtension(unittest::optional_foreign_message_extension)->set_c(119);
947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->MutableExtension(unittest::optional_import_message_extension )->set_d(120);
948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_nested_enum_extension , unittest::TestAllTypes::BAZ);
950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_foreign_enum_extension, unittest::FOREIGN_BAZ      );
951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_import_enum_extension , unittest_import::IMPORT_BAZ);
952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_string_piece_extension, "124");
954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::optional_cord_extension, "125");
955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // -----------------------------------------------------------------
957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_int32_extension   , 201);
959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_int64_extension   , 202);
960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_uint32_extension  , 203);
961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_uint64_extension  , 204);
962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_sint32_extension  , 205);
963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_sint64_extension  , 206);
964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_fixed32_extension , 207);
965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_fixed64_extension , 208);
966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_sfixed32_extension, 209);
967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_sfixed64_extension, 210);
968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_float_extension   , 211);
969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_double_extension  , 212);
970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_bool_extension    , true);
971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_string_extension  , "215");
972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_bytes_extension   , "216");
973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeatedgroup_extension           )->set_a(217);
975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_nested_message_extension )->set_bb(218);
976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_foreign_message_extension)->set_c(219);
977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_import_message_extension )->set_d(220);
978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_nested_enum_extension , unittest::TestAllTypes::BAR);
980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_foreign_enum_extension, unittest::FOREIGN_BAR      );
981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_import_enum_extension , unittest_import::IMPORT_BAR);
982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_string_piece_extension, "224");
984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_cord_extension, "225");
985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Add a second one of each field.
987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_int32_extension   , 301);
988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_int64_extension   , 302);
989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_uint32_extension  , 303);
990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_uint64_extension  , 304);
991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_sint32_extension  , 305);
992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_sint64_extension  , 306);
993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_fixed32_extension , 307);
994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_fixed64_extension , 308);
995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_sfixed32_extension, 309);
996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_sfixed64_extension, 310);
997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_float_extension   , 311);
998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_double_extension  , 312);
999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_bool_extension    , false);
1000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_string_extension  , "315");
1001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_bytes_extension   , "316");
1002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeatedgroup_extension           )->set_a(317);
1004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_nested_message_extension )->set_bb(318);
1005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_foreign_message_extension)->set_c(319);
1006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_import_message_extension )->set_d(320);
1007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_nested_enum_extension , unittest::TestAllTypes::BAZ);
1009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_foreign_enum_extension, unittest::FOREIGN_BAZ      );
1010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_import_enum_extension , unittest_import::IMPORT_BAZ);
1011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_string_piece_extension, "324");
1013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::repeated_cord_extension, "325");
1014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // -----------------------------------------------------------------
1016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_int32_extension   , 401);
1018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_int64_extension   , 402);
1019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_uint32_extension  , 403);
1020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_uint64_extension  , 404);
1021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_sint32_extension  , 405);
1022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_sint64_extension  , 406);
1023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_fixed32_extension , 407);
1024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_fixed64_extension , 408);
1025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_sfixed32_extension, 409);
1026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_sfixed64_extension, 410);
1027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_float_extension   , 411);
1028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_double_extension  , 412);
1029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_bool_extension    , false);
1030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_string_extension  , "415");
1031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_bytes_extension   , "416");
1032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_nested_enum_extension , unittest::TestAllTypes::FOO);
1034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_foreign_enum_extension, unittest::FOREIGN_FOO      );
1035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_import_enum_extension , unittest_import::IMPORT_FOO);
1036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_string_piece_extension, "424");
1038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::default_cord_extension, "425");
1039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
1042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::SetAllFieldsAndExtensions(
1044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    unittest::TestFieldOrderings* message) {
1045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  GOOGLE_CHECK(message);
1046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_my_int(1);
1047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_my_string("foo");
1048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->set_my_float(1.0);
1049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::my_extension_int, 23);
1050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::my_extension_string, "bar");
1051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
1054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ModifyRepeatedExtensions(unittest::TestAllExtensions* message) {
1056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_int32_extension   , 1, 501);
1057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_int64_extension   , 1, 502);
1058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_uint32_extension  , 1, 503);
1059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_uint64_extension  , 1, 504);
1060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_sint32_extension  , 1, 505);
1061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_sint64_extension  , 1, 506);
1062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_fixed32_extension , 1, 507);
1063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_fixed64_extension , 1, 508);
1064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_sfixed32_extension, 1, 509);
1065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_sfixed64_extension, 1, 510);
1066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_float_extension   , 1, 511);
1067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_double_extension  , 1, 512);
1068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_bool_extension    , 1, true);
1069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_string_extension  , 1, "515");
1070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_bytes_extension   , 1, "516");
1071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->MutableExtension(unittest::repeatedgroup_extension           , 1)->set_a(517);
1073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->MutableExtension(unittest::repeated_nested_message_extension , 1)->set_bb(518);
1074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->MutableExtension(unittest::repeated_foreign_message_extension, 1)->set_c(519);
1075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->MutableExtension(unittest::repeated_import_message_extension , 1)->set_d(520);
1076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_nested_enum_extension , 1, unittest::TestAllTypes::FOO);
1078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_foreign_enum_extension, 1, unittest::FOREIGN_FOO      );
1079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_import_enum_extension , 1, unittest_import::IMPORT_FOO);
1080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_string_piece_extension, 1, "524");
1082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::repeated_cord_extension, 1, "525");
1083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
1086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectAllExtensionsSet(
1088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const unittest::TestAllExtensions& message) {
1089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_int32_extension   ));
1090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_int64_extension   ));
1091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_uint32_extension  ));
1092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_uint64_extension  ));
1093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_sint32_extension  ));
1094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_sint64_extension  ));
1095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_fixed32_extension ));
1096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_fixed64_extension ));
1097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_sfixed32_extension));
1098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_sfixed64_extension));
1099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_float_extension   ));
1100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_double_extension  ));
1101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_bool_extension    ));
1102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_string_extension  ));
1103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_bytes_extension   ));
1104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optionalgroup_extension           ));
1106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_nested_message_extension ));
1107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_foreign_message_extension));
1108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_import_message_extension ));
1109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.GetExtension(unittest::optionalgroup_extension           ).has_a());
1111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.GetExtension(unittest::optional_nested_message_extension ).has_bb());
1112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.GetExtension(unittest::optional_foreign_message_extension).has_c());
1113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.GetExtension(unittest::optional_import_message_extension ).has_d());
1114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_nested_enum_extension ));
1116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_foreign_enum_extension));
1117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_import_enum_extension ));
1118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_string_piece_extension));
1120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::optional_cord_extension));
1121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(101  , message.GetExtension(unittest::optional_int32_extension   ));
1123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(102  , message.GetExtension(unittest::optional_int64_extension   ));
1124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(103  , message.GetExtension(unittest::optional_uint32_extension  ));
1125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(104  , message.GetExtension(unittest::optional_uint64_extension  ));
1126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(105  , message.GetExtension(unittest::optional_sint32_extension  ));
1127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(106  , message.GetExtension(unittest::optional_sint64_extension  ));
1128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(107  , message.GetExtension(unittest::optional_fixed32_extension ));
1129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(108  , message.GetExtension(unittest::optional_fixed64_extension ));
1130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(109  , message.GetExtension(unittest::optional_sfixed32_extension));
1131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(110  , message.GetExtension(unittest::optional_sfixed64_extension));
1132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(111  , message.GetExtension(unittest::optional_float_extension   ));
1133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(112  , message.GetExtension(unittest::optional_double_extension  ));
1134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.GetExtension(unittest::optional_bool_extension    ));
1135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("115", message.GetExtension(unittest::optional_string_extension  ));
1136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("116", message.GetExtension(unittest::optional_bytes_extension   ));
1137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(117, message.GetExtension(unittest::optionalgroup_extension           ).a());
1139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(118, message.GetExtension(unittest::optional_nested_message_extension ).bb());
1140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(119, message.GetExtension(unittest::optional_foreign_message_extension).c());
1141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(120, message.GetExtension(unittest::optional_import_message_extension ).d());
1142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAZ, message.GetExtension(unittest::optional_nested_enum_extension ));
1144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAZ      , message.GetExtension(unittest::optional_foreign_enum_extension));
1145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAZ, message.GetExtension(unittest::optional_import_enum_extension ));
1146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("124", message.GetExtension(unittest::optional_string_piece_extension));
1148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("125", message.GetExtension(unittest::optional_cord_extension));
1149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // -----------------------------------------------------------------
1151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_int32_extension   ));
1153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_int64_extension   ));
1154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_uint32_extension  ));
1155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_uint64_extension  ));
1156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sint32_extension  ));
1157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sint64_extension  ));
1158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_fixed32_extension ));
1159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_fixed64_extension ));
1160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sfixed32_extension));
1161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sfixed64_extension));
1162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_float_extension   ));
1163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_double_extension  ));
1164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_bool_extension    ));
1165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_string_extension  ));
1166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_bytes_extension   ));
1167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeatedgroup_extension           ));
1169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_message_extension ));
1170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_message_extension));
1171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_message_extension ));
1172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_enum_extension    ));
1173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_enum_extension   ));
1174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_enum_extension    ));
1175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_string_piece_extension));
1177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_cord_extension));
1178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(201  , message.GetExtension(unittest::repeated_int32_extension   , 0));
1180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(202  , message.GetExtension(unittest::repeated_int64_extension   , 0));
1181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(203  , message.GetExtension(unittest::repeated_uint32_extension  , 0));
1182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(204  , message.GetExtension(unittest::repeated_uint64_extension  , 0));
1183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(205  , message.GetExtension(unittest::repeated_sint32_extension  , 0));
1184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(206  , message.GetExtension(unittest::repeated_sint64_extension  , 0));
1185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(207  , message.GetExtension(unittest::repeated_fixed32_extension , 0));
1186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(208  , message.GetExtension(unittest::repeated_fixed64_extension , 0));
1187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(209  , message.GetExtension(unittest::repeated_sfixed32_extension, 0));
1188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(210  , message.GetExtension(unittest::repeated_sfixed64_extension, 0));
1189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(211  , message.GetExtension(unittest::repeated_float_extension   , 0));
1190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(212  , message.GetExtension(unittest::repeated_double_extension  , 0));
1191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.GetExtension(unittest::repeated_bool_extension    , 0));
1192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("215", message.GetExtension(unittest::repeated_string_extension  , 0));
1193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("216", message.GetExtension(unittest::repeated_bytes_extension   , 0));
1194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(217, message.GetExtension(unittest::repeatedgroup_extension           , 0).a());
1196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb());
1197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c());
1198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 0).d());
1199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAR, message.GetExtension(unittest::repeated_nested_enum_extension , 0));
1201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR      , message.GetExtension(unittest::repeated_foreign_enum_extension, 0));
1202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAR, message.GetExtension(unittest::repeated_import_enum_extension , 0));
1203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("224", message.GetExtension(unittest::repeated_string_piece_extension, 0));
1205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("225", message.GetExtension(unittest::repeated_cord_extension, 0));
1206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(301  , message.GetExtension(unittest::repeated_int32_extension   , 1));
1208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(302  , message.GetExtension(unittest::repeated_int64_extension   , 1));
1209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(303  , message.GetExtension(unittest::repeated_uint32_extension  , 1));
1210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(304  , message.GetExtension(unittest::repeated_uint64_extension  , 1));
1211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(305  , message.GetExtension(unittest::repeated_sint32_extension  , 1));
1212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(306  , message.GetExtension(unittest::repeated_sint64_extension  , 1));
1213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(307  , message.GetExtension(unittest::repeated_fixed32_extension , 1));
1214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(308  , message.GetExtension(unittest::repeated_fixed64_extension , 1));
1215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(309  , message.GetExtension(unittest::repeated_sfixed32_extension, 1));
1216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(310  , message.GetExtension(unittest::repeated_sfixed64_extension, 1));
1217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(311  , message.GetExtension(unittest::repeated_float_extension   , 1));
1218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(312  , message.GetExtension(unittest::repeated_double_extension  , 1));
1219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, message.GetExtension(unittest::repeated_bool_extension    , 1));
1220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("315", message.GetExtension(unittest::repeated_string_extension  , 1));
1221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("316", message.GetExtension(unittest::repeated_bytes_extension   , 1));
1222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(317, message.GetExtension(unittest::repeatedgroup_extension           , 1).a());
1224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(318, message.GetExtension(unittest::repeated_nested_message_extension , 1).bb());
1225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(319, message.GetExtension(unittest::repeated_foreign_message_extension, 1).c());
1226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(320, message.GetExtension(unittest::repeated_import_message_extension , 1).d());
1227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAZ, message.GetExtension(unittest::repeated_nested_enum_extension , 1));
1229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAZ      , message.GetExtension(unittest::repeated_foreign_enum_extension, 1));
1230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAZ, message.GetExtension(unittest::repeated_import_enum_extension , 1));
1231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("324", message.GetExtension(unittest::repeated_string_piece_extension, 1));
1233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("325", message.GetExtension(unittest::repeated_cord_extension, 1));
1234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // -----------------------------------------------------------------
1236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_int32_extension   ));
1238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_int64_extension   ));
1239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_uint32_extension  ));
1240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_uint64_extension  ));
1241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_sint32_extension  ));
1242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_sint64_extension  ));
1243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_fixed32_extension ));
1244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_fixed64_extension ));
1245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_sfixed32_extension));
1246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_sfixed64_extension));
1247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_float_extension   ));
1248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_double_extension  ));
1249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_bool_extension    ));
1250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_string_extension  ));
1251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_bytes_extension   ));
1252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_nested_enum_extension ));
1254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_foreign_enum_extension));
1255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_import_enum_extension ));
1256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_string_piece_extension));
1258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(message.HasExtension(unittest::default_cord_extension));
1259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(401  , message.GetExtension(unittest::default_int32_extension   ));
1261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(402  , message.GetExtension(unittest::default_int64_extension   ));
1262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(403  , message.GetExtension(unittest::default_uint32_extension  ));
1263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(404  , message.GetExtension(unittest::default_uint64_extension  ));
1264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(405  , message.GetExtension(unittest::default_sint32_extension  ));
1265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(406  , message.GetExtension(unittest::default_sint64_extension  ));
1266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(407  , message.GetExtension(unittest::default_fixed32_extension ));
1267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(408  , message.GetExtension(unittest::default_fixed64_extension ));
1268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(409  , message.GetExtension(unittest::default_sfixed32_extension));
1269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(410  , message.GetExtension(unittest::default_sfixed64_extension));
1270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(411  , message.GetExtension(unittest::default_float_extension   ));
1271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(412  , message.GetExtension(unittest::default_double_extension  ));
1272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, message.GetExtension(unittest::default_bool_extension    ));
1273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("415", message.GetExtension(unittest::default_string_extension  ));
1274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("416", message.GetExtension(unittest::default_bytes_extension   ));
1275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::FOO, message.GetExtension(unittest::default_nested_enum_extension ));
1277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_FOO      , message.GetExtension(unittest::default_foreign_enum_extension));
1278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_FOO, message.GetExtension(unittest::default_import_enum_extension ));
1279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("424", message.GetExtension(unittest::default_string_piece_extension));
1281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("425", message.GetExtension(unittest::default_cord_extension));
1282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
1285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectExtensionsClear(
1287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const unittest::TestAllExtensions& message) {
1288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  string serialized;
1289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_TRUE(message.SerializeToString(&serialized));
1290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("", serialized);
1291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ByteSize());
1292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // has_blah() should initially be false for all optional fields.
1294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_int32_extension   ));
1295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_int64_extension   ));
1296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_uint32_extension  ));
1297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_uint64_extension  ));
1298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_sint32_extension  ));
1299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_sint64_extension  ));
1300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_fixed32_extension ));
1301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_fixed64_extension ));
1302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_sfixed32_extension));
1303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_sfixed64_extension));
1304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_float_extension   ));
1305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_double_extension  ));
1306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_bool_extension    ));
1307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_string_extension  ));
1308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_bytes_extension   ));
1309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optionalgroup_extension           ));
1311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_nested_message_extension ));
1312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_foreign_message_extension));
1313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_import_message_extension ));
1314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_nested_enum_extension ));
1316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_foreign_enum_extension));
1317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_import_enum_extension ));
1318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_string_piece_extension));
1320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::optional_cord_extension));
1321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Optional fields without defaults are set to zero or something like it.
1323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.GetExtension(unittest::optional_int32_extension   ));
1324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.GetExtension(unittest::optional_int64_extension   ));
1325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.GetExtension(unittest::optional_uint32_extension  ));
1326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.GetExtension(unittest::optional_uint64_extension  ));
1327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.GetExtension(unittest::optional_sint32_extension  ));
1328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.GetExtension(unittest::optional_sint64_extension  ));
1329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.GetExtension(unittest::optional_fixed32_extension ));
1330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.GetExtension(unittest::optional_fixed64_extension ));
1331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.GetExtension(unittest::optional_sfixed32_extension));
1332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.GetExtension(unittest::optional_sfixed64_extension));
1333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.GetExtension(unittest::optional_float_extension   ));
1334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , message.GetExtension(unittest::optional_double_extension  ));
1335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, message.GetExtension(unittest::optional_bool_extension    ));
1336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(""   , message.GetExtension(unittest::optional_string_extension  ));
1337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(""   , message.GetExtension(unittest::optional_bytes_extension   ));
1338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Embedded messages should also be clear.
1340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.GetExtension(unittest::optionalgroup_extension           ).has_a());
1341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.GetExtension(unittest::optional_nested_message_extension ).has_bb());
1342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.GetExtension(unittest::optional_foreign_message_extension).has_c());
1343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.GetExtension(unittest::optional_import_message_extension ).has_d());
1344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.GetExtension(unittest::optionalgroup_extension           ).a());
1346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.GetExtension(unittest::optional_nested_message_extension ).bb());
1347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.GetExtension(unittest::optional_foreign_message_extension).c());
1348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.GetExtension(unittest::optional_import_message_extension ).d());
1349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Enums without defaults are set to the first value in the enum.
1351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::FOO, message.GetExtension(unittest::optional_nested_enum_extension ));
1352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_FOO      , message.GetExtension(unittest::optional_foreign_enum_extension));
1353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_FOO, message.GetExtension(unittest::optional_import_enum_extension ));
1354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("", message.GetExtension(unittest::optional_string_piece_extension));
1356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("", message.GetExtension(unittest::optional_cord_extension));
1357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Repeated fields are empty.
1359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_int32_extension   ));
1360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_int64_extension   ));
1361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_uint32_extension  ));
1362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_uint64_extension  ));
1363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_sint32_extension  ));
1364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_sint64_extension  ));
1365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_fixed32_extension ));
1366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_fixed64_extension ));
1367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_sfixed32_extension));
1368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_sfixed64_extension));
1369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_float_extension   ));
1370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_double_extension  ));
1371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_bool_extension    ));
1372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_string_extension  ));
1373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_bytes_extension   ));
1374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeatedgroup_extension           ));
1376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_nested_message_extension ));
1377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_foreign_message_extension));
1378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_import_message_extension ));
1379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_nested_enum_extension    ));
1380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_foreign_enum_extension   ));
1381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_import_enum_extension    ));
1382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_string_piece_extension));
1384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_cord_extension));
1385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // has_blah() should also be false for all default fields.
1387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_int32_extension   ));
1388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_int64_extension   ));
1389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_uint32_extension  ));
1390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_uint64_extension  ));
1391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_sint32_extension  ));
1392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_sint64_extension  ));
1393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_fixed32_extension ));
1394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_fixed64_extension ));
1395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_sfixed32_extension));
1396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_sfixed64_extension));
1397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_float_extension   ));
1398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_double_extension  ));
1399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_bool_extension    ));
1400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_string_extension  ));
1401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_bytes_extension   ));
1402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_nested_enum_extension ));
1404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_foreign_enum_extension));
1405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_import_enum_extension ));
1406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_string_piece_extension));
1408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(message.HasExtension(unittest::default_cord_extension));
1409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Fields with defaults have their default values (duh).
1411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 41    , message.GetExtension(unittest::default_int32_extension   ));
1412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 42    , message.GetExtension(unittest::default_int64_extension   ));
1413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 43    , message.GetExtension(unittest::default_uint32_extension  ));
1414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 44    , message.GetExtension(unittest::default_uint64_extension  ));
1415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(-45    , message.GetExtension(unittest::default_sint32_extension  ));
1416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 46    , message.GetExtension(unittest::default_sint64_extension  ));
1417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 47    , message.GetExtension(unittest::default_fixed32_extension ));
1418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 48    , message.GetExtension(unittest::default_fixed64_extension ));
1419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 49    , message.GetExtension(unittest::default_sfixed32_extension));
1420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(-50    , message.GetExtension(unittest::default_sfixed64_extension));
1421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 51.5  , message.GetExtension(unittest::default_float_extension   ));
1422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 52e3  , message.GetExtension(unittest::default_double_extension  ));
1423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true   , message.GetExtension(unittest::default_bool_extension    ));
1424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("hello", message.GetExtension(unittest::default_string_extension  ));
1425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("world", message.GetExtension(unittest::default_bytes_extension   ));
1426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAR, message.GetExtension(unittest::default_nested_enum_extension ));
1428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR      , message.GetExtension(unittest::default_foreign_enum_extension));
1429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAR, message.GetExtension(unittest::default_import_enum_extension ));
1430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("abc", message.GetExtension(unittest::default_string_piece_extension));
1432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("123", message.GetExtension(unittest::default_cord_extension));
1433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
1436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectRepeatedExtensionsModified(
1438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const unittest::TestAllExtensions& message) {
1439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // ModifyRepeatedFields only sets the second repeated element of each
1440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // field.  In addition to verifying this, we also verify that the first
1441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // element and size were *not* modified.
1442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_int32_extension   ));
1443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_int64_extension   ));
1444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_uint32_extension  ));
1445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_uint64_extension  ));
1446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sint32_extension  ));
1447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sint64_extension  ));
1448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_fixed32_extension ));
1449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_fixed64_extension ));
1450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sfixed32_extension));
1451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sfixed64_extension));
1452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_float_extension   ));
1453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_double_extension  ));
1454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_bool_extension    ));
1455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_string_extension  ));
1456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_bytes_extension   ));
1457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeatedgroup_extension           ));
1459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_message_extension ));
1460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_message_extension));
1461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_message_extension ));
1462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_enum_extension    ));
1463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_enum_extension   ));
1464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_enum_extension    ));
1465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_string_piece_extension));
1467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_cord_extension));
1468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(201  , message.GetExtension(unittest::repeated_int32_extension   , 0));
1470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(202  , message.GetExtension(unittest::repeated_int64_extension   , 0));
1471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(203  , message.GetExtension(unittest::repeated_uint32_extension  , 0));
1472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(204  , message.GetExtension(unittest::repeated_uint64_extension  , 0));
1473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(205  , message.GetExtension(unittest::repeated_sint32_extension  , 0));
1474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(206  , message.GetExtension(unittest::repeated_sint64_extension  , 0));
1475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(207  , message.GetExtension(unittest::repeated_fixed32_extension , 0));
1476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(208  , message.GetExtension(unittest::repeated_fixed64_extension , 0));
1477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(209  , message.GetExtension(unittest::repeated_sfixed32_extension, 0));
1478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(210  , message.GetExtension(unittest::repeated_sfixed64_extension, 0));
1479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(211  , message.GetExtension(unittest::repeated_float_extension   , 0));
1480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(212  , message.GetExtension(unittest::repeated_double_extension  , 0));
1481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.GetExtension(unittest::repeated_bool_extension    , 0));
1482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("215", message.GetExtension(unittest::repeated_string_extension  , 0));
1483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("216", message.GetExtension(unittest::repeated_bytes_extension   , 0));
1484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(217, message.GetExtension(unittest::repeatedgroup_extension           , 0).a());
1486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb());
1487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c());
1488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 0).d());
1489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAR, message.GetExtension(unittest::repeated_nested_enum_extension , 0));
1491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR      , message.GetExtension(unittest::repeated_foreign_enum_extension, 0));
1492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAR, message.GetExtension(unittest::repeated_import_enum_extension , 0));
1493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("224", message.GetExtension(unittest::repeated_string_piece_extension, 0));
1495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("225", message.GetExtension(unittest::repeated_cord_extension, 0));
1496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Actually verify the second (modified) elements now.
1498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(501  , message.GetExtension(unittest::repeated_int32_extension   , 1));
1499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(502  , message.GetExtension(unittest::repeated_int64_extension   , 1));
1500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(503  , message.GetExtension(unittest::repeated_uint32_extension  , 1));
1501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(504  , message.GetExtension(unittest::repeated_uint64_extension  , 1));
1502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(505  , message.GetExtension(unittest::repeated_sint32_extension  , 1));
1503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(506  , message.GetExtension(unittest::repeated_sint64_extension  , 1));
1504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(507  , message.GetExtension(unittest::repeated_fixed32_extension , 1));
1505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(508  , message.GetExtension(unittest::repeated_fixed64_extension , 1));
1506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(509  , message.GetExtension(unittest::repeated_sfixed32_extension, 1));
1507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(510  , message.GetExtension(unittest::repeated_sfixed64_extension, 1));
1508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(511  , message.GetExtension(unittest::repeated_float_extension   , 1));
1509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(512  , message.GetExtension(unittest::repeated_double_extension  , 1));
1510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.GetExtension(unittest::repeated_bool_extension    , 1));
1511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("515", message.GetExtension(unittest::repeated_string_extension  , 1));
1512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("516", message.GetExtension(unittest::repeated_bytes_extension   , 1));
1513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(517, message.GetExtension(unittest::repeatedgroup_extension           , 1).a());
1515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(518, message.GetExtension(unittest::repeated_nested_message_extension , 1).bb());
1516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(519, message.GetExtension(unittest::repeated_foreign_message_extension, 1).c());
1517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(520, message.GetExtension(unittest::repeated_import_message_extension , 1).d());
1518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::FOO, message.GetExtension(unittest::repeated_nested_enum_extension , 1));
1520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_FOO      , message.GetExtension(unittest::repeated_foreign_enum_extension, 1));
1521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_FOO, message.GetExtension(unittest::repeated_import_enum_extension , 1));
1522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("524", message.GetExtension(unittest::repeated_string_piece_extension, 1));
1524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("525", message.GetExtension(unittest::repeated_cord_extension, 1));
1525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
1528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::SetPackedExtensions(unittest::TestPackedExtensions* message) {
1530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_int32_extension   , 601);
1531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_int64_extension   , 602);
1532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_uint32_extension  , 603);
1533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_uint64_extension  , 604);
1534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_sint32_extension  , 605);
1535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_sint64_extension  , 606);
1536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_fixed32_extension , 607);
1537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_fixed64_extension , 608);
1538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_sfixed32_extension, 609);
1539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_sfixed64_extension, 610);
1540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_float_extension   , 611);
1541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_double_extension  , 612);
1542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_bool_extension    , true);
1543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_enum_extension, unittest::FOREIGN_BAR);
1544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // add a second one of each field
1545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_int32_extension   , 701);
1546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_int64_extension   , 702);
1547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_uint32_extension  , 703);
1548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_uint64_extension  , 704);
1549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_sint32_extension  , 705);
1550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_sint64_extension  , 706);
1551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_fixed32_extension , 707);
1552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_fixed64_extension , 708);
1553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_sfixed32_extension, 709);
1554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_sfixed64_extension, 710);
1555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_float_extension   , 711);
1556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_double_extension  , 712);
1557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_bool_extension    , false);
1558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->AddExtension(unittest::packed_enum_extension, unittest::FOREIGN_BAZ);
1559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
1562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ModifyPackedExtensions(unittest::TestPackedExtensions* message) {
1564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_int32_extension   , 1, 801);
1565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_int64_extension   , 1, 802);
1566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_uint32_extension  , 1, 803);
1567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_uint64_extension  , 1, 804);
1568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_sint32_extension  , 1, 805);
1569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_sint64_extension  , 1, 806);
1570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_fixed32_extension , 1, 807);
1571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_fixed64_extension , 1, 808);
1572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_sfixed32_extension, 1, 809);
1573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_sfixed64_extension, 1, 810);
1574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_float_extension   , 1, 811);
1575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_double_extension  , 1, 812);
1576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_bool_extension    , 1, true);
1577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message->SetExtension(unittest::packed_enum_extension    , 1,
1578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                        unittest::FOREIGN_FOO);
1579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
1582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectPackedExtensionsSet(
1584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const unittest::TestPackedExtensions& message) {
1585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_int32_extension   ));
1586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_int64_extension   ));
1587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_uint32_extension  ));
1588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_uint64_extension  ));
1589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sint32_extension  ));
1590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sint64_extension  ));
1591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_fixed32_extension ));
1592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_fixed64_extension ));
1593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sfixed32_extension));
1594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sfixed64_extension));
1595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_float_extension   ));
1596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_double_extension  ));
1597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_bool_extension    ));
1598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_enum_extension    ));
1599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(601  , message.GetExtension(unittest::packed_int32_extension   , 0));
1601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(602  , message.GetExtension(unittest::packed_int64_extension   , 0));
1602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(603  , message.GetExtension(unittest::packed_uint32_extension  , 0));
1603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(604  , message.GetExtension(unittest::packed_uint64_extension  , 0));
1604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(605  , message.GetExtension(unittest::packed_sint32_extension  , 0));
1605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(606  , message.GetExtension(unittest::packed_sint64_extension  , 0));
1606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(607  , message.GetExtension(unittest::packed_fixed32_extension , 0));
1607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(608  , message.GetExtension(unittest::packed_fixed64_extension , 0));
1608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(609  , message.GetExtension(unittest::packed_sfixed32_extension, 0));
1609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(610  , message.GetExtension(unittest::packed_sfixed64_extension, 0));
1610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(611  , message.GetExtension(unittest::packed_float_extension   , 0));
1611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(612  , message.GetExtension(unittest::packed_double_extension  , 0));
1612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.GetExtension(unittest::packed_bool_extension    , 0));
1613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR,
1614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville            message.GetExtension(unittest::packed_enum_extension, 0));
1615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(701  , message.GetExtension(unittest::packed_int32_extension   , 1));
1616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(702  , message.GetExtension(unittest::packed_int64_extension   , 1));
1617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(703  , message.GetExtension(unittest::packed_uint32_extension  , 1));
1618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(704  , message.GetExtension(unittest::packed_uint64_extension  , 1));
1619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(705  , message.GetExtension(unittest::packed_sint32_extension  , 1));
1620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(706  , message.GetExtension(unittest::packed_sint64_extension  , 1));
1621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(707  , message.GetExtension(unittest::packed_fixed32_extension , 1));
1622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(708  , message.GetExtension(unittest::packed_fixed64_extension , 1));
1623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(709  , message.GetExtension(unittest::packed_sfixed32_extension, 1));
1624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(710  , message.GetExtension(unittest::packed_sfixed64_extension, 1));
1625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(711  , message.GetExtension(unittest::packed_float_extension   , 1));
1626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(712  , message.GetExtension(unittest::packed_double_extension  , 1));
1627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, message.GetExtension(unittest::packed_bool_extension    , 1));
1628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAZ,
1629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville            message.GetExtension(unittest::packed_enum_extension, 1));
1630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
1633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectPackedExtensionsClear(
1635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const unittest::TestPackedExtensions& message) {
1636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_int32_extension   ));
1637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_int64_extension   ));
1638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_uint32_extension  ));
1639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_uint64_extension  ));
1640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_sint32_extension  ));
1641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_sint64_extension  ));
1642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_fixed32_extension ));
1643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_fixed64_extension ));
1644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_sfixed32_extension));
1645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_sfixed64_extension));
1646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_float_extension   ));
1647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_double_extension  ));
1648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_bool_extension    ));
1649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, message.ExtensionSize(unittest::packed_enum_extension    ));
1650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
1653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectPackedExtensionsModified(
1655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const unittest::TestPackedExtensions& message) {
1656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_int32_extension   ));
1657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_int64_extension   ));
1658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_uint32_extension  ));
1659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_uint64_extension  ));
1660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sint32_extension  ));
1661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sint64_extension  ));
1662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_fixed32_extension ));
1663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_fixed64_extension ));
1664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sfixed32_extension));
1665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sfixed64_extension));
1666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_float_extension   ));
1667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_double_extension  ));
1668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_bool_extension    ));
1669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::packed_enum_extension    ));
1670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(601  , message.GetExtension(unittest::packed_int32_extension   , 0));
1671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(602  , message.GetExtension(unittest::packed_int64_extension   , 0));
1672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(603  , message.GetExtension(unittest::packed_uint32_extension  , 0));
1673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(604  , message.GetExtension(unittest::packed_uint64_extension  , 0));
1674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(605  , message.GetExtension(unittest::packed_sint32_extension  , 0));
1675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(606  , message.GetExtension(unittest::packed_sint64_extension  , 0));
1676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(607  , message.GetExtension(unittest::packed_fixed32_extension , 0));
1677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(608  , message.GetExtension(unittest::packed_fixed64_extension , 0));
1678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(609  , message.GetExtension(unittest::packed_sfixed32_extension, 0));
1679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(610  , message.GetExtension(unittest::packed_sfixed64_extension, 0));
1680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(611  , message.GetExtension(unittest::packed_float_extension   , 0));
1681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(612  , message.GetExtension(unittest::packed_double_extension  , 0));
1682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.GetExtension(unittest::packed_bool_extension    , 0));
1683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR,
1684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville            message.GetExtension(unittest::packed_enum_extension, 0));
1685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Actually verify the second (modified) elements now.
1687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(801  , message.GetExtension(unittest::packed_int32_extension   , 1));
1688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(802  , message.GetExtension(unittest::packed_int64_extension   , 1));
1689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(803  , message.GetExtension(unittest::packed_uint32_extension  , 1));
1690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(804  , message.GetExtension(unittest::packed_uint64_extension  , 1));
1691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(805  , message.GetExtension(unittest::packed_sint32_extension  , 1));
1692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(806  , message.GetExtension(unittest::packed_sint64_extension  , 1));
1693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(807  , message.GetExtension(unittest::packed_fixed32_extension , 1));
1694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(808  , message.GetExtension(unittest::packed_fixed64_extension , 1));
1695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(809  , message.GetExtension(unittest::packed_sfixed32_extension, 1));
1696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(810  , message.GetExtension(unittest::packed_sfixed64_extension, 1));
1697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(811  , message.GetExtension(unittest::packed_float_extension   , 1));
1698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(812  , message.GetExtension(unittest::packed_double_extension  , 1));
1699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.GetExtension(unittest::packed_bool_extension    , 1));
1700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_FOO,
1701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville            message.GetExtension(unittest::packed_enum_extension, 1));
1702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
1705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectAllFieldsAndExtensionsInOrder(const string& serialized) {
1707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // We set each field individually, serialize separately, and concatenate all
1708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // the strings in canonical order to determine the expected serialization.
1709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  string expected;
1710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  unittest::TestFieldOrderings message;
1711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.set_my_int(1);  // Field 1.
1712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.AppendToString(&expected);
1713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.Clear();
1714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.SetExtension(unittest::my_extension_int, 23);  // Field 5.
1715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.AppendToString(&expected);
1716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.Clear();
1717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.set_my_string("foo");  // Field 11.
1718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.AppendToString(&expected);
1719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.Clear();
1720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.SetExtension(unittest::my_extension_string, "bar");  // Field 50.
1721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.AppendToString(&expected);
1722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.Clear();
1723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.set_my_float(1.0);  // Field 101.
1724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.AppendToString(&expected);
1725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  message.Clear();
1726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // We don't EXPECT_EQ() since we don't want to print raw bytes to stdout.
1728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(serialized == expected);
1729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectLastRepeatedsRemoved(
1732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const unittest::TestAllTypes& message) {
1733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_int32_size   ());
1734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_int64_size   ());
1735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_uint32_size  ());
1736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_uint64_size  ());
1737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_sint32_size  ());
1738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_sint64_size  ());
1739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_fixed32_size ());
1740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_fixed64_size ());
1741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_sfixed32_size());
1742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_sfixed64_size());
1743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_float_size   ());
1744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_double_size  ());
1745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_bool_size    ());
1746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_string_size  ());
1747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_bytes_size   ());
1748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeatedgroup_size           ());
1750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_nested_message_size ());
1751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_foreign_message_size());
1752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_import_message_size ());
1753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_nested_enum_size    ());
1754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_foreign_enum_size   ());
1755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_import_enum_size    ());
1756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef PROTOBUF_TEST_NO_DESCRIPTORS
1758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_string_piece_size());
1759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.repeated_cord_size());
1760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
1761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Test that the remaining element is the correct one.
1763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(201  , message.repeated_int32   (0));
1764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(202  , message.repeated_int64   (0));
1765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(203  , message.repeated_uint32  (0));
1766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(204  , message.repeated_uint64  (0));
1767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(205  , message.repeated_sint32  (0));
1768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(206  , message.repeated_sint64  (0));
1769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(207  , message.repeated_fixed32 (0));
1770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(208  , message.repeated_fixed64 (0));
1771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(209  , message.repeated_sfixed32(0));
1772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(210  , message.repeated_sfixed64(0));
1773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(211  , message.repeated_float   (0));
1774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(212  , message.repeated_double  (0));
1775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.repeated_bool    (0));
1776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("215", message.repeated_string  (0));
1777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("216", message.repeated_bytes   (0));
1778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(217, message.repeatedgroup           (0).a());
1780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(218, message.repeated_nested_message (0).bb());
1781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(219, message.repeated_foreign_message(0).c());
1782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(220, message.repeated_import_message (0).d());
1783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAR, message.repeated_nested_enum (0));
1785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR      , message.repeated_foreign_enum(0));
1786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAR, message.repeated_import_enum (0));
1787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectLastRepeatedExtensionsRemoved(
1790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const unittest::TestAllExtensions& message) {
1791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Test that one element was removed.
1793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_int32_extension   ));
1794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_int64_extension   ));
1795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_uint32_extension  ));
1796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_uint64_extension  ));
1797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_sint32_extension  ));
1798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_sint64_extension  ));
1799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_fixed32_extension ));
1800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_fixed64_extension ));
1801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_sfixed32_extension));
1802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_sfixed64_extension));
1803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_float_extension   ));
1804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_double_extension  ));
1805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_bool_extension    ));
1806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_string_extension  ));
1807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_bytes_extension   ));
1808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeatedgroup_extension           ));
1810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_nested_message_extension ));
1811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_foreign_message_extension));
1812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_import_message_extension ));
1813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_nested_enum_extension    ));
1814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_foreign_enum_extension   ));
1815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_import_enum_extension    ));
1816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_string_piece_extension));
1818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_cord_extension));
1819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Test that the remaining element is the correct one.
1821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(201  , message.GetExtension(unittest::repeated_int32_extension   , 0));
1822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(202  , message.GetExtension(unittest::repeated_int64_extension   , 0));
1823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(203  , message.GetExtension(unittest::repeated_uint32_extension  , 0));
1824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(204  , message.GetExtension(unittest::repeated_uint64_extension  , 0));
1825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(205  , message.GetExtension(unittest::repeated_sint32_extension  , 0));
1826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(206  , message.GetExtension(unittest::repeated_sint64_extension  , 0));
1827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(207  , message.GetExtension(unittest::repeated_fixed32_extension , 0));
1828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(208  , message.GetExtension(unittest::repeated_fixed64_extension , 0));
1829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(209  , message.GetExtension(unittest::repeated_sfixed32_extension, 0));
1830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(210  , message.GetExtension(unittest::repeated_sfixed64_extension, 0));
1831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(211  , message.GetExtension(unittest::repeated_float_extension   , 0));
1832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(212  , message.GetExtension(unittest::repeated_double_extension  , 0));
1833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.GetExtension(unittest::repeated_bool_extension    , 0));
1834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("215", message.GetExtension(unittest::repeated_string_extension  , 0));
1835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("216", message.GetExtension(unittest::repeated_bytes_extension   , 0));
1836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(217, message.GetExtension(unittest::repeatedgroup_extension           , 0).a());
1838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb());
1839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c());
1840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 0).d());
1841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAR, message.GetExtension(unittest::repeated_nested_enum_extension , 0));
1843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR      , message.GetExtension(unittest::repeated_foreign_enum_extension, 0));
1844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAR, message.GetExtension(unittest::repeated_import_enum_extension , 0));
1845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("224", message.GetExtension(unittest::repeated_string_piece_extension, 0));
1847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("225", message.GetExtension(unittest::repeated_cord_extension, 0));
1848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectRepeatedsSwapped(
1851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const unittest::TestAllTypes& message) {
1852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_int32_size   ());
1853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_int64_size   ());
1854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_uint32_size  ());
1855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_uint64_size  ());
1856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_sint32_size  ());
1857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_sint64_size  ());
1858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_fixed32_size ());
1859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_fixed64_size ());
1860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_sfixed32_size());
1861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_sfixed64_size());
1862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_float_size   ());
1863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_double_size  ());
1864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_bool_size    ());
1865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_string_size  ());
1866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_bytes_size   ());
1867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeatedgroup_size           ());
1869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_nested_message_size ());
1870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_foreign_message_size());
1871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_import_message_size ());
1872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_nested_enum_size    ());
1873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_foreign_enum_size   ());
1874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_import_enum_size    ());
1875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef PROTOBUF_TEST_NO_DESCRIPTORS
1877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_string_piece_size());
1878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.repeated_cord_size());
1879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
1880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Test that the first element and second element are flipped.
1882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(201  , message.repeated_int32   (1));
1883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(202  , message.repeated_int64   (1));
1884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(203  , message.repeated_uint32  (1));
1885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(204  , message.repeated_uint64  (1));
1886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(205  , message.repeated_sint32  (1));
1887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(206  , message.repeated_sint64  (1));
1888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(207  , message.repeated_fixed32 (1));
1889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(208  , message.repeated_fixed64 (1));
1890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(209  , message.repeated_sfixed32(1));
1891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(210  , message.repeated_sfixed64(1));
1892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(211  , message.repeated_float   (1));
1893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(212  , message.repeated_double  (1));
1894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.repeated_bool    (1));
1895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("215", message.repeated_string  (1));
1896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("216", message.repeated_bytes   (1));
1897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(217, message.repeatedgroup           (1).a());
1899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(218, message.repeated_nested_message (1).bb());
1900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(219, message.repeated_foreign_message(1).c());
1901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(220, message.repeated_import_message (1).d());
1902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAR, message.repeated_nested_enum (1));
1904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR      , message.repeated_foreign_enum(1));
1905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAR, message.repeated_import_enum (1));
1906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(301  , message.repeated_int32   (0));
1908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(302  , message.repeated_int64   (0));
1909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(303  , message.repeated_uint32  (0));
1910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(304  , message.repeated_uint64  (0));
1911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(305  , message.repeated_sint32  (0));
1912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(306  , message.repeated_sint64  (0));
1913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(307  , message.repeated_fixed32 (0));
1914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(308  , message.repeated_fixed64 (0));
1915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(309  , message.repeated_sfixed32(0));
1916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(310  , message.repeated_sfixed64(0));
1917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(311  , message.repeated_float   (0));
1918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(312  , message.repeated_double  (0));
1919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, message.repeated_bool    (0));
1920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("315", message.repeated_string  (0));
1921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("316", message.repeated_bytes   (0));
1922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(317, message.repeatedgroup           (0).a());
1924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(318, message.repeated_nested_message (0).bb());
1925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(319, message.repeated_foreign_message(0).c());
1926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(320, message.repeated_import_message (0).d());
1927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAZ, message.repeated_nested_enum (0));
1929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAZ      , message.repeated_foreign_enum(0));
1930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAZ, message.repeated_import_enum (0));
1931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ExpectRepeatedExtensionsSwapped(
1934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const unittest::TestAllExtensions& message) {
1935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_int32_extension   ));
1937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_int64_extension   ));
1938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_uint32_extension  ));
1939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_uint64_extension  ));
1940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sint32_extension  ));
1941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sint64_extension  ));
1942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_fixed32_extension ));
1943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_fixed64_extension ));
1944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sfixed32_extension));
1945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sfixed64_extension));
1946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_float_extension   ));
1947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_double_extension  ));
1948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_bool_extension    ));
1949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_string_extension  ));
1950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_bytes_extension   ));
1951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeatedgroup_extension           ));
1953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_message_extension ));
1954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_message_extension));
1955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_message_extension ));
1956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_enum_extension    ));
1957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_enum_extension   ));
1958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_enum_extension    ));
1959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_string_piece_extension));
1961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_cord_extension));
1962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(201  , message.GetExtension(unittest::repeated_int32_extension   , 1));
1964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(202  , message.GetExtension(unittest::repeated_int64_extension   , 1));
1965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(203  , message.GetExtension(unittest::repeated_uint32_extension  , 1));
1966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(204  , message.GetExtension(unittest::repeated_uint64_extension  , 1));
1967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(205  , message.GetExtension(unittest::repeated_sint32_extension  , 1));
1968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(206  , message.GetExtension(unittest::repeated_sint64_extension  , 1));
1969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(207  , message.GetExtension(unittest::repeated_fixed32_extension , 1));
1970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(208  , message.GetExtension(unittest::repeated_fixed64_extension , 1));
1971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(209  , message.GetExtension(unittest::repeated_sfixed32_extension, 1));
1972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(210  , message.GetExtension(unittest::repeated_sfixed64_extension, 1));
1973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(211  , message.GetExtension(unittest::repeated_float_extension   , 1));
1974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(212  , message.GetExtension(unittest::repeated_double_extension  , 1));
1975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , message.GetExtension(unittest::repeated_bool_extension    , 1));
1976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("215", message.GetExtension(unittest::repeated_string_extension  , 1));
1977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("216", message.GetExtension(unittest::repeated_bytes_extension   , 1));
1978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(217, message.GetExtension(unittest::repeatedgroup_extension           , 1).a());
1980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 1).bb());
1981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 1).c());
1982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 1).d());
1983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAR, message.GetExtension(unittest::repeated_nested_enum_extension , 1));
1985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAR      , message.GetExtension(unittest::repeated_foreign_enum_extension, 1));
1986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAR, message.GetExtension(unittest::repeated_import_enum_extension , 1));
1987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("224", message.GetExtension(unittest::repeated_string_piece_extension, 1));
1989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("225", message.GetExtension(unittest::repeated_cord_extension, 1));
1990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(301  , message.GetExtension(unittest::repeated_int32_extension   , 0));
1992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(302  , message.GetExtension(unittest::repeated_int64_extension   , 0));
1993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(303  , message.GetExtension(unittest::repeated_uint32_extension  , 0));
1994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(304  , message.GetExtension(unittest::repeated_uint64_extension  , 0));
1995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(305  , message.GetExtension(unittest::repeated_sint32_extension  , 0));
1996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(306  , message.GetExtension(unittest::repeated_sint64_extension  , 0));
1997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(307  , message.GetExtension(unittest::repeated_fixed32_extension , 0));
1998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(308  , message.GetExtension(unittest::repeated_fixed64_extension , 0));
1999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(309  , message.GetExtension(unittest::repeated_sfixed32_extension, 0));
2000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(310  , message.GetExtension(unittest::repeated_sfixed64_extension, 0));
2001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(311  , message.GetExtension(unittest::repeated_float_extension   , 0));
2002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(312  , message.GetExtension(unittest::repeated_double_extension  , 0));
2003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, message.GetExtension(unittest::repeated_bool_extension    , 0));
2004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("315", message.GetExtension(unittest::repeated_string_extension  , 0));
2005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("316", message.GetExtension(unittest::repeated_bytes_extension   , 0));
2006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(317, message.GetExtension(unittest::repeatedgroup_extension           , 0).a());
2008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(318, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb());
2009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(319, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c());
2010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(320, message.GetExtension(unittest::repeated_import_message_extension , 0).d());
2011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::TestAllTypes::BAZ, message.GetExtension(unittest::repeated_nested_enum_extension , 0));
2013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest::FOREIGN_BAZ      , message.GetExtension(unittest::repeated_foreign_enum_extension, 0));
2014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(unittest_import::IMPORT_BAZ, message.GetExtension(unittest::repeated_import_enum_extension , 0));
2015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("324", message.GetExtension(unittest::repeated_string_piece_extension, 0));
2017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("325", message.GetExtension(unittest::repeated_cord_extension, 0));
2018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// ===================================================================
2021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTestUtil::ReflectionTester::ReflectionTester(
2023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const Descriptor* base_descriptor)
2024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  : base_descriptor_(base_descriptor) {
2025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const DescriptorPool* pool = base_descriptor->file()->pool();
2027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  nested_b_ =
2029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    pool->FindFieldByName("protobuf_unittest.TestAllTypes.NestedMessage.bb");
2030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  foreign_c_ =
2031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    pool->FindFieldByName("protobuf_unittest.ForeignMessage.c");
2032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  import_d_ =
2033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    pool->FindFieldByName("protobuf_unittest_import.ImportMessage.d");
2034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  nested_foo_ =
2035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    pool->FindEnumValueByName("protobuf_unittest.TestAllTypes.FOO");
2036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  nested_bar_ =
2037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    pool->FindEnumValueByName("protobuf_unittest.TestAllTypes.BAR");
2038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  nested_baz_ =
2039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    pool->FindEnumValueByName("protobuf_unittest.TestAllTypes.BAZ");
2040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  foreign_foo_ =
2041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    pool->FindEnumValueByName("protobuf_unittest.FOREIGN_FOO");
2042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  foreign_bar_ =
2043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    pool->FindEnumValueByName("protobuf_unittest.FOREIGN_BAR");
2044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  foreign_baz_ =
2045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    pool->FindEnumValueByName("protobuf_unittest.FOREIGN_BAZ");
2046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  import_foo_ =
2047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    pool->FindEnumValueByName("protobuf_unittest_import.IMPORT_FOO");
2048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  import_bar_ =
2049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    pool->FindEnumValueByName("protobuf_unittest_import.IMPORT_BAR");
2050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  import_baz_ =
2051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    pool->FindEnumValueByName("protobuf_unittest_import.IMPORT_BAZ");
2052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (base_descriptor_->name() == "TestAllExtensions") {
2054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    group_a_ =
2055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      pool->FindFieldByName("protobuf_unittest.OptionalGroup_extension.a");
2056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    repeated_group_a_ =
2057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      pool->FindFieldByName("protobuf_unittest.RepeatedGroup_extension.a");
2058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  } else {
2059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    group_a_ =
2060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      pool->FindFieldByName("protobuf_unittest.TestAllTypes.OptionalGroup.a");
2061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    repeated_group_a_ =
2062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      pool->FindFieldByName("protobuf_unittest.TestAllTypes.RepeatedGroup.a");
2063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  }
2064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(group_a_          != NULL);
2066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(repeated_group_a_ != NULL);
2067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(nested_b_         != NULL);
2068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(foreign_c_        != NULL);
2069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(import_d_         != NULL);
2070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(nested_foo_       != NULL);
2071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(nested_bar_       != NULL);
2072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(nested_baz_       != NULL);
2073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(foreign_foo_      != NULL);
2074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(foreign_bar_      != NULL);
2075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(foreign_baz_      != NULL);
2076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(import_foo_       != NULL);
2077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(import_bar_       != NULL);
2078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(import_baz_       != NULL);
2079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Shorthand to get a FieldDescriptor for a field of unittest::TestAllTypes.
2082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst FieldDescriptor* TestUtil::ReflectionTester::F(const string& name) {
2083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const FieldDescriptor* result = NULL;
2084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (base_descriptor_->name() == "TestAllExtensions" ||
2085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      base_descriptor_->name() == "TestPackedExtensions") {
2086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    result = base_descriptor_->file()->FindExtensionByName(name + "_extension");
2087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  } else {
2088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    result = base_descriptor_->FindFieldByName(name);
2089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  }
2090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  GOOGLE_CHECK(result != NULL);
2091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  return result;
2092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
2095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ReflectionTester::SetAllFieldsViaReflection(Message* message) {
2097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Reflection* reflection = message->GetReflection();
2098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  Message* sub_message;
2099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetInt32 (message, F("optional_int32"   ), 101);
2101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetInt64 (message, F("optional_int64"   ), 102);
2102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetUInt32(message, F("optional_uint32"  ), 103);
2103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetUInt64(message, F("optional_uint64"  ), 104);
2104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetInt32 (message, F("optional_sint32"  ), 105);
2105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetInt64 (message, F("optional_sint64"  ), 106);
2106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetUInt32(message, F("optional_fixed32" ), 107);
2107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetUInt64(message, F("optional_fixed64" ), 108);
2108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetInt32 (message, F("optional_sfixed32"), 109);
2109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetInt64 (message, F("optional_sfixed64"), 110);
2110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetFloat (message, F("optional_float"   ), 111);
2111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetDouble(message, F("optional_double"  ), 112);
2112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetBool  (message, F("optional_bool"    ), true);
2113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetString(message, F("optional_string"  ), "115");
2114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetString(message, F("optional_bytes"   ), "116");
2115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->MutableMessage(message, F("optionalgroup"));
2117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, group_a_, 117);
2118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->MutableMessage(message, F("optional_nested_message"));
2119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, nested_b_, 118);
2120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->MutableMessage(message, F("optional_foreign_message"));
2121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, foreign_c_, 119);
2122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->MutableMessage(message, F("optional_import_message"));
2123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, import_d_, 120);
2124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetEnum(message, F("optional_nested_enum" ),  nested_baz_);
2126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetEnum(message, F("optional_foreign_enum"), foreign_baz_);
2127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetEnum(message, F("optional_import_enum" ),  import_baz_);
2128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetString(message, F("optional_string_piece"), "124");
2130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetString(message, F("optional_cord"), "125");
2131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // -----------------------------------------------------------------
2133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt32 (message, F("repeated_int32"   ), 201);
2135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt64 (message, F("repeated_int64"   ), 202);
2136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt32(message, F("repeated_uint32"  ), 203);
2137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt64(message, F("repeated_uint64"  ), 204);
2138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt32 (message, F("repeated_sint32"  ), 205);
2139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt64 (message, F("repeated_sint64"  ), 206);
2140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt32(message, F("repeated_fixed32" ), 207);
2141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt64(message, F("repeated_fixed64" ), 208);
2142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt32 (message, F("repeated_sfixed32"), 209);
2143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt64 (message, F("repeated_sfixed64"), 210);
2144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddFloat (message, F("repeated_float"   ), 211);
2145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddDouble(message, F("repeated_double"  ), 212);
2146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddBool  (message, F("repeated_bool"    ), true);
2147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddString(message, F("repeated_string"  ), "215");
2148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddString(message, F("repeated_bytes"   ), "216");
2149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->AddMessage(message, F("repeatedgroup"));
2151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, repeated_group_a_, 217);
2152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->AddMessage(message, F("repeated_nested_message"));
2153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, nested_b_, 218);
2154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->AddMessage(message, F("repeated_foreign_message"));
2155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, foreign_c_, 219);
2156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->AddMessage(message, F("repeated_import_message"));
2157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, import_d_, 220);
2158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddEnum(message, F("repeated_nested_enum" ),  nested_bar_);
2160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddEnum(message, F("repeated_foreign_enum"), foreign_bar_);
2161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddEnum(message, F("repeated_import_enum" ),  import_bar_);
2162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddString(message, F("repeated_string_piece"), "224");
2164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddString(message, F("repeated_cord"), "225");
2165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Add a second one of each field.
2167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt32 (message, F("repeated_int32"   ), 301);
2168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt64 (message, F("repeated_int64"   ), 302);
2169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt32(message, F("repeated_uint32"  ), 303);
2170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt64(message, F("repeated_uint64"  ), 304);
2171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt32 (message, F("repeated_sint32"  ), 305);
2172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt64 (message, F("repeated_sint64"  ), 306);
2173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt32(message, F("repeated_fixed32" ), 307);
2174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt64(message, F("repeated_fixed64" ), 308);
2175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt32 (message, F("repeated_sfixed32"), 309);
2176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt64 (message, F("repeated_sfixed64"), 310);
2177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddFloat (message, F("repeated_float"   ), 311);
2178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddDouble(message, F("repeated_double"  ), 312);
2179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddBool  (message, F("repeated_bool"    ), false);
2180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddString(message, F("repeated_string"  ), "315");
2181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddString(message, F("repeated_bytes"   ), "316");
2182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->AddMessage(message, F("repeatedgroup"));
2184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, repeated_group_a_, 317);
2185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->AddMessage(message, F("repeated_nested_message"));
2186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, nested_b_, 318);
2187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->AddMessage(message, F("repeated_foreign_message"));
2188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, foreign_c_, 319);
2189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->AddMessage(message, F("repeated_import_message"));
2190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, import_d_, 320);
2191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddEnum(message, F("repeated_nested_enum" ),  nested_baz_);
2193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddEnum(message, F("repeated_foreign_enum"), foreign_baz_);
2194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddEnum(message, F("repeated_import_enum" ),  import_baz_);
2195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddString(message, F("repeated_string_piece"), "324");
2197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddString(message, F("repeated_cord"), "325");
2198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // -----------------------------------------------------------------
2200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetInt32 (message, F("default_int32"   ), 401);
2202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetInt64 (message, F("default_int64"   ), 402);
2203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetUInt32(message, F("default_uint32"  ), 403);
2204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetUInt64(message, F("default_uint64"  ), 404);
2205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetInt32 (message, F("default_sint32"  ), 405);
2206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetInt64 (message, F("default_sint64"  ), 406);
2207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetUInt32(message, F("default_fixed32" ), 407);
2208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetUInt64(message, F("default_fixed64" ), 408);
2209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetInt32 (message, F("default_sfixed32"), 409);
2210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetInt64 (message, F("default_sfixed64"), 410);
2211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetFloat (message, F("default_float"   ), 411);
2212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetDouble(message, F("default_double"  ), 412);
2213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetBool  (message, F("default_bool"    ), false);
2214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetString(message, F("default_string"  ), "415");
2215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetString(message, F("default_bytes"   ), "416");
2216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetEnum(message, F("default_nested_enum" ),  nested_foo_);
2218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetEnum(message, F("default_foreign_enum"), foreign_foo_);
2219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetEnum(message, F("default_import_enum" ),  import_foo_);
2220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetString(message, F("default_string_piece"), "424");
2222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetString(message, F("default_cord"), "425");
2223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ReflectionTester::SetPackedFieldsViaReflection(
2226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    Message* message) {
2227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Reflection* reflection = message->GetReflection();
2228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt32 (message, F("packed_int32"   ), 601);
2229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt64 (message, F("packed_int64"   ), 602);
2230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt32(message, F("packed_uint32"  ), 603);
2231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt64(message, F("packed_uint64"  ), 604);
2232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt32 (message, F("packed_sint32"  ), 605);
2233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt64 (message, F("packed_sint64"  ), 606);
2234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt32(message, F("packed_fixed32" ), 607);
2235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt64(message, F("packed_fixed64" ), 608);
2236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt32 (message, F("packed_sfixed32"), 609);
2237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt64 (message, F("packed_sfixed64"), 610);
2238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddFloat (message, F("packed_float"   ), 611);
2239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddDouble(message, F("packed_double"  ), 612);
2240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddBool  (message, F("packed_bool"    ), true);
2241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddEnum  (message, F("packed_enum"    ), foreign_bar_);
2242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt32 (message, F("packed_int32"   ), 701);
2244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt64 (message, F("packed_int64"   ), 702);
2245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt32(message, F("packed_uint32"  ), 703);
2246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt64(message, F("packed_uint64"  ), 704);
2247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt32 (message, F("packed_sint32"  ), 705);
2248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt64 (message, F("packed_sint64"  ), 706);
2249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt32(message, F("packed_fixed32" ), 707);
2250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddUInt64(message, F("packed_fixed64" ), 708);
2251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt32 (message, F("packed_sfixed32"), 709);
2252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddInt64 (message, F("packed_sfixed64"), 710);
2253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddFloat (message, F("packed_float"   ), 711);
2254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddDouble(message, F("packed_double"  ), 712);
2255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddBool  (message, F("packed_bool"    ), false);
2256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->AddEnum  (message, F("packed_enum"    ), foreign_baz_);
2257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
2260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection(
2262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const Message& message) {
2263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // We have to split this into three function otherwise it creates a stack
2264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // frame so large that it triggers a warning.
2265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ExpectAllFieldsSetViaReflection1(message);
2266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ExpectAllFieldsSetViaReflection2(message);
2267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ExpectAllFieldsSetViaReflection3(message);
2268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection1(
2271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const Message& message) {
2272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Reflection* reflection = message.GetReflection();
2273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  string scratch;
2274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Message* sub_message;
2275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_int32"   )));
2277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_int64"   )));
2278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_uint32"  )));
2279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_uint64"  )));
2280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_sint32"  )));
2281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_sint64"  )));
2282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_fixed32" )));
2283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_fixed64" )));
2284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_sfixed32")));
2285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_sfixed64")));
2286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_float"   )));
2287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_double"  )));
2288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_bool"    )));
2289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_string"  )));
2290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_bytes"   )));
2291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optionalgroup"           )));
2293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_nested_message" )));
2294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_foreign_message")));
2295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_import_message" )));
2296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetMessage(message, F("optionalgroup"));
2298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, group_a_));
2299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetMessage(message, F("optional_nested_message"));
2300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, nested_b_));
2301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetMessage(message, F("optional_foreign_message"));
2302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, foreign_c_));
2303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetMessage(message, F("optional_import_message"));
2304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, import_d_));
2305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_nested_enum" )));
2307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_foreign_enum")));
2308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_import_enum" )));
2309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_string_piece")));
2311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("optional_cord")));
2312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(101  , reflection->GetInt32 (message, F("optional_int32"   )));
2314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(102  , reflection->GetInt64 (message, F("optional_int64"   )));
2315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(103  , reflection->GetUInt32(message, F("optional_uint32"  )));
2316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(104  , reflection->GetUInt64(message, F("optional_uint64"  )));
2317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(105  , reflection->GetInt32 (message, F("optional_sint32"  )));
2318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(106  , reflection->GetInt64 (message, F("optional_sint64"  )));
2319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(107  , reflection->GetUInt32(message, F("optional_fixed32" )));
2320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(108  , reflection->GetUInt64(message, F("optional_fixed64" )));
2321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(109  , reflection->GetInt32 (message, F("optional_sfixed32")));
2322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(110  , reflection->GetInt64 (message, F("optional_sfixed64")));
2323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(111  , reflection->GetFloat (message, F("optional_float"   )));
2324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(112  , reflection->GetDouble(message, F("optional_double"  )));
2325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , reflection->GetBool  (message, F("optional_bool"    )));
2326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("115", reflection->GetString(message, F("optional_string"  )));
2327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("116", reflection->GetString(message, F("optional_bytes"   )));
2328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("115", reflection->GetStringReference(message, F("optional_string"), &scratch));
2330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("116", reflection->GetStringReference(message, F("optional_bytes" ), &scratch));
2331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetMessage(message, F("optionalgroup"));
2333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(117, sub_message->GetReflection()->GetInt32(*sub_message, group_a_));
2334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetMessage(message, F("optional_nested_message"));
2335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(118, sub_message->GetReflection()->GetInt32(*sub_message, nested_b_));
2336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetMessage(message, F("optional_foreign_message"));
2337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(119, sub_message->GetReflection()->GetInt32(*sub_message, foreign_c_));
2338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetMessage(message, F("optional_import_message"));
2339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(120, sub_message->GetReflection()->GetInt32(*sub_message, import_d_));
2340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( nested_baz_, reflection->GetEnum(message, F("optional_nested_enum" )));
2342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(foreign_baz_, reflection->GetEnum(message, F("optional_foreign_enum")));
2343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( import_baz_, reflection->GetEnum(message, F("optional_import_enum" )));
2344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("124", reflection->GetString(message, F("optional_string_piece")));
2346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("124", reflection->GetStringReference(message, F("optional_string_piece"), &scratch));
2347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("125", reflection->GetString(message, F("optional_cord")));
2349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("125", reflection->GetStringReference(message, F("optional_cord"), &scratch));
2350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection2(
2353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const Message& message) {
2354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Reflection* reflection = message.GetReflection();
2355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  string scratch;
2356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Message* sub_message;
2357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // -----------------------------------------------------------------
2359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_int32"   )));
2361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_int64"   )));
2362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_uint32"  )));
2363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_uint64"  )));
2364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_sint32"  )));
2365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_sint64"  )));
2366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_fixed32" )));
2367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_fixed64" )));
2368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_sfixed32")));
2369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_sfixed64")));
2370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_float"   )));
2371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_double"  )));
2372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_bool"    )));
2373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_string"  )));
2374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_bytes"   )));
2375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeatedgroup"           )));
2377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_nested_message" )));
2378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_foreign_message")));
2379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_import_message" )));
2380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_nested_enum"    )));
2381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_foreign_enum"   )));
2382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_import_enum"    )));
2383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_string_piece")));
2385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_cord")));
2386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(201  , reflection->GetRepeatedInt32 (message, F("repeated_int32"   ), 0));
2388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(202  , reflection->GetRepeatedInt64 (message, F("repeated_int64"   ), 0));
2389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(203  , reflection->GetRepeatedUInt32(message, F("repeated_uint32"  ), 0));
2390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(204  , reflection->GetRepeatedUInt64(message, F("repeated_uint64"  ), 0));
2391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(205  , reflection->GetRepeatedInt32 (message, F("repeated_sint32"  ), 0));
2392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(206  , reflection->GetRepeatedInt64 (message, F("repeated_sint64"  ), 0));
2393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(207  , reflection->GetRepeatedUInt32(message, F("repeated_fixed32" ), 0));
2394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(208  , reflection->GetRepeatedUInt64(message, F("repeated_fixed64" ), 0));
2395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(209  , reflection->GetRepeatedInt32 (message, F("repeated_sfixed32"), 0));
2396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(210  , reflection->GetRepeatedInt64 (message, F("repeated_sfixed64"), 0));
2397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(211  , reflection->GetRepeatedFloat (message, F("repeated_float"   ), 0));
2398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(212  , reflection->GetRepeatedDouble(message, F("repeated_double"  ), 0));
2399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , reflection->GetRepeatedBool  (message, F("repeated_bool"    ), 0));
2400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("215", reflection->GetRepeatedString(message, F("repeated_string"  ), 0));
2401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("216", reflection->GetRepeatedString(message, F("repeated_bytes"   ), 0));
2402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("215", reflection->GetRepeatedStringReference(message, F("repeated_string"), 0, &scratch));
2404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("216", reflection->GetRepeatedStringReference(message, F("repeated_bytes"), 0, &scratch));
2405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetRepeatedMessage(message, F("repeatedgroup"), 0);
2407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(217, sub_message->GetReflection()->GetInt32(*sub_message, repeated_group_a_));
2408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetRepeatedMessage(message, F("repeated_nested_message"), 0);
2409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(218, sub_message->GetReflection()->GetInt32(*sub_message, nested_b_));
2410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetRepeatedMessage(message, F("repeated_foreign_message"), 0);
2411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(219, sub_message->GetReflection()->GetInt32(*sub_message, foreign_c_));
2412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetRepeatedMessage(message, F("repeated_import_message"), 0);
2413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(220, sub_message->GetReflection()->GetInt32(*sub_message, import_d_));
2414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( nested_bar_, reflection->GetRepeatedEnum(message, F("repeated_nested_enum" ),0));
2416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(foreign_bar_, reflection->GetRepeatedEnum(message, F("repeated_foreign_enum"),0));
2417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( import_bar_, reflection->GetRepeatedEnum(message, F("repeated_import_enum" ),0));
2418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("224", reflection->GetRepeatedString(message, F("repeated_string_piece"), 0));
2420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("224", reflection->GetRepeatedStringReference(
2421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                        message, F("repeated_string_piece"), 0, &scratch));
2422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("225", reflection->GetRepeatedString(message, F("repeated_cord"), 0));
2424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("225", reflection->GetRepeatedStringReference(
2425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                        message, F("repeated_cord"), 0, &scratch));
2426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(301  , reflection->GetRepeatedInt32 (message, F("repeated_int32"   ), 1));
2428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(302  , reflection->GetRepeatedInt64 (message, F("repeated_int64"   ), 1));
2429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(303  , reflection->GetRepeatedUInt32(message, F("repeated_uint32"  ), 1));
2430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(304  , reflection->GetRepeatedUInt64(message, F("repeated_uint64"  ), 1));
2431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(305  , reflection->GetRepeatedInt32 (message, F("repeated_sint32"  ), 1));
2432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(306  , reflection->GetRepeatedInt64 (message, F("repeated_sint64"  ), 1));
2433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(307  , reflection->GetRepeatedUInt32(message, F("repeated_fixed32" ), 1));
2434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(308  , reflection->GetRepeatedUInt64(message, F("repeated_fixed64" ), 1));
2435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(309  , reflection->GetRepeatedInt32 (message, F("repeated_sfixed32"), 1));
2436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(310  , reflection->GetRepeatedInt64 (message, F("repeated_sfixed64"), 1));
2437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(311  , reflection->GetRepeatedFloat (message, F("repeated_float"   ), 1));
2438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(312  , reflection->GetRepeatedDouble(message, F("repeated_double"  ), 1));
2439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, reflection->GetRepeatedBool  (message, F("repeated_bool"    ), 1));
2440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("315", reflection->GetRepeatedString(message, F("repeated_string"  ), 1));
2441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("316", reflection->GetRepeatedString(message, F("repeated_bytes"   ), 1));
2442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("315", reflection->GetRepeatedStringReference(message, F("repeated_string"),
2444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                                                          1, &scratch));
2445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("316", reflection->GetRepeatedStringReference(message, F("repeated_bytes"),
2446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                                                          1, &scratch));
2447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetRepeatedMessage(message, F("repeatedgroup"), 1);
2449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(317, sub_message->GetReflection()->GetInt32(*sub_message, repeated_group_a_));
2450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetRepeatedMessage(message, F("repeated_nested_message"), 1);
2451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(318, sub_message->GetReflection()->GetInt32(*sub_message, nested_b_));
2452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetRepeatedMessage(message, F("repeated_foreign_message"), 1);
2453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(319, sub_message->GetReflection()->GetInt32(*sub_message, foreign_c_));
2454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetRepeatedMessage(message, F("repeated_import_message"), 1);
2455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(320, sub_message->GetReflection()->GetInt32(*sub_message, import_d_));
2456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( nested_baz_, reflection->GetRepeatedEnum(message, F("repeated_nested_enum" ),1));
2458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(foreign_baz_, reflection->GetRepeatedEnum(message, F("repeated_foreign_enum"),1));
2459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( import_baz_, reflection->GetRepeatedEnum(message, F("repeated_import_enum" ),1));
2460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("324", reflection->GetRepeatedString(message, F("repeated_string_piece"), 1));
2462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("324", reflection->GetRepeatedStringReference(
2463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                        message, F("repeated_string_piece"), 1, &scratch));
2464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("325", reflection->GetRepeatedString(message, F("repeated_cord"), 1));
2466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("325", reflection->GetRepeatedStringReference(
2467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                        message, F("repeated_cord"), 1, &scratch));
2468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection3(
2471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const Message& message) {
2472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Reflection* reflection = message.GetReflection();
2473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  string scratch;
2474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // -----------------------------------------------------------------
2476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_int32"   )));
2478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_int64"   )));
2479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_uint32"  )));
2480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_uint64"  )));
2481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_sint32"  )));
2482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_sint64"  )));
2483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_fixed32" )));
2484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_fixed64" )));
2485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_sfixed32")));
2486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_sfixed64")));
2487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_float"   )));
2488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_double"  )));
2489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_bool"    )));
2490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_string"  )));
2491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_bytes"   )));
2492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_nested_enum" )));
2494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_foreign_enum")));
2495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_import_enum" )));
2496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_string_piece")));
2498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_TRUE(reflection->HasField(message, F("default_cord")));
2499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(401  , reflection->GetInt32 (message, F("default_int32"   )));
2501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(402  , reflection->GetInt64 (message, F("default_int64"   )));
2502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(403  , reflection->GetUInt32(message, F("default_uint32"  )));
2503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(404  , reflection->GetUInt64(message, F("default_uint64"  )));
2504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(405  , reflection->GetInt32 (message, F("default_sint32"  )));
2505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(406  , reflection->GetInt64 (message, F("default_sint64"  )));
2506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(407  , reflection->GetUInt32(message, F("default_fixed32" )));
2507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(408  , reflection->GetUInt64(message, F("default_fixed64" )));
2508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(409  , reflection->GetInt32 (message, F("default_sfixed32")));
2509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(410  , reflection->GetInt64 (message, F("default_sfixed64")));
2510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(411  , reflection->GetFloat (message, F("default_float"   )));
2511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(412  , reflection->GetDouble(message, F("default_double"  )));
2512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, reflection->GetBool  (message, F("default_bool"    )));
2513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("415", reflection->GetString(message, F("default_string"  )));
2514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("416", reflection->GetString(message, F("default_bytes"   )));
2515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("415", reflection->GetStringReference(message, F("default_string"), &scratch));
2517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("416", reflection->GetStringReference(message, F("default_bytes" ), &scratch));
2518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( nested_foo_, reflection->GetEnum(message, F("default_nested_enum" )));
2520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(foreign_foo_, reflection->GetEnum(message, F("default_foreign_enum")));
2521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( import_foo_, reflection->GetEnum(message, F("default_import_enum" )));
2522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("424", reflection->GetString(message, F("default_string_piece")));
2524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("424", reflection->GetStringReference(message, F("default_string_piece"),
2525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                                                  &scratch));
2526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("425", reflection->GetString(message, F("default_cord")));
2528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("425", reflection->GetStringReference(message, F("default_cord"), &scratch));
2529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ReflectionTester::ExpectPackedFieldsSetViaReflection(
2532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const Message& message) {
2533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Reflection* reflection = message.GetReflection();
2534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_int32"   )));
2536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_int64"   )));
2537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_uint32"  )));
2538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_uint64"  )));
2539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_sint32"  )));
2540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_sint64"  )));
2541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_fixed32" )));
2542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_fixed64" )));
2543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_sfixed32")));
2544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_sfixed64")));
2545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_float"   )));
2546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_double"  )));
2547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_bool"    )));
2548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  ASSERT_EQ(2, reflection->FieldSize(message, F("packed_enum"    )));
2549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(601  , reflection->GetRepeatedInt32 (message, F("packed_int32"   ), 0));
2551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(602  , reflection->GetRepeatedInt64 (message, F("packed_int64"   ), 0));
2552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(603  , reflection->GetRepeatedUInt32(message, F("packed_uint32"  ), 0));
2553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(604  , reflection->GetRepeatedUInt64(message, F("packed_uint64"  ), 0));
2554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(605  , reflection->GetRepeatedInt32 (message, F("packed_sint32"  ), 0));
2555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(606  , reflection->GetRepeatedInt64 (message, F("packed_sint64"  ), 0));
2556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(607  , reflection->GetRepeatedUInt32(message, F("packed_fixed32" ), 0));
2557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(608  , reflection->GetRepeatedUInt64(message, F("packed_fixed64" ), 0));
2558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(609  , reflection->GetRepeatedInt32 (message, F("packed_sfixed32"), 0));
2559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(610  , reflection->GetRepeatedInt64 (message, F("packed_sfixed64"), 0));
2560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(611  , reflection->GetRepeatedFloat (message, F("packed_float"   ), 0));
2561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(612  , reflection->GetRepeatedDouble(message, F("packed_double"  ), 0));
2562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true , reflection->GetRepeatedBool  (message, F("packed_bool"    ), 0));
2563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(foreign_bar_,
2564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville            reflection->GetRepeatedEnum(message, F("packed_enum"), 0));
2565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(701  , reflection->GetRepeatedInt32 (message, F("packed_int32"   ), 1));
2567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(702  , reflection->GetRepeatedInt64 (message, F("packed_int64"   ), 1));
2568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(703  , reflection->GetRepeatedUInt32(message, F("packed_uint32"  ), 1));
2569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(704  , reflection->GetRepeatedUInt64(message, F("packed_uint64"  ), 1));
2570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(705  , reflection->GetRepeatedInt32 (message, F("packed_sint32"  ), 1));
2571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(706  , reflection->GetRepeatedInt64 (message, F("packed_sint64"  ), 1));
2572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(707  , reflection->GetRepeatedUInt32(message, F("packed_fixed32" ), 1));
2573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(708  , reflection->GetRepeatedUInt64(message, F("packed_fixed64" ), 1));
2574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(709  , reflection->GetRepeatedInt32 (message, F("packed_sfixed32"), 1));
2575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(710  , reflection->GetRepeatedInt64 (message, F("packed_sfixed64"), 1));
2576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(711  , reflection->GetRepeatedFloat (message, F("packed_float"   ), 1));
2577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(712  , reflection->GetRepeatedDouble(message, F("packed_double"  ), 1));
2578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, reflection->GetRepeatedBool  (message, F("packed_bool"    ), 1));
2579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(foreign_baz_,
2580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville            reflection->GetRepeatedEnum(message, F("packed_enum"), 1));
2581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
2584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ReflectionTester::ExpectClearViaReflection(
2586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const Message& message) {
2587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Reflection* reflection = message.GetReflection();
2588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  string scratch;
2589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Message* sub_message;
2590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // has_blah() should initially be false for all optional fields.
2592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_int32"   )));
2593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_int64"   )));
2594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_uint32"  )));
2595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_uint64"  )));
2596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_sint32"  )));
2597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_sint64"  )));
2598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_fixed32" )));
2599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_fixed64" )));
2600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_sfixed32")));
2601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_sfixed64")));
2602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_float"   )));
2603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_double"  )));
2604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_bool"    )));
2605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_string"  )));
2606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_bytes"   )));
2607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optionalgroup"           )));
2609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_nested_message" )));
2610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_foreign_message")));
2611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_import_message" )));
2612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_nested_enum" )));
2614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_foreign_enum")));
2615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_import_enum" )));
2616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_string_piece")));
2618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("optional_cord")));
2619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Optional fields without defaults are set to zero or something like it.
2621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , reflection->GetInt32 (message, F("optional_int32"   )));
2622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , reflection->GetInt64 (message, F("optional_int64"   )));
2623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , reflection->GetUInt32(message, F("optional_uint32"  )));
2624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , reflection->GetUInt64(message, F("optional_uint64"  )));
2625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , reflection->GetInt32 (message, F("optional_sint32"  )));
2626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , reflection->GetInt64 (message, F("optional_sint64"  )));
2627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , reflection->GetUInt32(message, F("optional_fixed32" )));
2628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , reflection->GetUInt64(message, F("optional_fixed64" )));
2629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , reflection->GetInt32 (message, F("optional_sfixed32")));
2630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , reflection->GetInt64 (message, F("optional_sfixed64")));
2631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , reflection->GetFloat (message, F("optional_float"   )));
2632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0    , reflection->GetDouble(message, F("optional_double"  )));
2633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(false, reflection->GetBool  (message, F("optional_bool"    )));
2634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(""   , reflection->GetString(message, F("optional_string"  )));
2635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(""   , reflection->GetString(message, F("optional_bytes"   )));
2636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("", reflection->GetStringReference(message, F("optional_string"), &scratch));
2638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("", reflection->GetStringReference(message, F("optional_bytes" ), &scratch));
2639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Embedded messages should also be clear.
2641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetMessage(message, F("optionalgroup"));
2642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(sub_message->GetReflection()->HasField(*sub_message, group_a_));
2643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, sub_message->GetReflection()->GetInt32(*sub_message, group_a_));
2644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetMessage(message, F("optional_nested_message"));
2645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(sub_message->GetReflection()->HasField(*sub_message, nested_b_));
2646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, sub_message->GetReflection()->GetInt32(*sub_message, nested_b_));
2647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetMessage(message, F("optional_foreign_message"));
2648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(sub_message->GetReflection()->HasField(*sub_message, foreign_c_));
2649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, sub_message->GetReflection()->GetInt32(*sub_message, foreign_c_));
2650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = &reflection->GetMessage(message, F("optional_import_message"));
2651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(sub_message->GetReflection()->HasField(*sub_message, import_d_));
2652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, sub_message->GetReflection()->GetInt32(*sub_message, import_d_));
2653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Enums without defaults are set to the first value in the enum.
2655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( nested_foo_, reflection->GetEnum(message, F("optional_nested_enum" )));
2656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(foreign_foo_, reflection->GetEnum(message, F("optional_foreign_enum")));
2657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( import_foo_, reflection->GetEnum(message, F("optional_import_enum" )));
2658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("", reflection->GetString(message, F("optional_string_piece")));
2660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("", reflection->GetStringReference(message, F("optional_string_piece"), &scratch));
2661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("", reflection->GetString(message, F("optional_cord")));
2663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("", reflection->GetStringReference(message, F("optional_cord"), &scratch));
2664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Repeated fields are empty.
2666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_int32"   )));
2667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_int64"   )));
2668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_uint32"  )));
2669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_uint64"  )));
2670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_sint32"  )));
2671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_sint64"  )));
2672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_fixed32" )));
2673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_fixed64" )));
2674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_sfixed32")));
2675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_sfixed64")));
2676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_float"   )));
2677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_double"  )));
2678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_bool"    )));
2679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_string"  )));
2680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_bytes"   )));
2681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeatedgroup"           )));
2683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_nested_message" )));
2684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_foreign_message")));
2685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_import_message" )));
2686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_nested_enum"    )));
2687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_foreign_enum"   )));
2688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_import_enum"    )));
2689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_string_piece")));
2691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_cord")));
2692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // has_blah() should also be false for all default fields.
2694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_int32"   )));
2695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_int64"   )));
2696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_uint32"  )));
2697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_uint64"  )));
2698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_sint32"  )));
2699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_sint64"  )));
2700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_fixed32" )));
2701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_fixed64" )));
2702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_sfixed32")));
2703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_sfixed64")));
2704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_float"   )));
2705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_double"  )));
2706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_bool"    )));
2707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_string"  )));
2708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_bytes"   )));
2709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_nested_enum" )));
2711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_foreign_enum")));
2712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_import_enum" )));
2713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_string_piece")));
2715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_FALSE(reflection->HasField(message, F("default_cord")));
2716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  // Fields with defaults have their default values (duh).
2718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 41    , reflection->GetInt32 (message, F("default_int32"   )));
2719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 42    , reflection->GetInt64 (message, F("default_int64"   )));
2720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 43    , reflection->GetUInt32(message, F("default_uint32"  )));
2721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 44    , reflection->GetUInt64(message, F("default_uint64"  )));
2722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(-45    , reflection->GetInt32 (message, F("default_sint32"  )));
2723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 46    , reflection->GetInt64 (message, F("default_sint64"  )));
2724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 47    , reflection->GetUInt32(message, F("default_fixed32" )));
2725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 48    , reflection->GetUInt64(message, F("default_fixed64" )));
2726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 49    , reflection->GetInt32 (message, F("default_sfixed32")));
2727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(-50    , reflection->GetInt64 (message, F("default_sfixed64")));
2728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 51.5  , reflection->GetFloat (message, F("default_float"   )));
2729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( 52e3  , reflection->GetDouble(message, F("default_double"  )));
2730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(true   , reflection->GetBool  (message, F("default_bool"    )));
2731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("hello", reflection->GetString(message, F("default_string"  )));
2732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("world", reflection->GetString(message, F("default_bytes"   )));
2733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("hello", reflection->GetStringReference(message, F("default_string"), &scratch));
2735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("world", reflection->GetStringReference(message, F("default_bytes" ), &scratch));
2736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( nested_bar_, reflection->GetEnum(message, F("default_nested_enum" )));
2738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(foreign_bar_, reflection->GetEnum(message, F("default_foreign_enum")));
2739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ( import_bar_, reflection->GetEnum(message, F("default_import_enum" )));
2740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("abc", reflection->GetString(message, F("default_string_piece")));
2742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("abc", reflection->GetStringReference(message, F("default_string_piece"), &scratch));
2743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("123", reflection->GetString(message, F("default_cord")));
2745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ("123", reflection->GetStringReference(message, F("default_cord"), &scratch));
2746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ReflectionTester::ExpectPackedClearViaReflection(
2749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const Message& message) {
2750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Reflection* reflection = message.GetReflection();
2751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_int32"   )));
2753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_int64"   )));
2754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_uint32"  )));
2755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_uint64"  )));
2756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_sint32"  )));
2757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_sint64"  )));
2758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_fixed32" )));
2759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_fixed64" )));
2760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_sfixed32")));
2761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_sfixed64")));
2762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_float"   )));
2763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_double"  )));
2764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_bool"    )));
2765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  EXPECT_EQ(0, reflection->FieldSize(message, F("packed_enum"    )));
2766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// -------------------------------------------------------------------
2769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ReflectionTester::ModifyRepeatedFieldsViaReflection(
2771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    Message* message) {
2772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Reflection* reflection = message->GetReflection();
2773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  Message* sub_message;
2774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedInt32 (message, F("repeated_int32"   ), 1, 501);
2776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedInt64 (message, F("repeated_int64"   ), 1, 502);
2777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedUInt32(message, F("repeated_uint32"  ), 1, 503);
2778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedUInt64(message, F("repeated_uint64"  ), 1, 504);
2779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedInt32 (message, F("repeated_sint32"  ), 1, 505);
2780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedInt64 (message, F("repeated_sint64"  ), 1, 506);
2781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedUInt32(message, F("repeated_fixed32" ), 1, 507);
2782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedUInt64(message, F("repeated_fixed64" ), 1, 508);
2783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedInt32 (message, F("repeated_sfixed32"), 1, 509);
2784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedInt64 (message, F("repeated_sfixed64"), 1, 510);
2785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedFloat (message, F("repeated_float"   ), 1, 511);
2786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedDouble(message, F("repeated_double"  ), 1, 512);
2787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedBool  (message, F("repeated_bool"    ), 1, true);
2788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedString(message, F("repeated_string"  ), 1, "515");
2789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedString(message, F("repeated_bytes"   ), 1, "516");
2790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->MutableRepeatedMessage(message, F("repeatedgroup"), 1);
2792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, repeated_group_a_, 517);
2793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->MutableRepeatedMessage(message, F("repeated_nested_message"), 1);
2794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, nested_b_, 518);
2795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->MutableRepeatedMessage(message, F("repeated_foreign_message"), 1);
2796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, foreign_c_, 519);
2797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message = reflection->MutableRepeatedMessage(message, F("repeated_import_message"), 1);
2798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sub_message->GetReflection()->SetInt32(sub_message, import_d_, 520);
2799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedEnum(message, F("repeated_nested_enum" ), 1,  nested_foo_);
2801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedEnum(message, F("repeated_foreign_enum"), 1, foreign_foo_);
2802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedEnum(message, F("repeated_import_enum" ), 1,  import_foo_);
2803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedString(message, F("repeated_string_piece"), 1, "524");
2805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedString(message, F("repeated_cord"), 1, "525");
2806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ReflectionTester::ModifyPackedFieldsViaReflection(
2809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    Message* message) {
2810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Reflection* reflection = message->GetReflection();
2811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedInt32 (message, F("packed_int32"   ), 1, 801);
2812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedInt64 (message, F("packed_int64"   ), 1, 802);
2813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedUInt32(message, F("packed_uint32"  ), 1, 803);
2814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedUInt64(message, F("packed_uint64"  ), 1, 804);
2815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedInt32 (message, F("packed_sint32"  ), 1, 805);
2816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedInt64 (message, F("packed_sint64"  ), 1, 806);
2817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedUInt32(message, F("packed_fixed32" ), 1, 807);
2818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedUInt64(message, F("packed_fixed64" ), 1, 808);
2819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedInt32 (message, F("packed_sfixed32"), 1, 809);
2820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedInt64 (message, F("packed_sfixed64"), 1, 810);
2821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedFloat (message, F("packed_float"   ), 1, 811);
2822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedDouble(message, F("packed_double"  ), 1, 812);
2823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedBool  (message, F("packed_bool"    ), 1, true);
2824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->SetRepeatedEnum  (message, F("packed_enum"    ), 1, foreign_foo_);
2825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ReflectionTester::RemoveLastRepeatedsViaReflection(Message* message) {
2828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Reflection* reflection = message->GetReflection();
2829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  vector<const FieldDescriptor*> output;
2831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->ListFields(*message, &output);
2832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  for (int i=0; i<output.size(); ++i) {
2833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const FieldDescriptor* field = output[i];
2834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if (!field->is_repeated()) continue;
2835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    reflection->RemoveLast(message, field);
2837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  }
2838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid TestUtil::ReflectionTester::SwapRepeatedsViaReflection(Message* message) {
2841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const Reflection* reflection = message->GetReflection();
2842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  vector<const FieldDescriptor*> output;
2844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  reflection->ListFields(*message, &output);
2845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  for (int i=0; i<output.size(); ++i) {
2846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    const FieldDescriptor* field = output[i];
2847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if (!field->is_repeated()) continue;
2848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    reflection->SwapElements(message, field, 0, 1);
2850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  }
2851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}  // namespace protobuf
2854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}  // namespace google
2855