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