诸暨麻将添加redis
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

2407 rindas
116 KiB

  1. // Protocol Buffers - Google's data interchange format
  2. // Copyright 2008 Google Inc. All rights reserved.
  3. // https://developers.google.com/protocol-buffers/
  4. //
  5. // Redistribution and use in source and binary forms, with or without
  6. // modification, are permitted provided that the following conditions are
  7. // met:
  8. //
  9. // * Redistributions of source code must retain the above copyright
  10. // notice, this list of conditions and the following disclaimer.
  11. // * Redistributions in binary form must reproduce the above
  12. // copyright notice, this list of conditions and the following disclaimer
  13. // in the documentation and/or other materials provided with the
  14. // distribution.
  15. // * Neither the name of Google Inc. nor the names of its
  16. // contributors may be used to endorse or promote products derived from
  17. // this software without specific prior written permission.
  18. //
  19. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  20. // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  21. // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  22. // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  23. // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  24. // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  25. // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  26. // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  27. // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  28. // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  29. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30. // Author: kenton@google.com (Kenton Varda)
  31. // Based on original Protocol Buffers design by
  32. // Sanjay Ghemawat, Jeff Dean, and others.
  33. //
  34. // This file needs to be included as .inc as it depends on the namespaces
  35. // (unittest and unittest_import) being set up properly. It is also included
  36. // within an enclosing namespace and requires header files to be included
  37. // out of this file.
  38. #include <google/protobuf/stubs/logging.h>
  39. #include <google/protobuf/stubs/common.h>
  40. #include <google/protobuf/descriptor.h>
  41. #include <google/protobuf/message.h>
  42. #include <gtest/gtest.h>
  43. namespace google {
  44. namespace protobuf {
  45. namespace TestUtil {
  46. // Set every field in the message to a unique value.
  47. inline void SetAllFields(UNITTEST::TestAllTypes* message);
  48. inline void SetOptionalFields(UNITTEST::TestAllTypes* message);
  49. inline void AddRepeatedFields1(UNITTEST::TestAllTypes* message);
  50. inline void AddRepeatedFields2(UNITTEST::TestAllTypes* message);
  51. inline void SetDefaultFields(UNITTEST::TestAllTypes* message);
  52. inline void SetOneofFields(UNITTEST::TestAllTypes* message);
  53. inline void SetAllExtensions(UNITTEST::TestAllExtensions* message);
  54. inline void SetOneofFields(UNITTEST::TestAllExtensions* message);
  55. inline void SetAllFieldsAndExtensions(UNITTEST::TestFieldOrderings* message);
  56. inline void SetPackedFields(UNITTEST::TestPackedTypes* message);
  57. inline void SetPackedExtensions(UNITTEST::TestPackedExtensions* message);
  58. inline void SetUnpackedFields(UNITTEST::TestUnpackedTypes* message);
  59. inline void SetOneof1(UNITTEST::TestOneof2* message);
  60. inline void SetOneof2(UNITTEST::TestOneof2* message);
  61. // Use the repeated versions of the set_*() accessors to modify all the
  62. // repeated fields of the message (which should already have been
  63. // initialized with Set*Fields()). Set*Fields() itself only tests
  64. // the add_*() accessors.
  65. inline void ModifyRepeatedFields(UNITTEST::TestAllTypes* message);
  66. inline void ModifyRepeatedExtensions(UNITTEST::TestAllExtensions* message);
  67. // Check that all fields have the values that they should have after
  68. // Set*Fields() is called.
  69. inline void ExpectAllFieldsSet(const UNITTEST::TestAllTypes& message);
  70. inline void ExpectAllExtensionsSet(const UNITTEST::TestAllExtensions& message);
  71. inline void ExpectPackedFieldsSet(const UNITTEST::TestPackedTypes& message);
  72. inline void ExpectPackedExtensionsSet(
  73. const UNITTEST::TestPackedExtensions& message);
  74. inline void ExpectUnpackedFieldsSet(const UNITTEST::TestUnpackedTypes& message);
  75. inline void ExpectUnpackedExtensionsSet(
  76. const UNITTEST::TestUnpackedExtensions& message);
  77. inline void ExpectOneofSet1(const UNITTEST::TestOneof2& message);
  78. inline void ExpectOneofSet2(const UNITTEST::TestOneof2& message);
  79. // Expect that the message is modified as would be expected from
  80. // Modify*Fields().
  81. inline void ExpectRepeatedFieldsModified(const UNITTEST::TestAllTypes& message);
  82. inline void ExpectRepeatedExtensionsModified(
  83. const UNITTEST::TestAllExtensions& message);
  84. // Check that all fields have their default values.
  85. inline void ExpectClear(const UNITTEST::TestAllTypes& message);
  86. inline void ExpectExtensionsClear(const UNITTEST::TestAllExtensions& message);
  87. inline void ExpectOneofClear(const UNITTEST::TestOneof2& message);
  88. // Check that all repeated fields have had their last elements removed.
  89. inline void ExpectLastRepeatedsRemoved(const UNITTEST::TestAllTypes& message);
  90. inline void ExpectLastRepeatedExtensionsRemoved(
  91. const UNITTEST::TestAllExtensions& message);
  92. inline void ExpectLastRepeatedsReleased(const UNITTEST::TestAllTypes& message);
  93. inline void ExpectLastRepeatedExtensionsReleased(
  94. const UNITTEST::TestAllExtensions& message);
  95. // Check that all repeated fields have had their first and last elements
  96. // swapped.
  97. inline void ExpectRepeatedsSwapped(const UNITTEST::TestAllTypes& message);
  98. inline void ExpectRepeatedExtensionsSwapped(
  99. const UNITTEST::TestAllExtensions& message);
  100. inline void ExpectAtMostOneFieldSetInOneof(const UNITTEST::TestOneof2& message);
  101. } // namespace TestUtil
  102. inline void TestUtil::SetAllFields(UNITTEST::TestAllTypes* message) {
  103. SetOptionalFields(message);
  104. AddRepeatedFields1(message);
  105. AddRepeatedFields2(message);
  106. SetDefaultFields(message);
  107. SetOneofFields(message);
  108. }
  109. inline void TestUtil::SetOptionalFields(UNITTEST::TestAllTypes* message) {
  110. message->set_optional_int32(101);
  111. message->set_optional_int64(102);
  112. message->set_optional_uint32(103);
  113. message->set_optional_uint64(104);
  114. message->set_optional_sint32(105);
  115. message->set_optional_sint64(106);
  116. message->set_optional_fixed32(107);
  117. message->set_optional_fixed64(108);
  118. message->set_optional_sfixed32(109);
  119. message->set_optional_sfixed64(110);
  120. message->set_optional_float(111);
  121. message->set_optional_double(112);
  122. message->set_optional_bool(true);
  123. message->set_optional_string("115");
  124. message->set_optional_bytes("116");
  125. message->mutable_optionalgroup()->set_a(117);
  126. message->mutable_optional_nested_message()->set_bb(118);
  127. message->mutable_optional_foreign_message()->set_c(119);
  128. message->mutable_optional_import_message()->set_d(120);
  129. message->mutable_optional_public_import_message()->set_e(126);
  130. message->mutable_optional_lazy_message()->set_bb(127);
  131. message->set_optional_nested_enum(UNITTEST::TestAllTypes::BAZ);
  132. message->set_optional_foreign_enum(UNITTEST::FOREIGN_BAZ);
  133. message->set_optional_import_enum(UNITTEST_IMPORT::IMPORT_BAZ);
  134. // StringPiece and Cord fields are only accessible via reflection in the
  135. // open source release; see comments in compiler/cpp/string_field.cc.
  136. #ifndef PROTOBUF_TEST_NO_DESCRIPTORS
  137. message->GetReflection()->SetString(
  138. message,
  139. message->GetDescriptor()->FindFieldByName("optional_string_piece"),
  140. "124");
  141. message->GetReflection()->SetString(
  142. message, message->GetDescriptor()->FindFieldByName("optional_cord"),
  143. "125");
  144. #endif // !PROTOBUF_TEST_NO_DESCRIPTORS
  145. }
  146. // -------------------------------------------------------------------
  147. inline void TestUtil::AddRepeatedFields1(UNITTEST::TestAllTypes* message) {
  148. message->add_repeated_int32(201);
  149. message->add_repeated_int64(202);
  150. message->add_repeated_uint32(203);
  151. message->add_repeated_uint64(204);
  152. message->add_repeated_sint32(205);
  153. message->add_repeated_sint64(206);
  154. message->add_repeated_fixed32(207);
  155. message->add_repeated_fixed64(208);
  156. message->add_repeated_sfixed32(209);
  157. message->add_repeated_sfixed64(210);
  158. message->add_repeated_float(211);
  159. message->add_repeated_double(212);
  160. message->add_repeated_bool(true);
  161. message->add_repeated_string("215");
  162. message->add_repeated_bytes("216");
  163. message->add_repeatedgroup()->set_a(217);
  164. message->add_repeated_nested_message()->set_bb(218);
  165. message->add_repeated_foreign_message()->set_c(219);
  166. message->add_repeated_import_message()->set_d(220);
  167. message->add_repeated_lazy_message()->set_bb(227);
  168. message->add_repeated_nested_enum(UNITTEST::TestAllTypes::BAR);
  169. message->add_repeated_foreign_enum(UNITTEST::FOREIGN_BAR);
  170. message->add_repeated_import_enum(UNITTEST_IMPORT::IMPORT_BAR);
  171. #ifndef PROTOBUF_TEST_NO_DESCRIPTORS
  172. message->GetReflection()->AddString(
  173. message,
  174. message->GetDescriptor()->FindFieldByName("repeated_string_piece"),
  175. "224");
  176. message->GetReflection()->AddString(
  177. message, message->GetDescriptor()->FindFieldByName("repeated_cord"),
  178. "225");
  179. #endif // !PROTOBUF_TEST_NO_DESCRIPTORS
  180. }
  181. inline void TestUtil::AddRepeatedFields2(UNITTEST::TestAllTypes* message) {
  182. // Add a second one of each field.
  183. message->add_repeated_int32(301);
  184. message->add_repeated_int64(302);
  185. message->add_repeated_uint32(303);
  186. message->add_repeated_uint64(304);
  187. message->add_repeated_sint32(305);
  188. message->add_repeated_sint64(306);
  189. message->add_repeated_fixed32(307);
  190. message->add_repeated_fixed64(308);
  191. message->add_repeated_sfixed32(309);
  192. message->add_repeated_sfixed64(310);
  193. message->add_repeated_float(311);
  194. message->add_repeated_double(312);
  195. message->add_repeated_bool(false);
  196. message->add_repeated_string("315");
  197. message->add_repeated_bytes("316");
  198. message->add_repeatedgroup()->set_a(317);
  199. message->add_repeated_nested_message()->set_bb(318);
  200. message->add_repeated_foreign_message()->set_c(319);
  201. message->add_repeated_import_message()->set_d(320);
  202. message->add_repeated_lazy_message()->set_bb(327);
  203. message->add_repeated_nested_enum(UNITTEST::TestAllTypes::BAZ);
  204. message->add_repeated_foreign_enum(UNITTEST::FOREIGN_BAZ);
  205. message->add_repeated_import_enum(UNITTEST_IMPORT::IMPORT_BAZ);
  206. #ifndef PROTOBUF_TEST_NO_DESCRIPTORS
  207. message->GetReflection()->AddString(
  208. message,
  209. message->GetDescriptor()->FindFieldByName("repeated_string_piece"),
  210. "324");
  211. message->GetReflection()->AddString(
  212. message, message->GetDescriptor()->FindFieldByName("repeated_cord"),
  213. "325");
  214. #endif // !PROTOBUF_TEST_NO_DESCRIPTORS
  215. }
  216. // -------------------------------------------------------------------
  217. inline void TestUtil::SetDefaultFields(UNITTEST::TestAllTypes* message) {
  218. message->set_default_int32(401);
  219. message->set_default_int64(402);
  220. message->set_default_uint32(403);
  221. message->set_default_uint64(404);
  222. message->set_default_sint32(405);
  223. message->set_default_sint64(406);
  224. message->set_default_fixed32(407);
  225. message->set_default_fixed64(408);
  226. message->set_default_sfixed32(409);
  227. message->set_default_sfixed64(410);
  228. message->set_default_float(411);
  229. message->set_default_double(412);
  230. message->set_default_bool(false);
  231. message->set_default_string("415");
  232. message->set_default_bytes("416");
  233. message->set_default_nested_enum(UNITTEST::TestAllTypes::FOO);
  234. message->set_default_foreign_enum(UNITTEST::FOREIGN_FOO);
  235. message->set_default_import_enum(UNITTEST_IMPORT::IMPORT_FOO);
  236. #ifndef PROTOBUF_TEST_NO_DESCRIPTORS
  237. message->GetReflection()->SetString(
  238. message,
  239. message->GetDescriptor()->FindFieldByName("default_string_piece"), "424");
  240. message->GetReflection()->SetString(
  241. message, message->GetDescriptor()->FindFieldByName("default_cord"),
  242. "425");
  243. #endif // !PROTOBUF_TEST_NO_DESCRIPTORS
  244. }
  245. // -------------------------------------------------------------------
  246. inline void TestUtil::ModifyRepeatedFields(UNITTEST::TestAllTypes* message) {
  247. message->set_repeated_int32(1, 501);
  248. message->set_repeated_int64(1, 502);
  249. message->set_repeated_uint32(1, 503);
  250. message->set_repeated_uint64(1, 504);
  251. message->set_repeated_sint32(1, 505);
  252. message->set_repeated_sint64(1, 506);
  253. message->set_repeated_fixed32(1, 507);
  254. message->set_repeated_fixed64(1, 508);
  255. message->set_repeated_sfixed32(1, 509);
  256. message->set_repeated_sfixed64(1, 510);
  257. message->set_repeated_float(1, 511);
  258. message->set_repeated_double(1, 512);
  259. message->set_repeated_bool(1, true);
  260. message->set_repeated_string(1, "515");
  261. message->set_repeated_bytes(1, "516");
  262. message->mutable_repeatedgroup(1)->set_a(517);
  263. message->mutable_repeated_nested_message(1)->set_bb(518);
  264. message->mutable_repeated_foreign_message(1)->set_c(519);
  265. message->mutable_repeated_import_message(1)->set_d(520);
  266. message->mutable_repeated_lazy_message(1)->set_bb(527);
  267. message->set_repeated_nested_enum(1, UNITTEST::TestAllTypes::FOO);
  268. message->set_repeated_foreign_enum(1, UNITTEST::FOREIGN_FOO);
  269. message->set_repeated_import_enum(1, UNITTEST_IMPORT::IMPORT_FOO);
  270. #ifndef PROTOBUF_TEST_NO_DESCRIPTORS
  271. message->GetReflection()->SetRepeatedString(
  272. message,
  273. message->GetDescriptor()->FindFieldByName("repeated_string_piece"), 1,
  274. "524");
  275. message->GetReflection()->SetRepeatedString(
  276. message, message->GetDescriptor()->FindFieldByName("repeated_cord"), 1,
  277. "525");
  278. #endif // !PROTOBUF_TEST_NO_DESCRIPTORS
  279. }
  280. // ------------------------------------------------------------------
  281. inline void TestUtil::SetOneofFields(UNITTEST::TestAllTypes* message) {
  282. message->set_oneof_uint32(601);
  283. message->mutable_oneof_nested_message()->set_bb(602);
  284. message->set_oneof_string("603");
  285. message->set_oneof_bytes("604");
  286. }
  287. // -------------------------------------------------------------------
  288. inline void TestUtil::ExpectAllFieldsSet(
  289. const UNITTEST::TestAllTypes& message) {
  290. EXPECT_TRUE(message.has_optional_int32());
  291. EXPECT_TRUE(message.has_optional_int64());
  292. EXPECT_TRUE(message.has_optional_uint32());
  293. EXPECT_TRUE(message.has_optional_uint64());
  294. EXPECT_TRUE(message.has_optional_sint32());
  295. EXPECT_TRUE(message.has_optional_sint64());
  296. EXPECT_TRUE(message.has_optional_fixed32());
  297. EXPECT_TRUE(message.has_optional_fixed64());
  298. EXPECT_TRUE(message.has_optional_sfixed32());
  299. EXPECT_TRUE(message.has_optional_sfixed64());
  300. EXPECT_TRUE(message.has_optional_float());
  301. EXPECT_TRUE(message.has_optional_double());
  302. EXPECT_TRUE(message.has_optional_bool());
  303. EXPECT_TRUE(message.has_optional_string());
  304. EXPECT_TRUE(message.has_optional_bytes());
  305. EXPECT_TRUE(message.has_optionalgroup());
  306. EXPECT_TRUE(message.has_optional_nested_message());
  307. EXPECT_TRUE(message.has_optional_foreign_message());
  308. EXPECT_TRUE(message.has_optional_import_message());
  309. EXPECT_TRUE(message.has_optional_public_import_message());
  310. EXPECT_TRUE(message.has_optional_lazy_message());
  311. EXPECT_TRUE(message.optionalgroup().has_a());
  312. EXPECT_TRUE(message.optional_nested_message().has_bb());
  313. EXPECT_TRUE(message.optional_foreign_message().has_c());
  314. EXPECT_TRUE(message.optional_import_message().has_d());
  315. EXPECT_TRUE(message.optional_public_import_message().has_e());
  316. EXPECT_TRUE(message.optional_lazy_message().has_bb());
  317. EXPECT_TRUE(message.has_optional_nested_enum());
  318. EXPECT_TRUE(message.has_optional_foreign_enum());
  319. EXPECT_TRUE(message.has_optional_import_enum());
  320. #ifndef PROTOBUF_TEST_NO_DESCRIPTORS
  321. EXPECT_TRUE(message.has_optional_string_piece());
  322. EXPECT_TRUE(message.has_optional_cord());
  323. #endif
  324. EXPECT_EQ(101, message.optional_int32());
  325. EXPECT_EQ(102, message.optional_int64());
  326. EXPECT_EQ(103, message.optional_uint32());
  327. EXPECT_EQ(104, message.optional_uint64());
  328. EXPECT_EQ(105, message.optional_sint32());
  329. EXPECT_EQ(106, message.optional_sint64());
  330. EXPECT_EQ(107, message.optional_fixed32());
  331. EXPECT_EQ(108, message.optional_fixed64());
  332. EXPECT_EQ(109, message.optional_sfixed32());
  333. EXPECT_EQ(110, message.optional_sfixed64());
  334. EXPECT_EQ(111, message.optional_float());
  335. EXPECT_EQ(112, message.optional_double());
  336. EXPECT_TRUE(message.optional_bool());
  337. EXPECT_EQ("115", message.optional_string());
  338. EXPECT_EQ("116", message.optional_bytes());
  339. EXPECT_EQ(117, message.optionalgroup().a());
  340. EXPECT_EQ(118, message.optional_nested_message().bb());
  341. EXPECT_EQ(119, message.optional_foreign_message().c());
  342. EXPECT_EQ(120, message.optional_import_message().d());
  343. EXPECT_EQ(126, message.optional_public_import_message().e());
  344. EXPECT_EQ(127, message.optional_lazy_message().bb());
  345. EXPECT_EQ(UNITTEST::TestAllTypes::BAZ, message.optional_nested_enum());
  346. EXPECT_EQ(UNITTEST::FOREIGN_BAZ, message.optional_foreign_enum());
  347. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAZ, message.optional_import_enum());
  348. // -----------------------------------------------------------------
  349. ASSERT_EQ(2, message.repeated_int32_size());
  350. ASSERT_EQ(2, message.repeated_int64_size());
  351. ASSERT_EQ(2, message.repeated_uint32_size());
  352. ASSERT_EQ(2, message.repeated_uint64_size());
  353. ASSERT_EQ(2, message.repeated_sint32_size());
  354. ASSERT_EQ(2, message.repeated_sint64_size());
  355. ASSERT_EQ(2, message.repeated_fixed32_size());
  356. ASSERT_EQ(2, message.repeated_fixed64_size());
  357. ASSERT_EQ(2, message.repeated_sfixed32_size());
  358. ASSERT_EQ(2, message.repeated_sfixed64_size());
  359. ASSERT_EQ(2, message.repeated_float_size());
  360. ASSERT_EQ(2, message.repeated_double_size());
  361. ASSERT_EQ(2, message.repeated_bool_size());
  362. ASSERT_EQ(2, message.repeated_string_size());
  363. ASSERT_EQ(2, message.repeated_bytes_size());
  364. ASSERT_EQ(2, message.repeatedgroup_size());
  365. ASSERT_EQ(2, message.repeated_nested_message_size());
  366. ASSERT_EQ(2, message.repeated_foreign_message_size());
  367. ASSERT_EQ(2, message.repeated_import_message_size());
  368. ASSERT_EQ(2, message.repeated_lazy_message_size());
  369. ASSERT_EQ(2, message.repeated_nested_enum_size());
  370. ASSERT_EQ(2, message.repeated_foreign_enum_size());
  371. ASSERT_EQ(2, message.repeated_import_enum_size());
  372. #ifndef PROTOBUF_TEST_NO_DESCRIPTORS
  373. ASSERT_EQ(2, message.repeated_string_piece_size());
  374. ASSERT_EQ(2, message.repeated_cord_size());
  375. #endif
  376. EXPECT_EQ(201, message.repeated_int32(0));
  377. EXPECT_EQ(202, message.repeated_int64(0));
  378. EXPECT_EQ(203, message.repeated_uint32(0));
  379. EXPECT_EQ(204, message.repeated_uint64(0));
  380. EXPECT_EQ(205, message.repeated_sint32(0));
  381. EXPECT_EQ(206, message.repeated_sint64(0));
  382. EXPECT_EQ(207, message.repeated_fixed32(0));
  383. EXPECT_EQ(208, message.repeated_fixed64(0));
  384. EXPECT_EQ(209, message.repeated_sfixed32(0));
  385. EXPECT_EQ(210, message.repeated_sfixed64(0));
  386. EXPECT_EQ(211, message.repeated_float(0));
  387. EXPECT_EQ(212, message.repeated_double(0));
  388. EXPECT_TRUE(message.repeated_bool(0));
  389. EXPECT_EQ("215", message.repeated_string(0));
  390. EXPECT_EQ("216", message.repeated_bytes(0));
  391. EXPECT_EQ(217, message.repeatedgroup(0).a());
  392. EXPECT_EQ(218, message.repeated_nested_message(0).bb());
  393. EXPECT_EQ(219, message.repeated_foreign_message(0).c());
  394. EXPECT_EQ(220, message.repeated_import_message(0).d());
  395. EXPECT_EQ(227, message.repeated_lazy_message(0).bb());
  396. EXPECT_EQ(UNITTEST::TestAllTypes::BAR, message.repeated_nested_enum(0));
  397. EXPECT_EQ(UNITTEST::FOREIGN_BAR, message.repeated_foreign_enum(0));
  398. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAR, message.repeated_import_enum(0));
  399. EXPECT_EQ(301, message.repeated_int32(1));
  400. EXPECT_EQ(302, message.repeated_int64(1));
  401. EXPECT_EQ(303, message.repeated_uint32(1));
  402. EXPECT_EQ(304, message.repeated_uint64(1));
  403. EXPECT_EQ(305, message.repeated_sint32(1));
  404. EXPECT_EQ(306, message.repeated_sint64(1));
  405. EXPECT_EQ(307, message.repeated_fixed32(1));
  406. EXPECT_EQ(308, message.repeated_fixed64(1));
  407. EXPECT_EQ(309, message.repeated_sfixed32(1));
  408. EXPECT_EQ(310, message.repeated_sfixed64(1));
  409. EXPECT_EQ(311, message.repeated_float(1));
  410. EXPECT_EQ(312, message.repeated_double(1));
  411. EXPECT_FALSE(message.repeated_bool(1));
  412. EXPECT_EQ("315", message.repeated_string(1));
  413. EXPECT_EQ("316", message.repeated_bytes(1));
  414. EXPECT_EQ(317, message.repeatedgroup(1).a());
  415. EXPECT_EQ(318, message.repeated_nested_message(1).bb());
  416. EXPECT_EQ(319, message.repeated_foreign_message(1).c());
  417. EXPECT_EQ(320, message.repeated_import_message(1).d());
  418. EXPECT_EQ(327, message.repeated_lazy_message(1).bb());
  419. EXPECT_EQ(UNITTEST::TestAllTypes::BAZ, message.repeated_nested_enum(1));
  420. EXPECT_EQ(UNITTEST::FOREIGN_BAZ, message.repeated_foreign_enum(1));
  421. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAZ, message.repeated_import_enum(1));
  422. // -----------------------------------------------------------------
  423. EXPECT_TRUE(message.has_default_int32());
  424. EXPECT_TRUE(message.has_default_int64());
  425. EXPECT_TRUE(message.has_default_uint32());
  426. EXPECT_TRUE(message.has_default_uint64());
  427. EXPECT_TRUE(message.has_default_sint32());
  428. EXPECT_TRUE(message.has_default_sint64());
  429. EXPECT_TRUE(message.has_default_fixed32());
  430. EXPECT_TRUE(message.has_default_fixed64());
  431. EXPECT_TRUE(message.has_default_sfixed32());
  432. EXPECT_TRUE(message.has_default_sfixed64());
  433. EXPECT_TRUE(message.has_default_float());
  434. EXPECT_TRUE(message.has_default_double());
  435. EXPECT_TRUE(message.has_default_bool());
  436. EXPECT_TRUE(message.has_default_string());
  437. EXPECT_TRUE(message.has_default_bytes());
  438. EXPECT_TRUE(message.has_default_nested_enum());
  439. EXPECT_TRUE(message.has_default_foreign_enum());
  440. EXPECT_TRUE(message.has_default_import_enum());
  441. EXPECT_EQ(401, message.default_int32());
  442. EXPECT_EQ(402, message.default_int64());
  443. EXPECT_EQ(403, message.default_uint32());
  444. EXPECT_EQ(404, message.default_uint64());
  445. EXPECT_EQ(405, message.default_sint32());
  446. EXPECT_EQ(406, message.default_sint64());
  447. EXPECT_EQ(407, message.default_fixed32());
  448. EXPECT_EQ(408, message.default_fixed64());
  449. EXPECT_EQ(409, message.default_sfixed32());
  450. EXPECT_EQ(410, message.default_sfixed64());
  451. EXPECT_EQ(411, message.default_float());
  452. EXPECT_EQ(412, message.default_double());
  453. EXPECT_FALSE(message.default_bool());
  454. EXPECT_EQ("415", message.default_string());
  455. EXPECT_EQ("416", message.default_bytes());
  456. EXPECT_EQ(UNITTEST::TestAllTypes::FOO, message.default_nested_enum());
  457. EXPECT_EQ(UNITTEST::FOREIGN_FOO, message.default_foreign_enum());
  458. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_FOO, message.default_import_enum());
  459. EXPECT_FALSE(message.has_oneof_uint32());
  460. EXPECT_FALSE(message.has_oneof_nested_message());
  461. EXPECT_FALSE(message.has_oneof_string());
  462. EXPECT_TRUE(message.has_oneof_bytes());
  463. EXPECT_EQ("604", message.oneof_bytes());
  464. }
  465. // -------------------------------------------------------------------
  466. inline void TestUtil::ExpectClear(const UNITTEST::TestAllTypes& message) {
  467. // has_blah() should initially be false for all optional fields.
  468. EXPECT_FALSE(message.has_optional_int32());
  469. EXPECT_FALSE(message.has_optional_int64());
  470. EXPECT_FALSE(message.has_optional_uint32());
  471. EXPECT_FALSE(message.has_optional_uint64());
  472. EXPECT_FALSE(message.has_optional_sint32());
  473. EXPECT_FALSE(message.has_optional_sint64());
  474. EXPECT_FALSE(message.has_optional_fixed32());
  475. EXPECT_FALSE(message.has_optional_fixed64());
  476. EXPECT_FALSE(message.has_optional_sfixed32());
  477. EXPECT_FALSE(message.has_optional_sfixed64());
  478. EXPECT_FALSE(message.has_optional_float());
  479. EXPECT_FALSE(message.has_optional_double());
  480. EXPECT_FALSE(message.has_optional_bool());
  481. EXPECT_FALSE(message.has_optional_string());
  482. EXPECT_FALSE(message.has_optional_bytes());
  483. EXPECT_FALSE(message.has_optionalgroup());
  484. EXPECT_FALSE(message.has_optional_nested_message());
  485. EXPECT_FALSE(message.has_optional_foreign_message());
  486. EXPECT_FALSE(message.has_optional_import_message());
  487. EXPECT_FALSE(message.has_optional_public_import_message());
  488. EXPECT_FALSE(message.has_optional_lazy_message());
  489. EXPECT_FALSE(message.has_optional_nested_enum());
  490. EXPECT_FALSE(message.has_optional_foreign_enum());
  491. EXPECT_FALSE(message.has_optional_import_enum());
  492. EXPECT_FALSE(message.has_optional_string_piece());
  493. EXPECT_FALSE(message.has_optional_cord());
  494. // Optional fields without defaults are set to zero or something like it.
  495. EXPECT_EQ(0, message.optional_int32());
  496. EXPECT_EQ(0, message.optional_int64());
  497. EXPECT_EQ(0, message.optional_uint32());
  498. EXPECT_EQ(0, message.optional_uint64());
  499. EXPECT_EQ(0, message.optional_sint32());
  500. EXPECT_EQ(0, message.optional_sint64());
  501. EXPECT_EQ(0, message.optional_fixed32());
  502. EXPECT_EQ(0, message.optional_fixed64());
  503. EXPECT_EQ(0, message.optional_sfixed32());
  504. EXPECT_EQ(0, message.optional_sfixed64());
  505. EXPECT_EQ(0, message.optional_float());
  506. EXPECT_EQ(0, message.optional_double());
  507. EXPECT_FALSE(message.optional_bool());
  508. EXPECT_EQ("", message.optional_string());
  509. EXPECT_EQ("", message.optional_bytes());
  510. // Embedded messages should also be clear.
  511. EXPECT_FALSE(message.optionalgroup().has_a());
  512. EXPECT_FALSE(message.optional_nested_message().has_bb());
  513. EXPECT_FALSE(message.optional_foreign_message().has_c());
  514. EXPECT_FALSE(message.optional_import_message().has_d());
  515. EXPECT_FALSE(message.optional_public_import_message().has_e());
  516. EXPECT_FALSE(message.optional_lazy_message().has_bb());
  517. EXPECT_EQ(0, message.optionalgroup().a());
  518. EXPECT_EQ(0, message.optional_nested_message().bb());
  519. EXPECT_EQ(0, message.optional_foreign_message().c());
  520. EXPECT_EQ(0, message.optional_import_message().d());
  521. EXPECT_EQ(0, message.optional_public_import_message().e());
  522. EXPECT_EQ(0, message.optional_lazy_message().bb());
  523. // Enums without defaults are set to the first value in the enum.
  524. EXPECT_EQ(UNITTEST::TestAllTypes::FOO, message.optional_nested_enum());
  525. EXPECT_EQ(UNITTEST::FOREIGN_FOO, message.optional_foreign_enum());
  526. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_FOO, message.optional_import_enum());
  527. // Repeated fields are empty.
  528. EXPECT_EQ(0, message.repeated_int32_size());
  529. EXPECT_EQ(0, message.repeated_int64_size());
  530. EXPECT_EQ(0, message.repeated_uint32_size());
  531. EXPECT_EQ(0, message.repeated_uint64_size());
  532. EXPECT_EQ(0, message.repeated_sint32_size());
  533. EXPECT_EQ(0, message.repeated_sint64_size());
  534. EXPECT_EQ(0, message.repeated_fixed32_size());
  535. EXPECT_EQ(0, message.repeated_fixed64_size());
  536. EXPECT_EQ(0, message.repeated_sfixed32_size());
  537. EXPECT_EQ(0, message.repeated_sfixed64_size());
  538. EXPECT_EQ(0, message.repeated_float_size());
  539. EXPECT_EQ(0, message.repeated_double_size());
  540. EXPECT_EQ(0, message.repeated_bool_size());
  541. EXPECT_EQ(0, message.repeated_string_size());
  542. EXPECT_EQ(0, message.repeated_bytes_size());
  543. EXPECT_EQ(0, message.repeatedgroup_size());
  544. EXPECT_EQ(0, message.repeated_nested_message_size());
  545. EXPECT_EQ(0, message.repeated_foreign_message_size());
  546. EXPECT_EQ(0, message.repeated_import_message_size());
  547. EXPECT_EQ(0, message.repeated_lazy_message_size());
  548. EXPECT_EQ(0, message.repeated_nested_enum_size());
  549. EXPECT_EQ(0, message.repeated_foreign_enum_size());
  550. EXPECT_EQ(0, message.repeated_import_enum_size());
  551. EXPECT_EQ(0, message.repeated_string_piece_size());
  552. EXPECT_EQ(0, message.repeated_cord_size());
  553. // has_blah() should also be false for all default fields.
  554. EXPECT_FALSE(message.has_default_int32());
  555. EXPECT_FALSE(message.has_default_int64());
  556. EXPECT_FALSE(message.has_default_uint32());
  557. EXPECT_FALSE(message.has_default_uint64());
  558. EXPECT_FALSE(message.has_default_sint32());
  559. EXPECT_FALSE(message.has_default_sint64());
  560. EXPECT_FALSE(message.has_default_fixed32());
  561. EXPECT_FALSE(message.has_default_fixed64());
  562. EXPECT_FALSE(message.has_default_sfixed32());
  563. EXPECT_FALSE(message.has_default_sfixed64());
  564. EXPECT_FALSE(message.has_default_float());
  565. EXPECT_FALSE(message.has_default_double());
  566. EXPECT_FALSE(message.has_default_bool());
  567. EXPECT_FALSE(message.has_default_string());
  568. EXPECT_FALSE(message.has_default_bytes());
  569. EXPECT_FALSE(message.has_default_nested_enum());
  570. EXPECT_FALSE(message.has_default_foreign_enum());
  571. EXPECT_FALSE(message.has_default_import_enum());
  572. // Fields with defaults have their default values (duh).
  573. EXPECT_EQ(41, message.default_int32());
  574. EXPECT_EQ(42, message.default_int64());
  575. EXPECT_EQ(43, message.default_uint32());
  576. EXPECT_EQ(44, message.default_uint64());
  577. EXPECT_EQ(-45, message.default_sint32());
  578. EXPECT_EQ(46, message.default_sint64());
  579. EXPECT_EQ(47, message.default_fixed32());
  580. EXPECT_EQ(48, message.default_fixed64());
  581. EXPECT_EQ(49, message.default_sfixed32());
  582. EXPECT_EQ(-50, message.default_sfixed64());
  583. EXPECT_EQ(51.5, message.default_float());
  584. EXPECT_EQ(52e3, message.default_double());
  585. EXPECT_TRUE(message.default_bool());
  586. EXPECT_EQ("hello", message.default_string());
  587. EXPECT_EQ("world", message.default_bytes());
  588. EXPECT_EQ(UNITTEST::TestAllTypes::BAR, message.default_nested_enum());
  589. EXPECT_EQ(UNITTEST::FOREIGN_BAR, message.default_foreign_enum());
  590. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAR, message.default_import_enum());
  591. EXPECT_FALSE(message.has_oneof_uint32());
  592. EXPECT_FALSE(message.has_oneof_nested_message());
  593. EXPECT_FALSE(message.has_oneof_string());
  594. EXPECT_FALSE(message.has_oneof_bytes());
  595. }
  596. // -------------------------------------------------------------------
  597. inline void TestUtil::ExpectRepeatedFieldsModified(
  598. const UNITTEST::TestAllTypes& message) {
  599. // ModifyRepeatedFields only sets the second repeated element of each
  600. // field. In addition to verifying this, we also verify that the first
  601. // element and size were *not* modified.
  602. ASSERT_EQ(2, message.repeated_int32_size());
  603. ASSERT_EQ(2, message.repeated_int64_size());
  604. ASSERT_EQ(2, message.repeated_uint32_size());
  605. ASSERT_EQ(2, message.repeated_uint64_size());
  606. ASSERT_EQ(2, message.repeated_sint32_size());
  607. ASSERT_EQ(2, message.repeated_sint64_size());
  608. ASSERT_EQ(2, message.repeated_fixed32_size());
  609. ASSERT_EQ(2, message.repeated_fixed64_size());
  610. ASSERT_EQ(2, message.repeated_sfixed32_size());
  611. ASSERT_EQ(2, message.repeated_sfixed64_size());
  612. ASSERT_EQ(2, message.repeated_float_size());
  613. ASSERT_EQ(2, message.repeated_double_size());
  614. ASSERT_EQ(2, message.repeated_bool_size());
  615. ASSERT_EQ(2, message.repeated_string_size());
  616. ASSERT_EQ(2, message.repeated_bytes_size());
  617. ASSERT_EQ(2, message.repeatedgroup_size());
  618. ASSERT_EQ(2, message.repeated_nested_message_size());
  619. ASSERT_EQ(2, message.repeated_foreign_message_size());
  620. ASSERT_EQ(2, message.repeated_import_message_size());
  621. ASSERT_EQ(2, message.repeated_lazy_message_size());
  622. ASSERT_EQ(2, message.repeated_nested_enum_size());
  623. ASSERT_EQ(2, message.repeated_foreign_enum_size());
  624. ASSERT_EQ(2, message.repeated_import_enum_size());
  625. #ifndef PROTOBUF_TEST_NO_DESCRIPTORS
  626. ASSERT_EQ(2, message.repeated_string_piece_size());
  627. ASSERT_EQ(2, message.repeated_cord_size());
  628. #endif
  629. EXPECT_EQ(201, message.repeated_int32(0));
  630. EXPECT_EQ(202, message.repeated_int64(0));
  631. EXPECT_EQ(203, message.repeated_uint32(0));
  632. EXPECT_EQ(204, message.repeated_uint64(0));
  633. EXPECT_EQ(205, message.repeated_sint32(0));
  634. EXPECT_EQ(206, message.repeated_sint64(0));
  635. EXPECT_EQ(207, message.repeated_fixed32(0));
  636. EXPECT_EQ(208, message.repeated_fixed64(0));
  637. EXPECT_EQ(209, message.repeated_sfixed32(0));
  638. EXPECT_EQ(210, message.repeated_sfixed64(0));
  639. EXPECT_EQ(211, message.repeated_float(0));
  640. EXPECT_EQ(212, message.repeated_double(0));
  641. EXPECT_TRUE(message.repeated_bool(0));
  642. EXPECT_EQ("215", message.repeated_string(0));
  643. EXPECT_EQ("216", message.repeated_bytes(0));
  644. EXPECT_EQ(217, message.repeatedgroup(0).a());
  645. EXPECT_EQ(218, message.repeated_nested_message(0).bb());
  646. EXPECT_EQ(219, message.repeated_foreign_message(0).c());
  647. EXPECT_EQ(220, message.repeated_import_message(0).d());
  648. EXPECT_EQ(227, message.repeated_lazy_message(0).bb());
  649. EXPECT_EQ(UNITTEST::TestAllTypes::BAR, message.repeated_nested_enum(0));
  650. EXPECT_EQ(UNITTEST::FOREIGN_BAR, message.repeated_foreign_enum(0));
  651. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAR, message.repeated_import_enum(0));
  652. // Actually verify the second (modified) elements now.
  653. EXPECT_EQ(501, message.repeated_int32(1));
  654. EXPECT_EQ(502, message.repeated_int64(1));
  655. EXPECT_EQ(503, message.repeated_uint32(1));
  656. EXPECT_EQ(504, message.repeated_uint64(1));
  657. EXPECT_EQ(505, message.repeated_sint32(1));
  658. EXPECT_EQ(506, message.repeated_sint64(1));
  659. EXPECT_EQ(507, message.repeated_fixed32(1));
  660. EXPECT_EQ(508, message.repeated_fixed64(1));
  661. EXPECT_EQ(509, message.repeated_sfixed32(1));
  662. EXPECT_EQ(510, message.repeated_sfixed64(1));
  663. EXPECT_EQ(511, message.repeated_float(1));
  664. EXPECT_EQ(512, message.repeated_double(1));
  665. EXPECT_TRUE(message.repeated_bool(1));
  666. EXPECT_EQ("515", message.repeated_string(1));
  667. EXPECT_EQ("516", message.repeated_bytes(1));
  668. EXPECT_EQ(517, message.repeatedgroup(1).a());
  669. EXPECT_EQ(518, message.repeated_nested_message(1).bb());
  670. EXPECT_EQ(519, message.repeated_foreign_message(1).c());
  671. EXPECT_EQ(520, message.repeated_import_message(1).d());
  672. EXPECT_EQ(527, message.repeated_lazy_message(1).bb());
  673. EXPECT_EQ(UNITTEST::TestAllTypes::FOO, message.repeated_nested_enum(1));
  674. EXPECT_EQ(UNITTEST::FOREIGN_FOO, message.repeated_foreign_enum(1));
  675. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_FOO, message.repeated_import_enum(1));
  676. }
  677. // -------------------------------------------------------------------
  678. inline void TestUtil::SetPackedFields(UNITTEST::TestPackedTypes* message) {
  679. message->add_packed_int32(601);
  680. message->add_packed_int64(602);
  681. message->add_packed_uint32(603);
  682. message->add_packed_uint64(604);
  683. message->add_packed_sint32(605);
  684. message->add_packed_sint64(606);
  685. message->add_packed_fixed32(607);
  686. message->add_packed_fixed64(608);
  687. message->add_packed_sfixed32(609);
  688. message->add_packed_sfixed64(610);
  689. message->add_packed_float(611);
  690. message->add_packed_double(612);
  691. message->add_packed_bool(true);
  692. message->add_packed_enum(UNITTEST::FOREIGN_BAR);
  693. // add a second one of each field
  694. message->add_packed_int32(701);
  695. message->add_packed_int64(702);
  696. message->add_packed_uint32(703);
  697. message->add_packed_uint64(704);
  698. message->add_packed_sint32(705);
  699. message->add_packed_sint64(706);
  700. message->add_packed_fixed32(707);
  701. message->add_packed_fixed64(708);
  702. message->add_packed_sfixed32(709);
  703. message->add_packed_sfixed64(710);
  704. message->add_packed_float(711);
  705. message->add_packed_double(712);
  706. message->add_packed_bool(false);
  707. message->add_packed_enum(UNITTEST::FOREIGN_BAZ);
  708. }
  709. inline void TestUtil::SetUnpackedFields(UNITTEST::TestUnpackedTypes* message) {
  710. // The values applied here must match those of SetPackedFields.
  711. message->add_unpacked_int32(601);
  712. message->add_unpacked_int64(602);
  713. message->add_unpacked_uint32(603);
  714. message->add_unpacked_uint64(604);
  715. message->add_unpacked_sint32(605);
  716. message->add_unpacked_sint64(606);
  717. message->add_unpacked_fixed32(607);
  718. message->add_unpacked_fixed64(608);
  719. message->add_unpacked_sfixed32(609);
  720. message->add_unpacked_sfixed64(610);
  721. message->add_unpacked_float(611);
  722. message->add_unpacked_double(612);
  723. message->add_unpacked_bool(true);
  724. message->add_unpacked_enum(UNITTEST::FOREIGN_BAR);
  725. // add a second one of each field
  726. message->add_unpacked_int32(701);
  727. message->add_unpacked_int64(702);
  728. message->add_unpacked_uint32(703);
  729. message->add_unpacked_uint64(704);
  730. message->add_unpacked_sint32(705);
  731. message->add_unpacked_sint64(706);
  732. message->add_unpacked_fixed32(707);
  733. message->add_unpacked_fixed64(708);
  734. message->add_unpacked_sfixed32(709);
  735. message->add_unpacked_sfixed64(710);
  736. message->add_unpacked_float(711);
  737. message->add_unpacked_double(712);
  738. message->add_unpacked_bool(false);
  739. message->add_unpacked_enum(UNITTEST::FOREIGN_BAZ);
  740. }
  741. // -------------------------------------------------------------------
  742. inline void TestUtil::ExpectPackedFieldsSet(
  743. const UNITTEST::TestPackedTypes& message) {
  744. ASSERT_EQ(2, message.packed_int32_size());
  745. ASSERT_EQ(2, message.packed_int64_size());
  746. ASSERT_EQ(2, message.packed_uint32_size());
  747. ASSERT_EQ(2, message.packed_uint64_size());
  748. ASSERT_EQ(2, message.packed_sint32_size());
  749. ASSERT_EQ(2, message.packed_sint64_size());
  750. ASSERT_EQ(2, message.packed_fixed32_size());
  751. ASSERT_EQ(2, message.packed_fixed64_size());
  752. ASSERT_EQ(2, message.packed_sfixed32_size());
  753. ASSERT_EQ(2, message.packed_sfixed64_size());
  754. ASSERT_EQ(2, message.packed_float_size());
  755. ASSERT_EQ(2, message.packed_double_size());
  756. ASSERT_EQ(2, message.packed_bool_size());
  757. ASSERT_EQ(2, message.packed_enum_size());
  758. EXPECT_EQ(601, message.packed_int32(0));
  759. EXPECT_EQ(602, message.packed_int64(0));
  760. EXPECT_EQ(603, message.packed_uint32(0));
  761. EXPECT_EQ(604, message.packed_uint64(0));
  762. EXPECT_EQ(605, message.packed_sint32(0));
  763. EXPECT_EQ(606, message.packed_sint64(0));
  764. EXPECT_EQ(607, message.packed_fixed32(0));
  765. EXPECT_EQ(608, message.packed_fixed64(0));
  766. EXPECT_EQ(609, message.packed_sfixed32(0));
  767. EXPECT_EQ(610, message.packed_sfixed64(0));
  768. EXPECT_EQ(611, message.packed_float(0));
  769. EXPECT_EQ(612, message.packed_double(0));
  770. EXPECT_TRUE(message.packed_bool(0));
  771. EXPECT_EQ(UNITTEST::FOREIGN_BAR, message.packed_enum(0));
  772. EXPECT_EQ(701, message.packed_int32(1));
  773. EXPECT_EQ(702, message.packed_int64(1));
  774. EXPECT_EQ(703, message.packed_uint32(1));
  775. EXPECT_EQ(704, message.packed_uint64(1));
  776. EXPECT_EQ(705, message.packed_sint32(1));
  777. EXPECT_EQ(706, message.packed_sint64(1));
  778. EXPECT_EQ(707, message.packed_fixed32(1));
  779. EXPECT_EQ(708, message.packed_fixed64(1));
  780. EXPECT_EQ(709, message.packed_sfixed32(1));
  781. EXPECT_EQ(710, message.packed_sfixed64(1));
  782. EXPECT_EQ(711, message.packed_float(1));
  783. EXPECT_EQ(712, message.packed_double(1));
  784. EXPECT_FALSE(message.packed_bool(1));
  785. EXPECT_EQ(UNITTEST::FOREIGN_BAZ, message.packed_enum(1));
  786. }
  787. inline void TestUtil::ExpectUnpackedFieldsSet(
  788. const UNITTEST::TestUnpackedTypes& message) {
  789. // The values expected here must match those of ExpectPackedFieldsSet.
  790. ASSERT_EQ(2, message.unpacked_int32_size());
  791. ASSERT_EQ(2, message.unpacked_int64_size());
  792. ASSERT_EQ(2, message.unpacked_uint32_size());
  793. ASSERT_EQ(2, message.unpacked_uint64_size());
  794. ASSERT_EQ(2, message.unpacked_sint32_size());
  795. ASSERT_EQ(2, message.unpacked_sint64_size());
  796. ASSERT_EQ(2, message.unpacked_fixed32_size());
  797. ASSERT_EQ(2, message.unpacked_fixed64_size());
  798. ASSERT_EQ(2, message.unpacked_sfixed32_size());
  799. ASSERT_EQ(2, message.unpacked_sfixed64_size());
  800. ASSERT_EQ(2, message.unpacked_float_size());
  801. ASSERT_EQ(2, message.unpacked_double_size());
  802. ASSERT_EQ(2, message.unpacked_bool_size());
  803. ASSERT_EQ(2, message.unpacked_enum_size());
  804. EXPECT_EQ(601, message.unpacked_int32(0));
  805. EXPECT_EQ(602, message.unpacked_int64(0));
  806. EXPECT_EQ(603, message.unpacked_uint32(0));
  807. EXPECT_EQ(604, message.unpacked_uint64(0));
  808. EXPECT_EQ(605, message.unpacked_sint32(0));
  809. EXPECT_EQ(606, message.unpacked_sint64(0));
  810. EXPECT_EQ(607, message.unpacked_fixed32(0));
  811. EXPECT_EQ(608, message.unpacked_fixed64(0));
  812. EXPECT_EQ(609, message.unpacked_sfixed32(0));
  813. EXPECT_EQ(610, message.unpacked_sfixed64(0));
  814. EXPECT_EQ(611, message.unpacked_float(0));
  815. EXPECT_EQ(612, message.unpacked_double(0));
  816. EXPECT_TRUE(message.unpacked_bool(0));
  817. EXPECT_EQ(UNITTEST::FOREIGN_BAR, message.unpacked_enum(0));
  818. EXPECT_EQ(701, message.unpacked_int32(1));
  819. EXPECT_EQ(702, message.unpacked_int64(1));
  820. EXPECT_EQ(703, message.unpacked_uint32(1));
  821. EXPECT_EQ(704, message.unpacked_uint64(1));
  822. EXPECT_EQ(705, message.unpacked_sint32(1));
  823. EXPECT_EQ(706, message.unpacked_sint64(1));
  824. EXPECT_EQ(707, message.unpacked_fixed32(1));
  825. EXPECT_EQ(708, message.unpacked_fixed64(1));
  826. EXPECT_EQ(709, message.unpacked_sfixed32(1));
  827. EXPECT_EQ(710, message.unpacked_sfixed64(1));
  828. EXPECT_EQ(711, message.unpacked_float(1));
  829. EXPECT_EQ(712, message.unpacked_double(1));
  830. EXPECT_FALSE(message.unpacked_bool(1));
  831. EXPECT_EQ(UNITTEST::FOREIGN_BAZ, message.unpacked_enum(1));
  832. }
  833. // ===================================================================
  834. // Extensions
  835. //
  836. // All this code is exactly equivalent to the above code except that it's
  837. // manipulating extension fields instead of normal ones.
  838. inline void TestUtil::SetAllExtensions(UNITTEST::TestAllExtensions* message) {
  839. message->SetExtension(UNITTEST::optional_int32_extension, 101);
  840. message->SetExtension(UNITTEST::optional_int64_extension, 102);
  841. message->SetExtension(UNITTEST::optional_uint32_extension, 103);
  842. message->SetExtension(UNITTEST::optional_uint64_extension, 104);
  843. message->SetExtension(UNITTEST::optional_sint32_extension, 105);
  844. message->SetExtension(UNITTEST::optional_sint64_extension, 106);
  845. message->SetExtension(UNITTEST::optional_fixed32_extension, 107);
  846. message->SetExtension(UNITTEST::optional_fixed64_extension, 108);
  847. message->SetExtension(UNITTEST::optional_sfixed32_extension, 109);
  848. message->SetExtension(UNITTEST::optional_sfixed64_extension, 110);
  849. message->SetExtension(UNITTEST::optional_float_extension, 111);
  850. message->SetExtension(UNITTEST::optional_double_extension, 112);
  851. message->SetExtension(UNITTEST::optional_bool_extension, true);
  852. message->SetExtension(UNITTEST::optional_string_extension, "115");
  853. message->SetExtension(UNITTEST::optional_bytes_extension, "116");
  854. message->MutableExtension(UNITTEST::optionalgroup_extension)->set_a(117);
  855. message->MutableExtension(UNITTEST::optional_nested_message_extension)
  856. ->set_bb(118);
  857. message->MutableExtension(UNITTEST::optional_foreign_message_extension)
  858. ->set_c(119);
  859. message->MutableExtension(UNITTEST::optional_import_message_extension)
  860. ->set_d(120);
  861. message->SetExtension(UNITTEST::optional_nested_enum_extension,
  862. UNITTEST::TestAllTypes::BAZ);
  863. message->SetExtension(UNITTEST::optional_foreign_enum_extension,
  864. UNITTEST::FOREIGN_BAZ);
  865. message->SetExtension(UNITTEST::optional_import_enum_extension,
  866. UNITTEST_IMPORT::IMPORT_BAZ);
  867. message->SetExtension(UNITTEST::optional_string_piece_extension, "124");
  868. message->SetExtension(UNITTEST::optional_cord_extension, "125");
  869. message->MutableExtension(UNITTEST::optional_public_import_message_extension)
  870. ->set_e(126);
  871. message->MutableExtension(UNITTEST::optional_lazy_message_extension)
  872. ->set_bb(127);
  873. // -----------------------------------------------------------------
  874. message->AddExtension(UNITTEST::repeated_int32_extension, 201);
  875. message->AddExtension(UNITTEST::repeated_int64_extension, 202);
  876. message->AddExtension(UNITTEST::repeated_uint32_extension, 203);
  877. message->AddExtension(UNITTEST::repeated_uint64_extension, 204);
  878. message->AddExtension(UNITTEST::repeated_sint32_extension, 205);
  879. message->AddExtension(UNITTEST::repeated_sint64_extension, 206);
  880. message->AddExtension(UNITTEST::repeated_fixed32_extension, 207);
  881. message->AddExtension(UNITTEST::repeated_fixed64_extension, 208);
  882. message->AddExtension(UNITTEST::repeated_sfixed32_extension, 209);
  883. message->AddExtension(UNITTEST::repeated_sfixed64_extension, 210);
  884. message->AddExtension(UNITTEST::repeated_float_extension, 211);
  885. message->AddExtension(UNITTEST::repeated_double_extension, 212);
  886. message->AddExtension(UNITTEST::repeated_bool_extension, true);
  887. message->AddExtension(UNITTEST::repeated_string_extension, "215");
  888. message->AddExtension(UNITTEST::repeated_bytes_extension, "216");
  889. message->AddExtension(UNITTEST::repeatedgroup_extension)->set_a(217);
  890. message->AddExtension(UNITTEST::repeated_nested_message_extension)
  891. ->set_bb(218);
  892. message->AddExtension(UNITTEST::repeated_foreign_message_extension)
  893. ->set_c(219);
  894. message->AddExtension(UNITTEST::repeated_import_message_extension)
  895. ->set_d(220);
  896. message->AddExtension(UNITTEST::repeated_lazy_message_extension)->set_bb(227);
  897. message->AddExtension(UNITTEST::repeated_nested_enum_extension,
  898. UNITTEST::TestAllTypes::BAR);
  899. message->AddExtension(UNITTEST::repeated_foreign_enum_extension,
  900. UNITTEST::FOREIGN_BAR);
  901. message->AddExtension(UNITTEST::repeated_import_enum_extension,
  902. UNITTEST_IMPORT::IMPORT_BAR);
  903. message->AddExtension(UNITTEST::repeated_string_piece_extension, "224");
  904. message->AddExtension(UNITTEST::repeated_cord_extension, "225");
  905. // Add a second one of each field.
  906. message->AddExtension(UNITTEST::repeated_int32_extension, 301);
  907. message->AddExtension(UNITTEST::repeated_int64_extension, 302);
  908. message->AddExtension(UNITTEST::repeated_uint32_extension, 303);
  909. message->AddExtension(UNITTEST::repeated_uint64_extension, 304);
  910. message->AddExtension(UNITTEST::repeated_sint32_extension, 305);
  911. message->AddExtension(UNITTEST::repeated_sint64_extension, 306);
  912. message->AddExtension(UNITTEST::repeated_fixed32_extension, 307);
  913. message->AddExtension(UNITTEST::repeated_fixed64_extension, 308);
  914. message->AddExtension(UNITTEST::repeated_sfixed32_extension, 309);
  915. message->AddExtension(UNITTEST::repeated_sfixed64_extension, 310);
  916. message->AddExtension(UNITTEST::repeated_float_extension, 311);
  917. message->AddExtension(UNITTEST::repeated_double_extension, 312);
  918. message->AddExtension(UNITTEST::repeated_bool_extension, false);
  919. message->AddExtension(UNITTEST::repeated_string_extension, "315");
  920. message->AddExtension(UNITTEST::repeated_bytes_extension, "316");
  921. message->AddExtension(UNITTEST::repeatedgroup_extension)->set_a(317);
  922. message->AddExtension(UNITTEST::repeated_nested_message_extension)
  923. ->set_bb(318);
  924. message->AddExtension(UNITTEST::repeated_foreign_message_extension)
  925. ->set_c(319);
  926. message->AddExtension(UNITTEST::repeated_import_message_extension)
  927. ->set_d(320);
  928. message->AddExtension(UNITTEST::repeated_lazy_message_extension)->set_bb(327);
  929. message->AddExtension(UNITTEST::repeated_nested_enum_extension,
  930. UNITTEST::TestAllTypes::BAZ);
  931. message->AddExtension(UNITTEST::repeated_foreign_enum_extension,
  932. UNITTEST::FOREIGN_BAZ);
  933. message->AddExtension(UNITTEST::repeated_import_enum_extension,
  934. UNITTEST_IMPORT::IMPORT_BAZ);
  935. message->AddExtension(UNITTEST::repeated_string_piece_extension, "324");
  936. message->AddExtension(UNITTEST::repeated_cord_extension, "325");
  937. // -----------------------------------------------------------------
  938. message->SetExtension(UNITTEST::default_int32_extension, 401);
  939. message->SetExtension(UNITTEST::default_int64_extension, 402);
  940. message->SetExtension(UNITTEST::default_uint32_extension, 403);
  941. message->SetExtension(UNITTEST::default_uint64_extension, 404);
  942. message->SetExtension(UNITTEST::default_sint32_extension, 405);
  943. message->SetExtension(UNITTEST::default_sint64_extension, 406);
  944. message->SetExtension(UNITTEST::default_fixed32_extension, 407);
  945. message->SetExtension(UNITTEST::default_fixed64_extension, 408);
  946. message->SetExtension(UNITTEST::default_sfixed32_extension, 409);
  947. message->SetExtension(UNITTEST::default_sfixed64_extension, 410);
  948. message->SetExtension(UNITTEST::default_float_extension, 411);
  949. message->SetExtension(UNITTEST::default_double_extension, 412);
  950. message->SetExtension(UNITTEST::default_bool_extension, false);
  951. message->SetExtension(UNITTEST::default_string_extension, "415");
  952. message->SetExtension(UNITTEST::default_bytes_extension, "416");
  953. message->SetExtension(UNITTEST::default_nested_enum_extension,
  954. UNITTEST::TestAllTypes::FOO);
  955. message->SetExtension(UNITTEST::default_foreign_enum_extension,
  956. UNITTEST::FOREIGN_FOO);
  957. message->SetExtension(UNITTEST::default_import_enum_extension,
  958. UNITTEST_IMPORT::IMPORT_FOO);
  959. message->SetExtension(UNITTEST::default_string_piece_extension, "424");
  960. message->SetExtension(UNITTEST::default_cord_extension, "425");
  961. SetOneofFields(message);
  962. }
  963. inline void TestUtil::SetOneofFields(UNITTEST::TestAllExtensions* message) {
  964. message->SetExtension(UNITTEST::oneof_uint32_extension, 601);
  965. message->MutableExtension(UNITTEST::oneof_nested_message_extension)
  966. ->set_bb(602);
  967. message->SetExtension(UNITTEST::oneof_string_extension, "603");
  968. message->SetExtension(UNITTEST::oneof_bytes_extension, "604");
  969. }
  970. // -------------------------------------------------------------------
  971. inline void TestUtil::SetAllFieldsAndExtensions(
  972. UNITTEST::TestFieldOrderings* message) {
  973. GOOGLE_CHECK(message);
  974. message->set_my_int(1);
  975. message->set_my_string("foo");
  976. message->set_my_float(1.0);
  977. message->SetExtension(UNITTEST::my_extension_int, 23);
  978. message->SetExtension(UNITTEST::my_extension_string, "bar");
  979. }
  980. // -------------------------------------------------------------------
  981. inline void TestUtil::ModifyRepeatedExtensions(
  982. UNITTEST::TestAllExtensions* message) {
  983. message->SetExtension(UNITTEST::repeated_int32_extension, 1, 501);
  984. message->SetExtension(UNITTEST::repeated_int64_extension, 1, 502);
  985. message->SetExtension(UNITTEST::repeated_uint32_extension, 1, 503);
  986. message->SetExtension(UNITTEST::repeated_uint64_extension, 1, 504);
  987. message->SetExtension(UNITTEST::repeated_sint32_extension, 1, 505);
  988. message->SetExtension(UNITTEST::repeated_sint64_extension, 1, 506);
  989. message->SetExtension(UNITTEST::repeated_fixed32_extension, 1, 507);
  990. message->SetExtension(UNITTEST::repeated_fixed64_extension, 1, 508);
  991. message->SetExtension(UNITTEST::repeated_sfixed32_extension, 1, 509);
  992. message->SetExtension(UNITTEST::repeated_sfixed64_extension, 1, 510);
  993. message->SetExtension(UNITTEST::repeated_float_extension, 1, 511);
  994. message->SetExtension(UNITTEST::repeated_double_extension, 1, 512);
  995. message->SetExtension(UNITTEST::repeated_bool_extension, 1, true);
  996. message->SetExtension(UNITTEST::repeated_string_extension, 1, "515");
  997. message->SetExtension(UNITTEST::repeated_bytes_extension, 1, "516");
  998. message->MutableExtension(UNITTEST::repeatedgroup_extension, 1)->set_a(517);
  999. message->MutableExtension(UNITTEST::repeated_nested_message_extension, 1)
  1000. ->set_bb(518);
  1001. message->MutableExtension(UNITTEST::repeated_foreign_message_extension, 1)
  1002. ->set_c(519);
  1003. message->MutableExtension(UNITTEST::repeated_import_message_extension, 1)
  1004. ->set_d(520);
  1005. message->MutableExtension(UNITTEST::repeated_lazy_message_extension, 1)
  1006. ->set_bb(527);
  1007. message->SetExtension(UNITTEST::repeated_nested_enum_extension, 1,
  1008. UNITTEST::TestAllTypes::FOO);
  1009. message->SetExtension(UNITTEST::repeated_foreign_enum_extension, 1,
  1010. UNITTEST::FOREIGN_FOO);
  1011. message->SetExtension(UNITTEST::repeated_import_enum_extension, 1,
  1012. UNITTEST_IMPORT::IMPORT_FOO);
  1013. message->SetExtension(UNITTEST::repeated_string_piece_extension, 1, "524");
  1014. message->SetExtension(UNITTEST::repeated_cord_extension, 1, "525");
  1015. }
  1016. // -------------------------------------------------------------------
  1017. inline void TestUtil::ExpectAllExtensionsSet(
  1018. const UNITTEST::TestAllExtensions& message) {
  1019. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_int32_extension));
  1020. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_int64_extension));
  1021. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_uint32_extension));
  1022. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_uint64_extension));
  1023. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_sint32_extension));
  1024. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_sint64_extension));
  1025. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_fixed32_extension));
  1026. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_fixed64_extension));
  1027. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_sfixed32_extension));
  1028. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_sfixed64_extension));
  1029. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_float_extension));
  1030. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_double_extension));
  1031. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_bool_extension));
  1032. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_string_extension));
  1033. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_bytes_extension));
  1034. EXPECT_TRUE(message.HasExtension(UNITTEST::optionalgroup_extension));
  1035. EXPECT_TRUE(
  1036. message.HasExtension(UNITTEST::optional_nested_message_extension));
  1037. EXPECT_TRUE(
  1038. message.HasExtension(UNITTEST::optional_foreign_message_extension));
  1039. EXPECT_TRUE(
  1040. message.HasExtension(UNITTEST::optional_import_message_extension));
  1041. EXPECT_TRUE(
  1042. message.HasExtension(UNITTEST::optional_public_import_message_extension));
  1043. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_lazy_message_extension));
  1044. EXPECT_TRUE(message.GetExtension(UNITTEST::optionalgroup_extension).has_a());
  1045. EXPECT_TRUE(message.GetExtension(UNITTEST::optional_nested_message_extension)
  1046. .has_bb());
  1047. EXPECT_TRUE(message.GetExtension(UNITTEST::optional_foreign_message_extension)
  1048. .has_c());
  1049. EXPECT_TRUE(message.GetExtension(UNITTEST::optional_import_message_extension)
  1050. .has_d());
  1051. EXPECT_TRUE(
  1052. message.GetExtension(UNITTEST::optional_public_import_message_extension)
  1053. .has_e());
  1054. EXPECT_TRUE(
  1055. message.GetExtension(UNITTEST::optional_lazy_message_extension).has_bb());
  1056. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_nested_enum_extension));
  1057. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_foreign_enum_extension));
  1058. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_import_enum_extension));
  1059. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_string_piece_extension));
  1060. EXPECT_TRUE(message.HasExtension(UNITTEST::optional_cord_extension));
  1061. EXPECT_EQ(101, message.GetExtension(UNITTEST::optional_int32_extension));
  1062. EXPECT_EQ(102, message.GetExtension(UNITTEST::optional_int64_extension));
  1063. EXPECT_EQ(103, message.GetExtension(UNITTEST::optional_uint32_extension));
  1064. EXPECT_EQ(104, message.GetExtension(UNITTEST::optional_uint64_extension));
  1065. EXPECT_EQ(105, message.GetExtension(UNITTEST::optional_sint32_extension));
  1066. EXPECT_EQ(106, message.GetExtension(UNITTEST::optional_sint64_extension));
  1067. EXPECT_EQ(107, message.GetExtension(UNITTEST::optional_fixed32_extension));
  1068. EXPECT_EQ(108, message.GetExtension(UNITTEST::optional_fixed64_extension));
  1069. EXPECT_EQ(109, message.GetExtension(UNITTEST::optional_sfixed32_extension));
  1070. EXPECT_EQ(110, message.GetExtension(UNITTEST::optional_sfixed64_extension));
  1071. EXPECT_EQ(111, message.GetExtension(UNITTEST::optional_float_extension));
  1072. EXPECT_EQ(112, message.GetExtension(UNITTEST::optional_double_extension));
  1073. EXPECT_TRUE(message.GetExtension(UNITTEST::optional_bool_extension));
  1074. EXPECT_EQ("115", message.GetExtension(UNITTEST::optional_string_extension));
  1075. EXPECT_EQ("116", message.GetExtension(UNITTEST::optional_bytes_extension));
  1076. EXPECT_EQ(117, message.GetExtension(UNITTEST::optionalgroup_extension).a());
  1077. EXPECT_EQ(
  1078. 118,
  1079. message.GetExtension(UNITTEST::optional_nested_message_extension).bb());
  1080. EXPECT_EQ(
  1081. 119,
  1082. message.GetExtension(UNITTEST::optional_foreign_message_extension).c());
  1083. EXPECT_EQ(
  1084. 120,
  1085. message.GetExtension(UNITTEST::optional_import_message_extension).d());
  1086. EXPECT_EQ(UNITTEST::TestAllTypes::BAZ,
  1087. message.GetExtension(UNITTEST::optional_nested_enum_extension));
  1088. EXPECT_EQ(UNITTEST::FOREIGN_BAZ,
  1089. message.GetExtension(UNITTEST::optional_foreign_enum_extension));
  1090. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAZ,
  1091. message.GetExtension(UNITTEST::optional_import_enum_extension));
  1092. EXPECT_EQ("124",
  1093. message.GetExtension(UNITTEST::optional_string_piece_extension));
  1094. EXPECT_EQ("125", message.GetExtension(UNITTEST::optional_cord_extension));
  1095. EXPECT_EQ(
  1096. 126,
  1097. message.GetExtension(UNITTEST::optional_public_import_message_extension)
  1098. .e());
  1099. EXPECT_EQ(
  1100. 127,
  1101. message.GetExtension(UNITTEST::optional_lazy_message_extension).bb());
  1102. // -----------------------------------------------------------------
  1103. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_int32_extension));
  1104. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_int64_extension));
  1105. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_uint32_extension));
  1106. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_uint64_extension));
  1107. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_sint32_extension));
  1108. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_sint64_extension));
  1109. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_fixed32_extension));
  1110. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_fixed64_extension));
  1111. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_sfixed32_extension));
  1112. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_sfixed64_extension));
  1113. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_float_extension));
  1114. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_double_extension));
  1115. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_bool_extension));
  1116. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_string_extension));
  1117. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_bytes_extension));
  1118. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeatedgroup_extension));
  1119. ASSERT_EQ(2,
  1120. message.ExtensionSize(UNITTEST::repeated_nested_message_extension));
  1121. ASSERT_EQ(
  1122. 2, message.ExtensionSize(UNITTEST::repeated_foreign_message_extension));
  1123. ASSERT_EQ(2,
  1124. message.ExtensionSize(UNITTEST::repeated_import_message_extension));
  1125. ASSERT_EQ(2,
  1126. message.ExtensionSize(UNITTEST::repeated_lazy_message_extension));
  1127. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_nested_enum_extension));
  1128. ASSERT_EQ(2,
  1129. message.ExtensionSize(UNITTEST::repeated_foreign_enum_extension));
  1130. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_import_enum_extension));
  1131. ASSERT_EQ(2,
  1132. message.ExtensionSize(UNITTEST::repeated_string_piece_extension));
  1133. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_cord_extension));
  1134. EXPECT_EQ(201, message.GetExtension(UNITTEST::repeated_int32_extension, 0));
  1135. EXPECT_EQ(202, message.GetExtension(UNITTEST::repeated_int64_extension, 0));
  1136. EXPECT_EQ(203, message.GetExtension(UNITTEST::repeated_uint32_extension, 0));
  1137. EXPECT_EQ(204, message.GetExtension(UNITTEST::repeated_uint64_extension, 0));
  1138. EXPECT_EQ(205, message.GetExtension(UNITTEST::repeated_sint32_extension, 0));
  1139. EXPECT_EQ(206, message.GetExtension(UNITTEST::repeated_sint64_extension, 0));
  1140. EXPECT_EQ(207, message.GetExtension(UNITTEST::repeated_fixed32_extension, 0));
  1141. EXPECT_EQ(208, message.GetExtension(UNITTEST::repeated_fixed64_extension, 0));
  1142. EXPECT_EQ(209,
  1143. message.GetExtension(UNITTEST::repeated_sfixed32_extension, 0));
  1144. EXPECT_EQ(210,
  1145. message.GetExtension(UNITTEST::repeated_sfixed64_extension, 0));
  1146. EXPECT_EQ(211, message.GetExtension(UNITTEST::repeated_float_extension, 0));
  1147. EXPECT_EQ(212, message.GetExtension(UNITTEST::repeated_double_extension, 0));
  1148. EXPECT_TRUE(message.GetExtension(UNITTEST::repeated_bool_extension, 0));
  1149. EXPECT_EQ("215",
  1150. message.GetExtension(UNITTEST::repeated_string_extension, 0));
  1151. EXPECT_EQ("216", message.GetExtension(UNITTEST::repeated_bytes_extension, 0));
  1152. EXPECT_EQ(217,
  1153. message.GetExtension(UNITTEST::repeatedgroup_extension, 0).a());
  1154. EXPECT_EQ(218,
  1155. message.GetExtension(UNITTEST::repeated_nested_message_extension, 0)
  1156. .bb());
  1157. EXPECT_EQ(
  1158. 219, message.GetExtension(UNITTEST::repeated_foreign_message_extension, 0)
  1159. .c());
  1160. EXPECT_EQ(
  1161. 220,
  1162. message.GetExtension(UNITTEST::repeated_import_message_extension, 0).d());
  1163. EXPECT_EQ(
  1164. 227,
  1165. message.GetExtension(UNITTEST::repeated_lazy_message_extension, 0).bb());
  1166. EXPECT_EQ(UNITTEST::TestAllTypes::BAR,
  1167. message.GetExtension(UNITTEST::repeated_nested_enum_extension, 0));
  1168. EXPECT_EQ(UNITTEST::FOREIGN_BAR,
  1169. message.GetExtension(UNITTEST::repeated_foreign_enum_extension, 0));
  1170. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAR,
  1171. message.GetExtension(UNITTEST::repeated_import_enum_extension, 0));
  1172. EXPECT_EQ("224",
  1173. message.GetExtension(UNITTEST::repeated_string_piece_extension, 0));
  1174. EXPECT_EQ("225", message.GetExtension(UNITTEST::repeated_cord_extension, 0));
  1175. EXPECT_EQ(301, message.GetExtension(UNITTEST::repeated_int32_extension, 1));
  1176. EXPECT_EQ(302, message.GetExtension(UNITTEST::repeated_int64_extension, 1));
  1177. EXPECT_EQ(303, message.GetExtension(UNITTEST::repeated_uint32_extension, 1));
  1178. EXPECT_EQ(304, message.GetExtension(UNITTEST::repeated_uint64_extension, 1));
  1179. EXPECT_EQ(305, message.GetExtension(UNITTEST::repeated_sint32_extension, 1));
  1180. EXPECT_EQ(306, message.GetExtension(UNITTEST::repeated_sint64_extension, 1));
  1181. EXPECT_EQ(307, message.GetExtension(UNITTEST::repeated_fixed32_extension, 1));
  1182. EXPECT_EQ(308, message.GetExtension(UNITTEST::repeated_fixed64_extension, 1));
  1183. EXPECT_EQ(309,
  1184. message.GetExtension(UNITTEST::repeated_sfixed32_extension, 1));
  1185. EXPECT_EQ(310,
  1186. message.GetExtension(UNITTEST::repeated_sfixed64_extension, 1));
  1187. EXPECT_EQ(311, message.GetExtension(UNITTEST::repeated_float_extension, 1));
  1188. EXPECT_EQ(312, message.GetExtension(UNITTEST::repeated_double_extension, 1));
  1189. EXPECT_FALSE(message.GetExtension(UNITTEST::repeated_bool_extension, 1));
  1190. EXPECT_EQ("315",
  1191. message.GetExtension(UNITTEST::repeated_string_extension, 1));
  1192. EXPECT_EQ("316", message.GetExtension(UNITTEST::repeated_bytes_extension, 1));
  1193. EXPECT_EQ(317,
  1194. message.GetExtension(UNITTEST::repeatedgroup_extension, 1).a());
  1195. EXPECT_EQ(318,
  1196. message.GetExtension(UNITTEST::repeated_nested_message_extension, 1)
  1197. .bb());
  1198. EXPECT_EQ(
  1199. 319, message.GetExtension(UNITTEST::repeated_foreign_message_extension, 1)
  1200. .c());
  1201. EXPECT_EQ(
  1202. 320,
  1203. message.GetExtension(UNITTEST::repeated_import_message_extension, 1).d());
  1204. EXPECT_EQ(
  1205. 327,
  1206. message.GetExtension(UNITTEST::repeated_lazy_message_extension, 1).bb());
  1207. EXPECT_EQ(UNITTEST::TestAllTypes::BAZ,
  1208. message.GetExtension(UNITTEST::repeated_nested_enum_extension, 1));
  1209. EXPECT_EQ(UNITTEST::FOREIGN_BAZ,
  1210. message.GetExtension(UNITTEST::repeated_foreign_enum_extension, 1));
  1211. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAZ,
  1212. message.GetExtension(UNITTEST::repeated_import_enum_extension, 1));
  1213. EXPECT_EQ("324",
  1214. message.GetExtension(UNITTEST::repeated_string_piece_extension, 1));
  1215. EXPECT_EQ("325", message.GetExtension(UNITTEST::repeated_cord_extension, 1));
  1216. // -----------------------------------------------------------------
  1217. EXPECT_TRUE(message.HasExtension(UNITTEST::default_int32_extension));
  1218. EXPECT_TRUE(message.HasExtension(UNITTEST::default_int64_extension));
  1219. EXPECT_TRUE(message.HasExtension(UNITTEST::default_uint32_extension));
  1220. EXPECT_TRUE(message.HasExtension(UNITTEST::default_uint64_extension));
  1221. EXPECT_TRUE(message.HasExtension(UNITTEST::default_sint32_extension));
  1222. EXPECT_TRUE(message.HasExtension(UNITTEST::default_sint64_extension));
  1223. EXPECT_TRUE(message.HasExtension(UNITTEST::default_fixed32_extension));
  1224. EXPECT_TRUE(message.HasExtension(UNITTEST::default_fixed64_extension));
  1225. EXPECT_TRUE(message.HasExtension(UNITTEST::default_sfixed32_extension));
  1226. EXPECT_TRUE(message.HasExtension(UNITTEST::default_sfixed64_extension));
  1227. EXPECT_TRUE(message.HasExtension(UNITTEST::default_float_extension));
  1228. EXPECT_TRUE(message.HasExtension(UNITTEST::default_double_extension));
  1229. EXPECT_TRUE(message.HasExtension(UNITTEST::default_bool_extension));
  1230. EXPECT_TRUE(message.HasExtension(UNITTEST::default_string_extension));
  1231. EXPECT_TRUE(message.HasExtension(UNITTEST::default_bytes_extension));
  1232. EXPECT_TRUE(message.HasExtension(UNITTEST::default_nested_enum_extension));
  1233. EXPECT_TRUE(message.HasExtension(UNITTEST::default_foreign_enum_extension));
  1234. EXPECT_TRUE(message.HasExtension(UNITTEST::default_import_enum_extension));
  1235. EXPECT_TRUE(message.HasExtension(UNITTEST::default_string_piece_extension));
  1236. EXPECT_TRUE(message.HasExtension(UNITTEST::default_cord_extension));
  1237. EXPECT_EQ(401, message.GetExtension(UNITTEST::default_int32_extension));
  1238. EXPECT_EQ(402, message.GetExtension(UNITTEST::default_int64_extension));
  1239. EXPECT_EQ(403, message.GetExtension(UNITTEST::default_uint32_extension));
  1240. EXPECT_EQ(404, message.GetExtension(UNITTEST::default_uint64_extension));
  1241. EXPECT_EQ(405, message.GetExtension(UNITTEST::default_sint32_extension));
  1242. EXPECT_EQ(406, message.GetExtension(UNITTEST::default_sint64_extension));
  1243. EXPECT_EQ(407, message.GetExtension(UNITTEST::default_fixed32_extension));
  1244. EXPECT_EQ(408, message.GetExtension(UNITTEST::default_fixed64_extension));
  1245. EXPECT_EQ(409, message.GetExtension(UNITTEST::default_sfixed32_extension));
  1246. EXPECT_EQ(410, message.GetExtension(UNITTEST::default_sfixed64_extension));
  1247. EXPECT_EQ(411, message.GetExtension(UNITTEST::default_float_extension));
  1248. EXPECT_EQ(412, message.GetExtension(UNITTEST::default_double_extension));
  1249. EXPECT_FALSE(message.GetExtension(UNITTEST::default_bool_extension));
  1250. EXPECT_EQ("415", message.GetExtension(UNITTEST::default_string_extension));
  1251. EXPECT_EQ("416", message.GetExtension(UNITTEST::default_bytes_extension));
  1252. EXPECT_EQ(UNITTEST::TestAllTypes::FOO,
  1253. message.GetExtension(UNITTEST::default_nested_enum_extension));
  1254. EXPECT_EQ(UNITTEST::FOREIGN_FOO,
  1255. message.GetExtension(UNITTEST::default_foreign_enum_extension));
  1256. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_FOO,
  1257. message.GetExtension(UNITTEST::default_import_enum_extension));
  1258. EXPECT_EQ("424",
  1259. message.GetExtension(UNITTEST::default_string_piece_extension));
  1260. EXPECT_EQ("425", message.GetExtension(UNITTEST::default_cord_extension));
  1261. EXPECT_TRUE(message.HasExtension(UNITTEST::oneof_uint32_extension));
  1262. EXPECT_TRUE(
  1263. message.GetExtension(UNITTEST::oneof_nested_message_extension).has_bb());
  1264. EXPECT_TRUE(message.HasExtension(UNITTEST::oneof_string_extension));
  1265. EXPECT_TRUE(message.HasExtension(UNITTEST::oneof_bytes_extension));
  1266. EXPECT_EQ(601, message.GetExtension(UNITTEST::oneof_uint32_extension));
  1267. EXPECT_EQ(
  1268. 602, message.GetExtension(UNITTEST::oneof_nested_message_extension).bb());
  1269. EXPECT_EQ("603", message.GetExtension(UNITTEST::oneof_string_extension));
  1270. EXPECT_EQ("604", message.GetExtension(UNITTEST::oneof_bytes_extension));
  1271. }
  1272. // -------------------------------------------------------------------
  1273. inline void TestUtil::ExpectExtensionsClear(
  1274. const UNITTEST::TestAllExtensions& message) {
  1275. std::string serialized;
  1276. ASSERT_TRUE(message.SerializeToString(&serialized));
  1277. EXPECT_EQ("", serialized);
  1278. EXPECT_EQ(0, message.ByteSizeLong());
  1279. // has_blah() should initially be false for all optional fields.
  1280. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_int32_extension));
  1281. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_int64_extension));
  1282. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_uint32_extension));
  1283. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_uint64_extension));
  1284. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_sint32_extension));
  1285. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_sint64_extension));
  1286. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_fixed32_extension));
  1287. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_fixed64_extension));
  1288. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_sfixed32_extension));
  1289. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_sfixed64_extension));
  1290. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_float_extension));
  1291. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_double_extension));
  1292. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_bool_extension));
  1293. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_string_extension));
  1294. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_bytes_extension));
  1295. EXPECT_FALSE(message.HasExtension(UNITTEST::optionalgroup_extension));
  1296. EXPECT_FALSE(
  1297. message.HasExtension(UNITTEST::optional_nested_message_extension));
  1298. EXPECT_FALSE(
  1299. message.HasExtension(UNITTEST::optional_foreign_message_extension));
  1300. EXPECT_FALSE(
  1301. message.HasExtension(UNITTEST::optional_import_message_extension));
  1302. EXPECT_FALSE(
  1303. message.HasExtension(UNITTEST::optional_public_import_message_extension));
  1304. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_lazy_message_extension));
  1305. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_nested_enum_extension));
  1306. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_foreign_enum_extension));
  1307. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_import_enum_extension));
  1308. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_string_piece_extension));
  1309. EXPECT_FALSE(message.HasExtension(UNITTEST::optional_cord_extension));
  1310. // Optional fields without defaults are set to zero or something like it.
  1311. EXPECT_EQ(0, message.GetExtension(UNITTEST::optional_int32_extension));
  1312. EXPECT_EQ(0, message.GetExtension(UNITTEST::optional_int64_extension));
  1313. EXPECT_EQ(0, message.GetExtension(UNITTEST::optional_uint32_extension));
  1314. EXPECT_EQ(0, message.GetExtension(UNITTEST::optional_uint64_extension));
  1315. EXPECT_EQ(0, message.GetExtension(UNITTEST::optional_sint32_extension));
  1316. EXPECT_EQ(0, message.GetExtension(UNITTEST::optional_sint64_extension));
  1317. EXPECT_EQ(0, message.GetExtension(UNITTEST::optional_fixed32_extension));
  1318. EXPECT_EQ(0, message.GetExtension(UNITTEST::optional_fixed64_extension));
  1319. EXPECT_EQ(0, message.GetExtension(UNITTEST::optional_sfixed32_extension));
  1320. EXPECT_EQ(0, message.GetExtension(UNITTEST::optional_sfixed64_extension));
  1321. EXPECT_EQ(0, message.GetExtension(UNITTEST::optional_float_extension));
  1322. EXPECT_EQ(0, message.GetExtension(UNITTEST::optional_double_extension));
  1323. EXPECT_FALSE(message.GetExtension(UNITTEST::optional_bool_extension));
  1324. EXPECT_EQ("", message.GetExtension(UNITTEST::optional_string_extension));
  1325. EXPECT_EQ("", message.GetExtension(UNITTEST::optional_bytes_extension));
  1326. // Embedded messages should also be clear.
  1327. EXPECT_FALSE(message.GetExtension(UNITTEST::optionalgroup_extension).has_a());
  1328. EXPECT_FALSE(message.GetExtension(UNITTEST::optional_nested_message_extension)
  1329. .has_bb());
  1330. EXPECT_FALSE(
  1331. message.GetExtension(UNITTEST::optional_foreign_message_extension)
  1332. .has_c());
  1333. EXPECT_FALSE(message.GetExtension(UNITTEST::optional_import_message_extension)
  1334. .has_d());
  1335. EXPECT_FALSE(
  1336. message.GetExtension(UNITTEST::optional_public_import_message_extension)
  1337. .has_e());
  1338. EXPECT_FALSE(
  1339. message.GetExtension(UNITTEST::optional_lazy_message_extension).has_bb());
  1340. EXPECT_EQ(0, message.GetExtension(UNITTEST::optionalgroup_extension).a());
  1341. EXPECT_EQ(
  1342. 0,
  1343. message.GetExtension(UNITTEST::optional_nested_message_extension).bb());
  1344. EXPECT_EQ(
  1345. 0,
  1346. message.GetExtension(UNITTEST::optional_foreign_message_extension).c());
  1347. EXPECT_EQ(
  1348. 0, message.GetExtension(UNITTEST::optional_import_message_extension).d());
  1349. EXPECT_EQ(
  1350. 0,
  1351. message.GetExtension(UNITTEST::optional_public_import_message_extension)
  1352. .e());
  1353. EXPECT_EQ(
  1354. 0, message.GetExtension(UNITTEST::optional_lazy_message_extension).bb());
  1355. // Enums without defaults are set to the first value in the enum.
  1356. EXPECT_EQ(UNITTEST::TestAllTypes::FOO,
  1357. message.GetExtension(UNITTEST::optional_nested_enum_extension));
  1358. EXPECT_EQ(UNITTEST::FOREIGN_FOO,
  1359. message.GetExtension(UNITTEST::optional_foreign_enum_extension));
  1360. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_FOO,
  1361. message.GetExtension(UNITTEST::optional_import_enum_extension));
  1362. EXPECT_EQ("",
  1363. message.GetExtension(UNITTEST::optional_string_piece_extension));
  1364. EXPECT_EQ("", message.GetExtension(UNITTEST::optional_cord_extension));
  1365. // Repeated fields are empty.
  1366. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_int32_extension));
  1367. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_int64_extension));
  1368. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_uint32_extension));
  1369. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_uint64_extension));
  1370. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_sint32_extension));
  1371. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_sint64_extension));
  1372. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_fixed32_extension));
  1373. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_fixed64_extension));
  1374. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_sfixed32_extension));
  1375. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_sfixed64_extension));
  1376. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_float_extension));
  1377. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_double_extension));
  1378. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_bool_extension));
  1379. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_string_extension));
  1380. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_bytes_extension));
  1381. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeatedgroup_extension));
  1382. EXPECT_EQ(0,
  1383. message.ExtensionSize(UNITTEST::repeated_nested_message_extension));
  1384. EXPECT_EQ(
  1385. 0, message.ExtensionSize(UNITTEST::repeated_foreign_message_extension));
  1386. EXPECT_EQ(0,
  1387. message.ExtensionSize(UNITTEST::repeated_import_message_extension));
  1388. EXPECT_EQ(0,
  1389. message.ExtensionSize(UNITTEST::repeated_lazy_message_extension));
  1390. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_nested_enum_extension));
  1391. EXPECT_EQ(0,
  1392. message.ExtensionSize(UNITTEST::repeated_foreign_enum_extension));
  1393. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_import_enum_extension));
  1394. EXPECT_EQ(0,
  1395. message.ExtensionSize(UNITTEST::repeated_string_piece_extension));
  1396. EXPECT_EQ(0, message.ExtensionSize(UNITTEST::repeated_cord_extension));
  1397. // has_blah() should also be false for all default fields.
  1398. EXPECT_FALSE(message.HasExtension(UNITTEST::default_int32_extension));
  1399. EXPECT_FALSE(message.HasExtension(UNITTEST::default_int64_extension));
  1400. EXPECT_FALSE(message.HasExtension(UNITTEST::default_uint32_extension));
  1401. EXPECT_FALSE(message.HasExtension(UNITTEST::default_uint64_extension));
  1402. EXPECT_FALSE(message.HasExtension(UNITTEST::default_sint32_extension));
  1403. EXPECT_FALSE(message.HasExtension(UNITTEST::default_sint64_extension));
  1404. EXPECT_FALSE(message.HasExtension(UNITTEST::default_fixed32_extension));
  1405. EXPECT_FALSE(message.HasExtension(UNITTEST::default_fixed64_extension));
  1406. EXPECT_FALSE(message.HasExtension(UNITTEST::default_sfixed32_extension));
  1407. EXPECT_FALSE(message.HasExtension(UNITTEST::default_sfixed64_extension));
  1408. EXPECT_FALSE(message.HasExtension(UNITTEST::default_float_extension));
  1409. EXPECT_FALSE(message.HasExtension(UNITTEST::default_double_extension));
  1410. EXPECT_FALSE(message.HasExtension(UNITTEST::default_bool_extension));
  1411. EXPECT_FALSE(message.HasExtension(UNITTEST::default_string_extension));
  1412. EXPECT_FALSE(message.HasExtension(UNITTEST::default_bytes_extension));
  1413. EXPECT_FALSE(message.HasExtension(UNITTEST::default_nested_enum_extension));
  1414. EXPECT_FALSE(message.HasExtension(UNITTEST::default_foreign_enum_extension));
  1415. EXPECT_FALSE(message.HasExtension(UNITTEST::default_import_enum_extension));
  1416. EXPECT_FALSE(message.HasExtension(UNITTEST::default_string_piece_extension));
  1417. EXPECT_FALSE(message.HasExtension(UNITTEST::default_cord_extension));
  1418. // Fields with defaults have their default values (duh).
  1419. EXPECT_EQ(41, message.GetExtension(UNITTEST::default_int32_extension));
  1420. EXPECT_EQ(42, message.GetExtension(UNITTEST::default_int64_extension));
  1421. EXPECT_EQ(43, message.GetExtension(UNITTEST::default_uint32_extension));
  1422. EXPECT_EQ(44, message.GetExtension(UNITTEST::default_uint64_extension));
  1423. EXPECT_EQ(-45, message.GetExtension(UNITTEST::default_sint32_extension));
  1424. EXPECT_EQ(46, message.GetExtension(UNITTEST::default_sint64_extension));
  1425. EXPECT_EQ(47, message.GetExtension(UNITTEST::default_fixed32_extension));
  1426. EXPECT_EQ(48, message.GetExtension(UNITTEST::default_fixed64_extension));
  1427. EXPECT_EQ(49, message.GetExtension(UNITTEST::default_sfixed32_extension));
  1428. EXPECT_EQ(-50, message.GetExtension(UNITTEST::default_sfixed64_extension));
  1429. EXPECT_EQ(51.5, message.GetExtension(UNITTEST::default_float_extension));
  1430. EXPECT_EQ(52e3, message.GetExtension(UNITTEST::default_double_extension));
  1431. EXPECT_TRUE(message.GetExtension(UNITTEST::default_bool_extension));
  1432. EXPECT_EQ("hello", message.GetExtension(UNITTEST::default_string_extension));
  1433. EXPECT_EQ("world", message.GetExtension(UNITTEST::default_bytes_extension));
  1434. EXPECT_EQ(UNITTEST::TestAllTypes::BAR,
  1435. message.GetExtension(UNITTEST::default_nested_enum_extension));
  1436. EXPECT_EQ(UNITTEST::FOREIGN_BAR,
  1437. message.GetExtension(UNITTEST::default_foreign_enum_extension));
  1438. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAR,
  1439. message.GetExtension(UNITTEST::default_import_enum_extension));
  1440. EXPECT_EQ("abc",
  1441. message.GetExtension(UNITTEST::default_string_piece_extension));
  1442. EXPECT_EQ("123", message.GetExtension(UNITTEST::default_cord_extension));
  1443. EXPECT_FALSE(message.HasExtension(UNITTEST::oneof_uint32_extension));
  1444. EXPECT_FALSE(
  1445. message.GetExtension(UNITTEST::oneof_nested_message_extension).has_bb());
  1446. EXPECT_FALSE(message.HasExtension(UNITTEST::oneof_string_extension));
  1447. EXPECT_FALSE(message.HasExtension(UNITTEST::oneof_bytes_extension));
  1448. }
  1449. // -------------------------------------------------------------------
  1450. inline void TestUtil::ExpectRepeatedExtensionsModified(
  1451. const UNITTEST::TestAllExtensions& message) {
  1452. // ModifyRepeatedFields only sets the second repeated element of each
  1453. // field. In addition to verifying this, we also verify that the first
  1454. // element and size were *not* modified.
  1455. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_int32_extension));
  1456. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_int64_extension));
  1457. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_uint32_extension));
  1458. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_uint64_extension));
  1459. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_sint32_extension));
  1460. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_sint64_extension));
  1461. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_fixed32_extension));
  1462. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_fixed64_extension));
  1463. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_sfixed32_extension));
  1464. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_sfixed64_extension));
  1465. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_float_extension));
  1466. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_double_extension));
  1467. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_bool_extension));
  1468. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_string_extension));
  1469. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_bytes_extension));
  1470. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeatedgroup_extension));
  1471. ASSERT_EQ(2,
  1472. message.ExtensionSize(UNITTEST::repeated_nested_message_extension));
  1473. ASSERT_EQ(
  1474. 2, message.ExtensionSize(UNITTEST::repeated_foreign_message_extension));
  1475. ASSERT_EQ(2,
  1476. message.ExtensionSize(UNITTEST::repeated_import_message_extension));
  1477. ASSERT_EQ(2,
  1478. message.ExtensionSize(UNITTEST::repeated_lazy_message_extension));
  1479. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_nested_enum_extension));
  1480. ASSERT_EQ(2,
  1481. message.ExtensionSize(UNITTEST::repeated_foreign_enum_extension));
  1482. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_import_enum_extension));
  1483. ASSERT_EQ(2,
  1484. message.ExtensionSize(UNITTEST::repeated_string_piece_extension));
  1485. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_cord_extension));
  1486. EXPECT_EQ(201, message.GetExtension(UNITTEST::repeated_int32_extension, 0));
  1487. EXPECT_EQ(202, message.GetExtension(UNITTEST::repeated_int64_extension, 0));
  1488. EXPECT_EQ(203, message.GetExtension(UNITTEST::repeated_uint32_extension, 0));
  1489. EXPECT_EQ(204, message.GetExtension(UNITTEST::repeated_uint64_extension, 0));
  1490. EXPECT_EQ(205, message.GetExtension(UNITTEST::repeated_sint32_extension, 0));
  1491. EXPECT_EQ(206, message.GetExtension(UNITTEST::repeated_sint64_extension, 0));
  1492. EXPECT_EQ(207, message.GetExtension(UNITTEST::repeated_fixed32_extension, 0));
  1493. EXPECT_EQ(208, message.GetExtension(UNITTEST::repeated_fixed64_extension, 0));
  1494. EXPECT_EQ(209,
  1495. message.GetExtension(UNITTEST::repeated_sfixed32_extension, 0));
  1496. EXPECT_EQ(210,
  1497. message.GetExtension(UNITTEST::repeated_sfixed64_extension, 0));
  1498. EXPECT_EQ(211, message.GetExtension(UNITTEST::repeated_float_extension, 0));
  1499. EXPECT_EQ(212, message.GetExtension(UNITTEST::repeated_double_extension, 0));
  1500. EXPECT_TRUE(message.GetExtension(UNITTEST::repeated_bool_extension, 0));
  1501. EXPECT_EQ("215",
  1502. message.GetExtension(UNITTEST::repeated_string_extension, 0));
  1503. EXPECT_EQ("216", message.GetExtension(UNITTEST::repeated_bytes_extension, 0));
  1504. EXPECT_EQ(217,
  1505. message.GetExtension(UNITTEST::repeatedgroup_extension, 0).a());
  1506. EXPECT_EQ(218,
  1507. message.GetExtension(UNITTEST::repeated_nested_message_extension, 0)
  1508. .bb());
  1509. EXPECT_EQ(
  1510. 219, message.GetExtension(UNITTEST::repeated_foreign_message_extension, 0)
  1511. .c());
  1512. EXPECT_EQ(
  1513. 220,
  1514. message.GetExtension(UNITTEST::repeated_import_message_extension, 0).d());
  1515. EXPECT_EQ(
  1516. 227,
  1517. message.GetExtension(UNITTEST::repeated_lazy_message_extension, 0).bb());
  1518. EXPECT_EQ(UNITTEST::TestAllTypes::BAR,
  1519. message.GetExtension(UNITTEST::repeated_nested_enum_extension, 0));
  1520. EXPECT_EQ(UNITTEST::FOREIGN_BAR,
  1521. message.GetExtension(UNITTEST::repeated_foreign_enum_extension, 0));
  1522. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAR,
  1523. message.GetExtension(UNITTEST::repeated_import_enum_extension, 0));
  1524. EXPECT_EQ("224",
  1525. message.GetExtension(UNITTEST::repeated_string_piece_extension, 0));
  1526. EXPECT_EQ("225", message.GetExtension(UNITTEST::repeated_cord_extension, 0));
  1527. // Actually verify the second (modified) elements now.
  1528. EXPECT_EQ(501, message.GetExtension(UNITTEST::repeated_int32_extension, 1));
  1529. EXPECT_EQ(502, message.GetExtension(UNITTEST::repeated_int64_extension, 1));
  1530. EXPECT_EQ(503, message.GetExtension(UNITTEST::repeated_uint32_extension, 1));
  1531. EXPECT_EQ(504, message.GetExtension(UNITTEST::repeated_uint64_extension, 1));
  1532. EXPECT_EQ(505, message.GetExtension(UNITTEST::repeated_sint32_extension, 1));
  1533. EXPECT_EQ(506, message.GetExtension(UNITTEST::repeated_sint64_extension, 1));
  1534. EXPECT_EQ(507, message.GetExtension(UNITTEST::repeated_fixed32_extension, 1));
  1535. EXPECT_EQ(508, message.GetExtension(UNITTEST::repeated_fixed64_extension, 1));
  1536. EXPECT_EQ(509,
  1537. message.GetExtension(UNITTEST::repeated_sfixed32_extension, 1));
  1538. EXPECT_EQ(510,
  1539. message.GetExtension(UNITTEST::repeated_sfixed64_extension, 1));
  1540. EXPECT_EQ(511, message.GetExtension(UNITTEST::repeated_float_extension, 1));
  1541. EXPECT_EQ(512, message.GetExtension(UNITTEST::repeated_double_extension, 1));
  1542. EXPECT_TRUE(message.GetExtension(UNITTEST::repeated_bool_extension, 1));
  1543. EXPECT_EQ("515",
  1544. message.GetExtension(UNITTEST::repeated_string_extension, 1));
  1545. EXPECT_EQ("516", message.GetExtension(UNITTEST::repeated_bytes_extension, 1));
  1546. EXPECT_EQ(517,
  1547. message.GetExtension(UNITTEST::repeatedgroup_extension, 1).a());
  1548. EXPECT_EQ(518,
  1549. message.GetExtension(UNITTEST::repeated_nested_message_extension, 1)
  1550. .bb());
  1551. EXPECT_EQ(
  1552. 519, message.GetExtension(UNITTEST::repeated_foreign_message_extension, 1)
  1553. .c());
  1554. EXPECT_EQ(
  1555. 520,
  1556. message.GetExtension(UNITTEST::repeated_import_message_extension, 1).d());
  1557. EXPECT_EQ(
  1558. 527,
  1559. message.GetExtension(UNITTEST::repeated_lazy_message_extension, 1).bb());
  1560. EXPECT_EQ(UNITTEST::TestAllTypes::FOO,
  1561. message.GetExtension(UNITTEST::repeated_nested_enum_extension, 1));
  1562. EXPECT_EQ(UNITTEST::FOREIGN_FOO,
  1563. message.GetExtension(UNITTEST::repeated_foreign_enum_extension, 1));
  1564. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_FOO,
  1565. message.GetExtension(UNITTEST::repeated_import_enum_extension, 1));
  1566. EXPECT_EQ("524",
  1567. message.GetExtension(UNITTEST::repeated_string_piece_extension, 1));
  1568. EXPECT_EQ("525", message.GetExtension(UNITTEST::repeated_cord_extension, 1));
  1569. }
  1570. // -------------------------------------------------------------------
  1571. inline void TestUtil::SetPackedExtensions(
  1572. UNITTEST::TestPackedExtensions* message) {
  1573. message->AddExtension(UNITTEST::packed_int32_extension, 601);
  1574. message->AddExtension(UNITTEST::packed_int64_extension, 602);
  1575. message->AddExtension(UNITTEST::packed_uint32_extension, 603);
  1576. message->AddExtension(UNITTEST::packed_uint64_extension, 604);
  1577. message->AddExtension(UNITTEST::packed_sint32_extension, 605);
  1578. message->AddExtension(UNITTEST::packed_sint64_extension, 606);
  1579. message->AddExtension(UNITTEST::packed_fixed32_extension, 607);
  1580. message->AddExtension(UNITTEST::packed_fixed64_extension, 608);
  1581. message->AddExtension(UNITTEST::packed_sfixed32_extension, 609);
  1582. message->AddExtension(UNITTEST::packed_sfixed64_extension, 610);
  1583. message->AddExtension(UNITTEST::packed_float_extension, 611);
  1584. message->AddExtension(UNITTEST::packed_double_extension, 612);
  1585. message->AddExtension(UNITTEST::packed_bool_extension, true);
  1586. message->AddExtension(UNITTEST::packed_enum_extension, UNITTEST::FOREIGN_BAR);
  1587. // add a second one of each field
  1588. message->AddExtension(UNITTEST::packed_int32_extension, 701);
  1589. message->AddExtension(UNITTEST::packed_int64_extension, 702);
  1590. message->AddExtension(UNITTEST::packed_uint32_extension, 703);
  1591. message->AddExtension(UNITTEST::packed_uint64_extension, 704);
  1592. message->AddExtension(UNITTEST::packed_sint32_extension, 705);
  1593. message->AddExtension(UNITTEST::packed_sint64_extension, 706);
  1594. message->AddExtension(UNITTEST::packed_fixed32_extension, 707);
  1595. message->AddExtension(UNITTEST::packed_fixed64_extension, 708);
  1596. message->AddExtension(UNITTEST::packed_sfixed32_extension, 709);
  1597. message->AddExtension(UNITTEST::packed_sfixed64_extension, 710);
  1598. message->AddExtension(UNITTEST::packed_float_extension, 711);
  1599. message->AddExtension(UNITTEST::packed_double_extension, 712);
  1600. message->AddExtension(UNITTEST::packed_bool_extension, false);
  1601. message->AddExtension(UNITTEST::packed_enum_extension, UNITTEST::FOREIGN_BAZ);
  1602. }
  1603. // -------------------------------------------------------------------
  1604. inline void TestUtil::ExpectPackedExtensionsSet(
  1605. const UNITTEST::TestPackedExtensions& message) {
  1606. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_int32_extension));
  1607. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_int64_extension));
  1608. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_uint32_extension));
  1609. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_uint64_extension));
  1610. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_sint32_extension));
  1611. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_sint64_extension));
  1612. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_fixed32_extension));
  1613. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_fixed64_extension));
  1614. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_sfixed32_extension));
  1615. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_sfixed64_extension));
  1616. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_float_extension));
  1617. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_double_extension));
  1618. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_bool_extension));
  1619. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::packed_enum_extension));
  1620. EXPECT_EQ(601, message.GetExtension(UNITTEST::packed_int32_extension, 0));
  1621. EXPECT_EQ(602, message.GetExtension(UNITTEST::packed_int64_extension, 0));
  1622. EXPECT_EQ(603, message.GetExtension(UNITTEST::packed_uint32_extension, 0));
  1623. EXPECT_EQ(604, message.GetExtension(UNITTEST::packed_uint64_extension, 0));
  1624. EXPECT_EQ(605, message.GetExtension(UNITTEST::packed_sint32_extension, 0));
  1625. EXPECT_EQ(606, message.GetExtension(UNITTEST::packed_sint64_extension, 0));
  1626. EXPECT_EQ(607, message.GetExtension(UNITTEST::packed_fixed32_extension, 0));
  1627. EXPECT_EQ(608, message.GetExtension(UNITTEST::packed_fixed64_extension, 0));
  1628. EXPECT_EQ(609, message.GetExtension(UNITTEST::packed_sfixed32_extension, 0));
  1629. EXPECT_EQ(610, message.GetExtension(UNITTEST::packed_sfixed64_extension, 0));
  1630. EXPECT_EQ(611, message.GetExtension(UNITTEST::packed_float_extension, 0));
  1631. EXPECT_EQ(612, message.GetExtension(UNITTEST::packed_double_extension, 0));
  1632. EXPECT_TRUE(message.GetExtension(UNITTEST::packed_bool_extension, 0));
  1633. EXPECT_EQ(UNITTEST::FOREIGN_BAR,
  1634. message.GetExtension(UNITTEST::packed_enum_extension, 0));
  1635. EXPECT_EQ(701, message.GetExtension(UNITTEST::packed_int32_extension, 1));
  1636. EXPECT_EQ(702, message.GetExtension(UNITTEST::packed_int64_extension, 1));
  1637. EXPECT_EQ(703, message.GetExtension(UNITTEST::packed_uint32_extension, 1));
  1638. EXPECT_EQ(704, message.GetExtension(UNITTEST::packed_uint64_extension, 1));
  1639. EXPECT_EQ(705, message.GetExtension(UNITTEST::packed_sint32_extension, 1));
  1640. EXPECT_EQ(706, message.GetExtension(UNITTEST::packed_sint64_extension, 1));
  1641. EXPECT_EQ(707, message.GetExtension(UNITTEST::packed_fixed32_extension, 1));
  1642. EXPECT_EQ(708, message.GetExtension(UNITTEST::packed_fixed64_extension, 1));
  1643. EXPECT_EQ(709, message.GetExtension(UNITTEST::packed_sfixed32_extension, 1));
  1644. EXPECT_EQ(710, message.GetExtension(UNITTEST::packed_sfixed64_extension, 1));
  1645. EXPECT_EQ(711, message.GetExtension(UNITTEST::packed_float_extension, 1));
  1646. EXPECT_EQ(712, message.GetExtension(UNITTEST::packed_double_extension, 1));
  1647. EXPECT_FALSE(message.GetExtension(UNITTEST::packed_bool_extension, 1));
  1648. EXPECT_EQ(UNITTEST::FOREIGN_BAZ,
  1649. message.GetExtension(UNITTEST::packed_enum_extension, 1));
  1650. }
  1651. // -------------------------------------------------------------------
  1652. inline void TestUtil::ExpectUnpackedExtensionsSet(
  1653. const UNITTEST::TestUnpackedExtensions& message) {
  1654. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_int32_extension));
  1655. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_int64_extension));
  1656. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_uint32_extension));
  1657. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_uint64_extension));
  1658. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_sint32_extension));
  1659. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_sint64_extension));
  1660. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_fixed32_extension));
  1661. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_fixed64_extension));
  1662. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_sfixed32_extension));
  1663. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_sfixed64_extension));
  1664. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_float_extension));
  1665. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_double_extension));
  1666. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_bool_extension));
  1667. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::unpacked_enum_extension));
  1668. EXPECT_EQ(601, message.GetExtension(UNITTEST::unpacked_int32_extension, 0));
  1669. EXPECT_EQ(602, message.GetExtension(UNITTEST::unpacked_int64_extension, 0));
  1670. EXPECT_EQ(603, message.GetExtension(UNITTEST::unpacked_uint32_extension, 0));
  1671. EXPECT_EQ(604, message.GetExtension(UNITTEST::unpacked_uint64_extension, 0));
  1672. EXPECT_EQ(605, message.GetExtension(UNITTEST::unpacked_sint32_extension, 0));
  1673. EXPECT_EQ(606, message.GetExtension(UNITTEST::unpacked_sint64_extension, 0));
  1674. EXPECT_EQ(607, message.GetExtension(UNITTEST::unpacked_fixed32_extension, 0));
  1675. EXPECT_EQ(608, message.GetExtension(UNITTEST::unpacked_fixed64_extension, 0));
  1676. EXPECT_EQ(609,
  1677. message.GetExtension(UNITTEST::unpacked_sfixed32_extension, 0));
  1678. EXPECT_EQ(610,
  1679. message.GetExtension(UNITTEST::unpacked_sfixed64_extension, 0));
  1680. EXPECT_EQ(611, message.GetExtension(UNITTEST::unpacked_float_extension, 0));
  1681. EXPECT_EQ(612, message.GetExtension(UNITTEST::unpacked_double_extension, 0));
  1682. EXPECT_EQ(true, message.GetExtension(UNITTEST::unpacked_bool_extension, 0));
  1683. EXPECT_EQ(UNITTEST::FOREIGN_BAR,
  1684. message.GetExtension(UNITTEST::unpacked_enum_extension, 0));
  1685. EXPECT_EQ(701, message.GetExtension(UNITTEST::unpacked_int32_extension, 1));
  1686. EXPECT_EQ(702, message.GetExtension(UNITTEST::unpacked_int64_extension, 1));
  1687. EXPECT_EQ(703, message.GetExtension(UNITTEST::unpacked_uint32_extension, 1));
  1688. EXPECT_EQ(704, message.GetExtension(UNITTEST::unpacked_uint64_extension, 1));
  1689. EXPECT_EQ(705, message.GetExtension(UNITTEST::unpacked_sint32_extension, 1));
  1690. EXPECT_EQ(706, message.GetExtension(UNITTEST::unpacked_sint64_extension, 1));
  1691. EXPECT_EQ(707, message.GetExtension(UNITTEST::unpacked_fixed32_extension, 1));
  1692. EXPECT_EQ(708, message.GetExtension(UNITTEST::unpacked_fixed64_extension, 1));
  1693. EXPECT_EQ(709,
  1694. message.GetExtension(UNITTEST::unpacked_sfixed32_extension, 1));
  1695. EXPECT_EQ(710,
  1696. message.GetExtension(UNITTEST::unpacked_sfixed64_extension, 1));
  1697. EXPECT_EQ(711, message.GetExtension(UNITTEST::unpacked_float_extension, 1));
  1698. EXPECT_EQ(712, message.GetExtension(UNITTEST::unpacked_double_extension, 1));
  1699. EXPECT_EQ(false, message.GetExtension(UNITTEST::unpacked_bool_extension, 1));
  1700. EXPECT_EQ(UNITTEST::FOREIGN_BAZ,
  1701. message.GetExtension(UNITTEST::unpacked_enum_extension, 1));
  1702. }
  1703. // -------------------------------------------------------------------
  1704. inline void TestUtil::ExpectLastRepeatedsRemoved(
  1705. const UNITTEST::TestAllTypes& message) {
  1706. ASSERT_EQ(1, message.repeated_int32_size());
  1707. ASSERT_EQ(1, message.repeated_int64_size());
  1708. ASSERT_EQ(1, message.repeated_uint32_size());
  1709. ASSERT_EQ(1, message.repeated_uint64_size());
  1710. ASSERT_EQ(1, message.repeated_sint32_size());
  1711. ASSERT_EQ(1, message.repeated_sint64_size());
  1712. ASSERT_EQ(1, message.repeated_fixed32_size());
  1713. ASSERT_EQ(1, message.repeated_fixed64_size());
  1714. ASSERT_EQ(1, message.repeated_sfixed32_size());
  1715. ASSERT_EQ(1, message.repeated_sfixed64_size());
  1716. ASSERT_EQ(1, message.repeated_float_size());
  1717. ASSERT_EQ(1, message.repeated_double_size());
  1718. ASSERT_EQ(1, message.repeated_bool_size());
  1719. ASSERT_EQ(1, message.repeated_string_size());
  1720. ASSERT_EQ(1, message.repeated_bytes_size());
  1721. ASSERT_EQ(1, message.repeatedgroup_size());
  1722. ASSERT_EQ(1, message.repeated_nested_message_size());
  1723. ASSERT_EQ(1, message.repeated_foreign_message_size());
  1724. ASSERT_EQ(1, message.repeated_import_message_size());
  1725. ASSERT_EQ(1, message.repeated_import_message_size());
  1726. ASSERT_EQ(1, message.repeated_nested_enum_size());
  1727. ASSERT_EQ(1, message.repeated_foreign_enum_size());
  1728. ASSERT_EQ(1, message.repeated_import_enum_size());
  1729. #ifndef PROTOBUF_TEST_NO_DESCRIPTORS
  1730. ASSERT_EQ(1, message.repeated_string_piece_size());
  1731. ASSERT_EQ(1, message.repeated_cord_size());
  1732. #endif
  1733. // Test that the remaining element is the correct one.
  1734. EXPECT_EQ(201, message.repeated_int32(0));
  1735. EXPECT_EQ(202, message.repeated_int64(0));
  1736. EXPECT_EQ(203, message.repeated_uint32(0));
  1737. EXPECT_EQ(204, message.repeated_uint64(0));
  1738. EXPECT_EQ(205, message.repeated_sint32(0));
  1739. EXPECT_EQ(206, message.repeated_sint64(0));
  1740. EXPECT_EQ(207, message.repeated_fixed32(0));
  1741. EXPECT_EQ(208, message.repeated_fixed64(0));
  1742. EXPECT_EQ(209, message.repeated_sfixed32(0));
  1743. EXPECT_EQ(210, message.repeated_sfixed64(0));
  1744. EXPECT_EQ(211, message.repeated_float(0));
  1745. EXPECT_EQ(212, message.repeated_double(0));
  1746. EXPECT_TRUE(message.repeated_bool(0));
  1747. EXPECT_EQ("215", message.repeated_string(0));
  1748. EXPECT_EQ("216", message.repeated_bytes(0));
  1749. EXPECT_EQ(217, message.repeatedgroup(0).a());
  1750. EXPECT_EQ(218, message.repeated_nested_message(0).bb());
  1751. EXPECT_EQ(219, message.repeated_foreign_message(0).c());
  1752. EXPECT_EQ(220, message.repeated_import_message(0).d());
  1753. EXPECT_EQ(220, message.repeated_import_message(0).d());
  1754. EXPECT_EQ(UNITTEST::TestAllTypes::BAR, message.repeated_nested_enum(0));
  1755. EXPECT_EQ(UNITTEST::FOREIGN_BAR, message.repeated_foreign_enum(0));
  1756. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAR, message.repeated_import_enum(0));
  1757. }
  1758. inline void TestUtil::ExpectLastRepeatedExtensionsRemoved(
  1759. const UNITTEST::TestAllExtensions& message) {
  1760. // Test that one element was removed.
  1761. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_int32_extension));
  1762. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_int64_extension));
  1763. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_uint32_extension));
  1764. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_uint64_extension));
  1765. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_sint32_extension));
  1766. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_sint64_extension));
  1767. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_fixed32_extension));
  1768. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_fixed64_extension));
  1769. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_sfixed32_extension));
  1770. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_sfixed64_extension));
  1771. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_float_extension));
  1772. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_double_extension));
  1773. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_bool_extension));
  1774. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_string_extension));
  1775. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_bytes_extension));
  1776. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeatedgroup_extension));
  1777. ASSERT_EQ(1,
  1778. message.ExtensionSize(UNITTEST::repeated_nested_message_extension));
  1779. ASSERT_EQ(
  1780. 1, message.ExtensionSize(UNITTEST::repeated_foreign_message_extension));
  1781. ASSERT_EQ(1,
  1782. message.ExtensionSize(UNITTEST::repeated_import_message_extension));
  1783. ASSERT_EQ(1,
  1784. message.ExtensionSize(UNITTEST::repeated_lazy_message_extension));
  1785. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_nested_enum_extension));
  1786. ASSERT_EQ(1,
  1787. message.ExtensionSize(UNITTEST::repeated_foreign_enum_extension));
  1788. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_import_enum_extension));
  1789. ASSERT_EQ(1,
  1790. message.ExtensionSize(UNITTEST::repeated_string_piece_extension));
  1791. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeated_cord_extension));
  1792. // Test that the remaining element is the correct one.
  1793. EXPECT_EQ(201, message.GetExtension(UNITTEST::repeated_int32_extension, 0));
  1794. EXPECT_EQ(202, message.GetExtension(UNITTEST::repeated_int64_extension, 0));
  1795. EXPECT_EQ(203, message.GetExtension(UNITTEST::repeated_uint32_extension, 0));
  1796. EXPECT_EQ(204, message.GetExtension(UNITTEST::repeated_uint64_extension, 0));
  1797. EXPECT_EQ(205, message.GetExtension(UNITTEST::repeated_sint32_extension, 0));
  1798. EXPECT_EQ(206, message.GetExtension(UNITTEST::repeated_sint64_extension, 0));
  1799. EXPECT_EQ(207, message.GetExtension(UNITTEST::repeated_fixed32_extension, 0));
  1800. EXPECT_EQ(208, message.GetExtension(UNITTEST::repeated_fixed64_extension, 0));
  1801. EXPECT_EQ(209,
  1802. message.GetExtension(UNITTEST::repeated_sfixed32_extension, 0));
  1803. EXPECT_EQ(210,
  1804. message.GetExtension(UNITTEST::repeated_sfixed64_extension, 0));
  1805. EXPECT_EQ(211, message.GetExtension(UNITTEST::repeated_float_extension, 0));
  1806. EXPECT_EQ(212, message.GetExtension(UNITTEST::repeated_double_extension, 0));
  1807. EXPECT_TRUE(message.GetExtension(UNITTEST::repeated_bool_extension, 0));
  1808. EXPECT_EQ("215",
  1809. message.GetExtension(UNITTEST::repeated_string_extension, 0));
  1810. EXPECT_EQ("216", message.GetExtension(UNITTEST::repeated_bytes_extension, 0));
  1811. EXPECT_EQ(217,
  1812. message.GetExtension(UNITTEST::repeatedgroup_extension, 0).a());
  1813. EXPECT_EQ(218,
  1814. message.GetExtension(UNITTEST::repeated_nested_message_extension, 0)
  1815. .bb());
  1816. EXPECT_EQ(
  1817. 219, message.GetExtension(UNITTEST::repeated_foreign_message_extension, 0)
  1818. .c());
  1819. EXPECT_EQ(
  1820. 220,
  1821. message.GetExtension(UNITTEST::repeated_import_message_extension, 0).d());
  1822. EXPECT_EQ(
  1823. 227,
  1824. message.GetExtension(UNITTEST::repeated_lazy_message_extension, 0).bb());
  1825. EXPECT_EQ(UNITTEST::TestAllTypes::BAR,
  1826. message.GetExtension(UNITTEST::repeated_nested_enum_extension, 0));
  1827. EXPECT_EQ(UNITTEST::FOREIGN_BAR,
  1828. message.GetExtension(UNITTEST::repeated_foreign_enum_extension, 0));
  1829. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAR,
  1830. message.GetExtension(UNITTEST::repeated_import_enum_extension, 0));
  1831. EXPECT_EQ("224",
  1832. message.GetExtension(UNITTEST::repeated_string_piece_extension, 0));
  1833. EXPECT_EQ("225", message.GetExtension(UNITTEST::repeated_cord_extension, 0));
  1834. }
  1835. inline void TestUtil::ExpectLastRepeatedsReleased(
  1836. const UNITTEST::TestAllTypes& message) {
  1837. ASSERT_EQ(1, message.repeatedgroup_size());
  1838. ASSERT_EQ(1, message.repeated_nested_message_size());
  1839. ASSERT_EQ(1, message.repeated_foreign_message_size());
  1840. ASSERT_EQ(1, message.repeated_import_message_size());
  1841. ASSERT_EQ(1, message.repeated_import_message_size());
  1842. EXPECT_EQ(217, message.repeatedgroup(0).a());
  1843. EXPECT_EQ(218, message.repeated_nested_message(0).bb());
  1844. EXPECT_EQ(219, message.repeated_foreign_message(0).c());
  1845. EXPECT_EQ(220, message.repeated_import_message(0).d());
  1846. EXPECT_EQ(220, message.repeated_import_message(0).d());
  1847. }
  1848. inline void TestUtil::ExpectLastRepeatedExtensionsReleased(
  1849. const UNITTEST::TestAllExtensions& message) {
  1850. ASSERT_EQ(1, message.ExtensionSize(UNITTEST::repeatedgroup_extension));
  1851. ASSERT_EQ(1,
  1852. message.ExtensionSize(UNITTEST::repeated_nested_message_extension));
  1853. ASSERT_EQ(
  1854. 1, message.ExtensionSize(UNITTEST::repeated_foreign_message_extension));
  1855. ASSERT_EQ(1,
  1856. message.ExtensionSize(UNITTEST::repeated_import_message_extension));
  1857. ASSERT_EQ(1,
  1858. message.ExtensionSize(UNITTEST::repeated_lazy_message_extension));
  1859. EXPECT_EQ(217,
  1860. message.GetExtension(UNITTEST::repeatedgroup_extension, 0).a());
  1861. EXPECT_EQ(218,
  1862. message.GetExtension(UNITTEST::repeated_nested_message_extension, 0)
  1863. .bb());
  1864. EXPECT_EQ(
  1865. 219, message.GetExtension(UNITTEST::repeated_foreign_message_extension, 0)
  1866. .c());
  1867. EXPECT_EQ(
  1868. 220,
  1869. message.GetExtension(UNITTEST::repeated_import_message_extension, 0).d());
  1870. EXPECT_EQ(
  1871. 227,
  1872. message.GetExtension(UNITTEST::repeated_lazy_message_extension, 0).bb());
  1873. }
  1874. inline void TestUtil::ExpectRepeatedsSwapped(
  1875. const UNITTEST::TestAllTypes& message) {
  1876. ASSERT_EQ(2, message.repeated_int32_size());
  1877. ASSERT_EQ(2, message.repeated_int64_size());
  1878. ASSERT_EQ(2, message.repeated_uint32_size());
  1879. ASSERT_EQ(2, message.repeated_uint64_size());
  1880. ASSERT_EQ(2, message.repeated_sint32_size());
  1881. ASSERT_EQ(2, message.repeated_sint64_size());
  1882. ASSERT_EQ(2, message.repeated_fixed32_size());
  1883. ASSERT_EQ(2, message.repeated_fixed64_size());
  1884. ASSERT_EQ(2, message.repeated_sfixed32_size());
  1885. ASSERT_EQ(2, message.repeated_sfixed64_size());
  1886. ASSERT_EQ(2, message.repeated_float_size());
  1887. ASSERT_EQ(2, message.repeated_double_size());
  1888. ASSERT_EQ(2, message.repeated_bool_size());
  1889. ASSERT_EQ(2, message.repeated_string_size());
  1890. ASSERT_EQ(2, message.repeated_bytes_size());
  1891. ASSERT_EQ(2, message.repeatedgroup_size());
  1892. ASSERT_EQ(2, message.repeated_nested_message_size());
  1893. ASSERT_EQ(2, message.repeated_foreign_message_size());
  1894. ASSERT_EQ(2, message.repeated_import_message_size());
  1895. ASSERT_EQ(2, message.repeated_import_message_size());
  1896. ASSERT_EQ(2, message.repeated_nested_enum_size());
  1897. ASSERT_EQ(2, message.repeated_foreign_enum_size());
  1898. ASSERT_EQ(2, message.repeated_import_enum_size());
  1899. #ifndef PROTOBUF_TEST_NO_DESCRIPTORS
  1900. ASSERT_EQ(2, message.repeated_string_piece_size());
  1901. ASSERT_EQ(2, message.repeated_cord_size());
  1902. #endif
  1903. // Test that the first element and second element are flipped.
  1904. EXPECT_EQ(201, message.repeated_int32(1));
  1905. EXPECT_EQ(202, message.repeated_int64(1));
  1906. EXPECT_EQ(203, message.repeated_uint32(1));
  1907. EXPECT_EQ(204, message.repeated_uint64(1));
  1908. EXPECT_EQ(205, message.repeated_sint32(1));
  1909. EXPECT_EQ(206, message.repeated_sint64(1));
  1910. EXPECT_EQ(207, message.repeated_fixed32(1));
  1911. EXPECT_EQ(208, message.repeated_fixed64(1));
  1912. EXPECT_EQ(209, message.repeated_sfixed32(1));
  1913. EXPECT_EQ(210, message.repeated_sfixed64(1));
  1914. EXPECT_EQ(211, message.repeated_float(1));
  1915. EXPECT_EQ(212, message.repeated_double(1));
  1916. EXPECT_TRUE(message.repeated_bool(1));
  1917. EXPECT_EQ("215", message.repeated_string(1));
  1918. EXPECT_EQ("216", message.repeated_bytes(1));
  1919. EXPECT_EQ(217, message.repeatedgroup(1).a());
  1920. EXPECT_EQ(218, message.repeated_nested_message(1).bb());
  1921. EXPECT_EQ(219, message.repeated_foreign_message(1).c());
  1922. EXPECT_EQ(220, message.repeated_import_message(1).d());
  1923. EXPECT_EQ(220, message.repeated_import_message(1).d());
  1924. EXPECT_EQ(UNITTEST::TestAllTypes::BAR, message.repeated_nested_enum(1));
  1925. EXPECT_EQ(UNITTEST::FOREIGN_BAR, message.repeated_foreign_enum(1));
  1926. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAR, message.repeated_import_enum(1));
  1927. EXPECT_EQ(301, message.repeated_int32(0));
  1928. EXPECT_EQ(302, message.repeated_int64(0));
  1929. EXPECT_EQ(303, message.repeated_uint32(0));
  1930. EXPECT_EQ(304, message.repeated_uint64(0));
  1931. EXPECT_EQ(305, message.repeated_sint32(0));
  1932. EXPECT_EQ(306, message.repeated_sint64(0));
  1933. EXPECT_EQ(307, message.repeated_fixed32(0));
  1934. EXPECT_EQ(308, message.repeated_fixed64(0));
  1935. EXPECT_EQ(309, message.repeated_sfixed32(0));
  1936. EXPECT_EQ(310, message.repeated_sfixed64(0));
  1937. EXPECT_EQ(311, message.repeated_float(0));
  1938. EXPECT_EQ(312, message.repeated_double(0));
  1939. EXPECT_FALSE(message.repeated_bool(0));
  1940. EXPECT_EQ("315", message.repeated_string(0));
  1941. EXPECT_EQ("316", message.repeated_bytes(0));
  1942. EXPECT_EQ(317, message.repeatedgroup(0).a());
  1943. EXPECT_EQ(318, message.repeated_nested_message(0).bb());
  1944. EXPECT_EQ(319, message.repeated_foreign_message(0).c());
  1945. EXPECT_EQ(320, message.repeated_import_message(0).d());
  1946. EXPECT_EQ(320, message.repeated_import_message(0).d());
  1947. EXPECT_EQ(UNITTEST::TestAllTypes::BAZ, message.repeated_nested_enum(0));
  1948. EXPECT_EQ(UNITTEST::FOREIGN_BAZ, message.repeated_foreign_enum(0));
  1949. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAZ, message.repeated_import_enum(0));
  1950. }
  1951. inline void TestUtil::ExpectRepeatedExtensionsSwapped(
  1952. const UNITTEST::TestAllExtensions& message) {
  1953. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_int32_extension));
  1954. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_int64_extension));
  1955. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_uint32_extension));
  1956. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_uint64_extension));
  1957. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_sint32_extension));
  1958. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_sint64_extension));
  1959. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_fixed32_extension));
  1960. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_fixed64_extension));
  1961. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_sfixed32_extension));
  1962. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_sfixed64_extension));
  1963. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_float_extension));
  1964. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_double_extension));
  1965. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_bool_extension));
  1966. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_string_extension));
  1967. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_bytes_extension));
  1968. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeatedgroup_extension));
  1969. ASSERT_EQ(2,
  1970. message.ExtensionSize(UNITTEST::repeated_nested_message_extension));
  1971. ASSERT_EQ(
  1972. 2, message.ExtensionSize(UNITTEST::repeated_foreign_message_extension));
  1973. ASSERT_EQ(2,
  1974. message.ExtensionSize(UNITTEST::repeated_import_message_extension));
  1975. ASSERT_EQ(2,
  1976. message.ExtensionSize(UNITTEST::repeated_lazy_message_extension));
  1977. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_nested_enum_extension));
  1978. ASSERT_EQ(2,
  1979. message.ExtensionSize(UNITTEST::repeated_foreign_enum_extension));
  1980. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_import_enum_extension));
  1981. ASSERT_EQ(2,
  1982. message.ExtensionSize(UNITTEST::repeated_string_piece_extension));
  1983. ASSERT_EQ(2, message.ExtensionSize(UNITTEST::repeated_cord_extension));
  1984. EXPECT_EQ(201, message.GetExtension(UNITTEST::repeated_int32_extension, 1));
  1985. EXPECT_EQ(202, message.GetExtension(UNITTEST::repeated_int64_extension, 1));
  1986. EXPECT_EQ(203, message.GetExtension(UNITTEST::repeated_uint32_extension, 1));
  1987. EXPECT_EQ(204, message.GetExtension(UNITTEST::repeated_uint64_extension, 1));
  1988. EXPECT_EQ(205, message.GetExtension(UNITTEST::repeated_sint32_extension, 1));
  1989. EXPECT_EQ(206, message.GetExtension(UNITTEST::repeated_sint64_extension, 1));
  1990. EXPECT_EQ(207, message.GetExtension(UNITTEST::repeated_fixed32_extension, 1));
  1991. EXPECT_EQ(208, message.GetExtension(UNITTEST::repeated_fixed64_extension, 1));
  1992. EXPECT_EQ(209,
  1993. message.GetExtension(UNITTEST::repeated_sfixed32_extension, 1));
  1994. EXPECT_EQ(210,
  1995. message.GetExtension(UNITTEST::repeated_sfixed64_extension, 1));
  1996. EXPECT_EQ(211, message.GetExtension(UNITTEST::repeated_float_extension, 1));
  1997. EXPECT_EQ(212, message.GetExtension(UNITTEST::repeated_double_extension, 1));
  1998. EXPECT_TRUE(message.GetExtension(UNITTEST::repeated_bool_extension, 1));
  1999. EXPECT_EQ("215",
  2000. message.GetExtension(UNITTEST::repeated_string_extension, 1));
  2001. EXPECT_EQ("216", message.GetExtension(UNITTEST::repeated_bytes_extension, 1));
  2002. EXPECT_EQ(217,
  2003. message.GetExtension(UNITTEST::repeatedgroup_extension, 1).a());
  2004. EXPECT_EQ(218,
  2005. message.GetExtension(UNITTEST::repeated_nested_message_extension, 1)
  2006. .bb());
  2007. EXPECT_EQ(
  2008. 219, message.GetExtension(UNITTEST::repeated_foreign_message_extension, 1)
  2009. .c());
  2010. EXPECT_EQ(
  2011. 220,
  2012. message.GetExtension(UNITTEST::repeated_import_message_extension, 1).d());
  2013. EXPECT_EQ(
  2014. 227,
  2015. message.GetExtension(UNITTEST::repeated_lazy_message_extension, 1).bb());
  2016. EXPECT_EQ(UNITTEST::TestAllTypes::BAR,
  2017. message.GetExtension(UNITTEST::repeated_nested_enum_extension, 1));
  2018. EXPECT_EQ(UNITTEST::FOREIGN_BAR,
  2019. message.GetExtension(UNITTEST::repeated_foreign_enum_extension, 1));
  2020. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAR,
  2021. message.GetExtension(UNITTEST::repeated_import_enum_extension, 1));
  2022. EXPECT_EQ("224",
  2023. message.GetExtension(UNITTEST::repeated_string_piece_extension, 1));
  2024. EXPECT_EQ("225", message.GetExtension(UNITTEST::repeated_cord_extension, 1));
  2025. EXPECT_EQ(301, message.GetExtension(UNITTEST::repeated_int32_extension, 0));
  2026. EXPECT_EQ(302, message.GetExtension(UNITTEST::repeated_int64_extension, 0));
  2027. EXPECT_EQ(303, message.GetExtension(UNITTEST::repeated_uint32_extension, 0));
  2028. EXPECT_EQ(304, message.GetExtension(UNITTEST::repeated_uint64_extension, 0));
  2029. EXPECT_EQ(305, message.GetExtension(UNITTEST::repeated_sint32_extension, 0));
  2030. EXPECT_EQ(306, message.GetExtension(UNITTEST::repeated_sint64_extension, 0));
  2031. EXPECT_EQ(307, message.GetExtension(UNITTEST::repeated_fixed32_extension, 0));
  2032. EXPECT_EQ(308, message.GetExtension(UNITTEST::repeated_fixed64_extension, 0));
  2033. EXPECT_EQ(309,
  2034. message.GetExtension(UNITTEST::repeated_sfixed32_extension, 0));
  2035. EXPECT_EQ(310,
  2036. message.GetExtension(UNITTEST::repeated_sfixed64_extension, 0));
  2037. EXPECT_EQ(311, message.GetExtension(UNITTEST::repeated_float_extension, 0));
  2038. EXPECT_EQ(312, message.GetExtension(UNITTEST::repeated_double_extension, 0));
  2039. EXPECT_FALSE(message.GetExtension(UNITTEST::repeated_bool_extension, 0));
  2040. EXPECT_EQ("315",
  2041. message.GetExtension(UNITTEST::repeated_string_extension, 0));
  2042. EXPECT_EQ("316", message.GetExtension(UNITTEST::repeated_bytes_extension, 0));
  2043. EXPECT_EQ(317,
  2044. message.GetExtension(UNITTEST::repeatedgroup_extension, 0).a());
  2045. EXPECT_EQ(318,
  2046. message.GetExtension(UNITTEST::repeated_nested_message_extension, 0)
  2047. .bb());
  2048. EXPECT_EQ(
  2049. 319, message.GetExtension(UNITTEST::repeated_foreign_message_extension, 0)
  2050. .c());
  2051. EXPECT_EQ(
  2052. 320,
  2053. message.GetExtension(UNITTEST::repeated_import_message_extension, 0).d());
  2054. EXPECT_EQ(
  2055. 327,
  2056. message.GetExtension(UNITTEST::repeated_lazy_message_extension, 0).bb());
  2057. EXPECT_EQ(UNITTEST::TestAllTypes::BAZ,
  2058. message.GetExtension(UNITTEST::repeated_nested_enum_extension, 0));
  2059. EXPECT_EQ(UNITTEST::FOREIGN_BAZ,
  2060. message.GetExtension(UNITTEST::repeated_foreign_enum_extension, 0));
  2061. EXPECT_EQ(UNITTEST_IMPORT::IMPORT_BAZ,
  2062. message.GetExtension(UNITTEST::repeated_import_enum_extension, 0));
  2063. EXPECT_EQ("324",
  2064. message.GetExtension(UNITTEST::repeated_string_piece_extension, 0));
  2065. EXPECT_EQ("325", message.GetExtension(UNITTEST::repeated_cord_extension, 0));
  2066. }
  2067. inline void TestUtil::SetOneof1(UNITTEST::TestOneof2* message) {
  2068. message->mutable_foo_lazy_message()->set_qux_int(100);
  2069. message->set_bar_string("101");
  2070. message->set_baz_int(102);
  2071. message->set_baz_string("103");
  2072. }
  2073. inline void TestUtil::SetOneof2(UNITTEST::TestOneof2* message) {
  2074. message->set_foo_int(200);
  2075. message->set_bar_enum(UNITTEST::TestOneof2::BAZ);
  2076. message->set_baz_int(202);
  2077. message->set_baz_string("203");
  2078. }
  2079. inline void TestUtil::ExpectOneofSet1(const UNITTEST::TestOneof2& message) {
  2080. ExpectAtMostOneFieldSetInOneof(message);
  2081. EXPECT_TRUE(message.has_foo_lazy_message());
  2082. EXPECT_TRUE(message.foo_lazy_message().has_qux_int());
  2083. EXPECT_TRUE(message.has_bar_string());
  2084. EXPECT_TRUE(message.has_baz_int());
  2085. EXPECT_TRUE(message.has_baz_string());
  2086. ASSERT_EQ(0, message.foo_lazy_message().corge_int_size());
  2087. EXPECT_EQ(100, message.foo_lazy_message().qux_int());
  2088. EXPECT_EQ("101", message.bar_string());
  2089. EXPECT_EQ(102, message.baz_int());
  2090. EXPECT_EQ("103", message.baz_string());
  2091. }
  2092. inline void TestUtil::ExpectOneofSet2(const UNITTEST::TestOneof2& message) {
  2093. ExpectAtMostOneFieldSetInOneof(message);
  2094. EXPECT_TRUE(message.has_foo_int());
  2095. EXPECT_TRUE(message.has_bar_enum());
  2096. EXPECT_TRUE(message.has_baz_int());
  2097. EXPECT_TRUE(message.has_baz_string());
  2098. EXPECT_EQ(200, message.foo_int());
  2099. EXPECT_EQ(UNITTEST::TestOneof2::BAZ, message.bar_enum());
  2100. EXPECT_EQ(202, message.baz_int());
  2101. EXPECT_EQ("203", message.baz_string());
  2102. }
  2103. inline void TestUtil::ExpectOneofClear(const UNITTEST::TestOneof2& message) {
  2104. EXPECT_FALSE(message.has_foo_int());
  2105. EXPECT_FALSE(message.has_foo_string());
  2106. EXPECT_FALSE(message.has_foo_bytes());
  2107. EXPECT_FALSE(message.has_foo_enum());
  2108. EXPECT_FALSE(message.has_foo_message());
  2109. EXPECT_FALSE(message.has_foogroup());
  2110. EXPECT_FALSE(message.has_foo_lazy_message());
  2111. EXPECT_FALSE(message.has_bar_int());
  2112. EXPECT_FALSE(message.has_bar_string());
  2113. EXPECT_FALSE(message.has_bar_bytes());
  2114. EXPECT_FALSE(message.has_bar_enum());
  2115. EXPECT_FALSE(message.has_baz_int());
  2116. EXPECT_FALSE(message.has_baz_string());
  2117. EXPECT_EQ(UNITTEST::TestOneof2::FOO_NOT_SET, message.foo_case());
  2118. EXPECT_EQ(UNITTEST::TestOneof2::BAR_NOT_SET, message.bar_case());
  2119. }
  2120. inline void TestUtil::ExpectAtMostOneFieldSetInOneof(
  2121. const UNITTEST::TestOneof2& message) {
  2122. int count = 0;
  2123. if (message.has_foo_int()) count++;
  2124. if (message.has_foo_string()) count++;
  2125. if (message.has_foo_bytes()) count++;
  2126. if (message.has_foo_enum()) count++;
  2127. if (message.has_foo_message()) count++;
  2128. if (message.has_foogroup()) count++;
  2129. if (message.has_foo_lazy_message()) count++;
  2130. EXPECT_LE(count, 1);
  2131. count = 0;
  2132. if (message.has_bar_int()) count++;
  2133. if (message.has_bar_string()) count++;
  2134. if (message.has_bar_bytes()) count++;
  2135. if (message.has_bar_enum()) count++;
  2136. EXPECT_TRUE(count == 0 || count == 1);
  2137. }
  2138. // ===================================================================
  2139. } // namespace protobuf
  2140. } // namespace google