诸暨麻将添加redis
您不能選擇超過 %s 個話題 話題必須以字母或數字為開頭,可包含連接號 ('-') 且最長為 35 個字
 
 
 
 
 
 

1971 行
92 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. #include <google/protobuf/test_util_lite.h>
  34. #include <google/protobuf/stubs/logging.h>
  35. #include <google/protobuf/stubs/common.h>
  36. #include <gtest/gtest.h>
  37. #include <google/protobuf/stubs/strutil.h>
  38. namespace google {
  39. namespace protobuf {
  40. void TestUtilLite::SetAllFields(unittest::TestAllTypesLite* message) {
  41. message->set_optional_int32(101);
  42. message->set_optional_int64(102);
  43. message->set_optional_uint32(103);
  44. message->set_optional_uint64(104);
  45. message->set_optional_sint32(105);
  46. message->set_optional_sint64(106);
  47. message->set_optional_fixed32(107);
  48. message->set_optional_fixed64(108);
  49. message->set_optional_sfixed32(109);
  50. message->set_optional_sfixed64(110);
  51. message->set_optional_float(111);
  52. message->set_optional_double(112);
  53. message->set_optional_bool(true);
  54. message->set_optional_string("115");
  55. message->set_optional_bytes("116");
  56. message->mutable_optionalgroup()->set_a(117);
  57. message->mutable_optional_nested_message()->set_bb(118);
  58. message->mutable_optional_foreign_message()->set_c(119);
  59. message->mutable_optional_import_message()->set_d(120);
  60. message->mutable_optional_public_import_message()->set_e(126);
  61. message->mutable_optional_lazy_message()->set_bb(127);
  62. message->set_optional_nested_enum(unittest::TestAllTypesLite::BAZ);
  63. message->set_optional_foreign_enum(unittest::FOREIGN_LITE_BAZ);
  64. message->set_optional_import_enum(unittest_import::IMPORT_LITE_BAZ);
  65. // -----------------------------------------------------------------
  66. message->add_repeated_int32(201);
  67. message->add_repeated_int64(202);
  68. message->add_repeated_uint32(203);
  69. message->add_repeated_uint64(204);
  70. message->add_repeated_sint32(205);
  71. message->add_repeated_sint64(206);
  72. message->add_repeated_fixed32(207);
  73. message->add_repeated_fixed64(208);
  74. message->add_repeated_sfixed32(209);
  75. message->add_repeated_sfixed64(210);
  76. message->add_repeated_float(211);
  77. message->add_repeated_double(212);
  78. message->add_repeated_bool(true);
  79. message->add_repeated_string("215");
  80. message->add_repeated_bytes("216");
  81. message->add_repeatedgroup()->set_a(217);
  82. message->add_repeated_nested_message()->set_bb(218);
  83. message->add_repeated_foreign_message()->set_c(219);
  84. message->add_repeated_import_message()->set_d(220);
  85. message->add_repeated_lazy_message()->set_bb(227);
  86. message->add_repeated_nested_enum(unittest::TestAllTypesLite::BAR);
  87. message->add_repeated_foreign_enum(unittest::FOREIGN_LITE_BAR);
  88. message->add_repeated_import_enum(unittest_import::IMPORT_LITE_BAR);
  89. // Add a second one of each field.
  90. message->add_repeated_int32(301);
  91. message->add_repeated_int64(302);
  92. message->add_repeated_uint32(303);
  93. message->add_repeated_uint64(304);
  94. message->add_repeated_sint32(305);
  95. message->add_repeated_sint64(306);
  96. message->add_repeated_fixed32(307);
  97. message->add_repeated_fixed64(308);
  98. message->add_repeated_sfixed32(309);
  99. message->add_repeated_sfixed64(310);
  100. message->add_repeated_float(311);
  101. message->add_repeated_double(312);
  102. message->add_repeated_bool(false);
  103. message->add_repeated_string("315");
  104. message->add_repeated_bytes("316");
  105. message->add_repeatedgroup()->set_a(317);
  106. message->add_repeated_nested_message()->set_bb(318);
  107. message->add_repeated_foreign_message()->set_c(319);
  108. message->add_repeated_import_message()->set_d(320);
  109. message->add_repeated_lazy_message()->set_bb(327);
  110. message->add_repeated_nested_enum(unittest::TestAllTypesLite::BAZ);
  111. message->add_repeated_foreign_enum(unittest::FOREIGN_LITE_BAZ);
  112. message->add_repeated_import_enum(unittest_import::IMPORT_LITE_BAZ);
  113. // -----------------------------------------------------------------
  114. message->set_default_int32(401);
  115. message->set_default_int64(402);
  116. message->set_default_uint32(403);
  117. message->set_default_uint64(404);
  118. message->set_default_sint32(405);
  119. message->set_default_sint64(406);
  120. message->set_default_fixed32(407);
  121. message->set_default_fixed64(408);
  122. message->set_default_sfixed32(409);
  123. message->set_default_sfixed64(410);
  124. message->set_default_float(411);
  125. message->set_default_double(412);
  126. message->set_default_bool(false);
  127. message->set_default_string("415");
  128. message->set_default_bytes("416");
  129. message->set_default_nested_enum(unittest::TestAllTypesLite::FOO);
  130. message->set_default_foreign_enum(unittest::FOREIGN_LITE_FOO);
  131. message->set_default_import_enum(unittest_import::IMPORT_LITE_FOO);
  132. message->set_oneof_uint32(601);
  133. message->mutable_oneof_nested_message()->set_bb(602);
  134. message->set_oneof_string("603");
  135. message->set_oneof_bytes("604");
  136. }
  137. // -------------------------------------------------------------------
  138. void TestUtilLite::ModifyRepeatedFields(unittest::TestAllTypesLite* message) {
  139. message->set_repeated_int32(1, 501);
  140. message->set_repeated_int64(1, 502);
  141. message->set_repeated_uint32(1, 503);
  142. message->set_repeated_uint64(1, 504);
  143. message->set_repeated_sint32(1, 505);
  144. message->set_repeated_sint64(1, 506);
  145. message->set_repeated_fixed32(1, 507);
  146. message->set_repeated_fixed64(1, 508);
  147. message->set_repeated_sfixed32(1, 509);
  148. message->set_repeated_sfixed64(1, 510);
  149. message->set_repeated_float(1, 511);
  150. message->set_repeated_double(1, 512);
  151. message->set_repeated_bool(1, true);
  152. message->set_repeated_string(1, "515");
  153. message->set_repeated_bytes(1, "516");
  154. message->mutable_repeatedgroup(1)->set_a(517);
  155. message->mutable_repeated_nested_message(1)->set_bb(518);
  156. message->mutable_repeated_foreign_message(1)->set_c(519);
  157. message->mutable_repeated_import_message(1)->set_d(520);
  158. message->mutable_repeated_lazy_message(1)->set_bb(527);
  159. message->set_repeated_nested_enum(1, unittest::TestAllTypesLite::FOO);
  160. message->set_repeated_foreign_enum(1, unittest::FOREIGN_LITE_FOO);
  161. message->set_repeated_import_enum(1, unittest_import::IMPORT_LITE_FOO);
  162. }
  163. // -------------------------------------------------------------------
  164. void TestUtilLite::ExpectAllFieldsSet(
  165. const unittest::TestAllTypesLite& message) {
  166. EXPECT_TRUE(message.has_optional_int32());
  167. EXPECT_TRUE(message.has_optional_int64());
  168. EXPECT_TRUE(message.has_optional_uint32());
  169. EXPECT_TRUE(message.has_optional_uint64());
  170. EXPECT_TRUE(message.has_optional_sint32());
  171. EXPECT_TRUE(message.has_optional_sint64());
  172. EXPECT_TRUE(message.has_optional_fixed32());
  173. EXPECT_TRUE(message.has_optional_fixed64());
  174. EXPECT_TRUE(message.has_optional_sfixed32());
  175. EXPECT_TRUE(message.has_optional_sfixed64());
  176. EXPECT_TRUE(message.has_optional_float());
  177. EXPECT_TRUE(message.has_optional_double());
  178. EXPECT_TRUE(message.has_optional_bool());
  179. EXPECT_TRUE(message.has_optional_string());
  180. EXPECT_TRUE(message.has_optional_bytes());
  181. EXPECT_TRUE(message.has_optionalgroup());
  182. EXPECT_TRUE(message.has_optional_nested_message());
  183. EXPECT_TRUE(message.has_optional_foreign_message());
  184. EXPECT_TRUE(message.has_optional_import_message());
  185. EXPECT_TRUE(message.has_optional_public_import_message());
  186. EXPECT_TRUE(message.has_optional_lazy_message());
  187. EXPECT_TRUE(message.optionalgroup().has_a());
  188. EXPECT_TRUE(message.optional_nested_message().has_bb());
  189. EXPECT_TRUE(message.optional_foreign_message().has_c());
  190. EXPECT_TRUE(message.optional_import_message().has_d());
  191. EXPECT_TRUE(message.optional_public_import_message().has_e());
  192. EXPECT_TRUE(message.optional_lazy_message().has_bb());
  193. EXPECT_TRUE(message.has_optional_nested_enum());
  194. EXPECT_TRUE(message.has_optional_foreign_enum());
  195. EXPECT_TRUE(message.has_optional_import_enum());
  196. EXPECT_EQ(101, message.optional_int32());
  197. EXPECT_EQ(102, message.optional_int64());
  198. EXPECT_EQ(103, message.optional_uint32());
  199. EXPECT_EQ(104, message.optional_uint64());
  200. EXPECT_EQ(105, message.optional_sint32());
  201. EXPECT_EQ(106, message.optional_sint64());
  202. EXPECT_EQ(107, message.optional_fixed32());
  203. EXPECT_EQ(108, message.optional_fixed64());
  204. EXPECT_EQ(109, message.optional_sfixed32());
  205. EXPECT_EQ(110, message.optional_sfixed64());
  206. EXPECT_EQ(111, message.optional_float());
  207. EXPECT_EQ(112, message.optional_double());
  208. EXPECT_EQ(true, message.optional_bool());
  209. EXPECT_EQ("115", message.optional_string());
  210. EXPECT_EQ("116", message.optional_bytes());
  211. EXPECT_EQ(117, message.optionalgroup().a());
  212. EXPECT_EQ(118, message.optional_nested_message().bb());
  213. EXPECT_EQ(119, message.optional_foreign_message().c());
  214. EXPECT_EQ(120, message.optional_import_message().d());
  215. EXPECT_EQ(126, message.optional_public_import_message().e());
  216. EXPECT_EQ(127, message.optional_lazy_message().bb());
  217. EXPECT_EQ(unittest::TestAllTypesLite::BAZ, message.optional_nested_enum());
  218. EXPECT_EQ(unittest::FOREIGN_LITE_BAZ, message.optional_foreign_enum());
  219. EXPECT_EQ(unittest_import::IMPORT_LITE_BAZ, message.optional_import_enum());
  220. // -----------------------------------------------------------------
  221. ASSERT_EQ(2, message.repeated_int32_size());
  222. ASSERT_EQ(2, message.repeated_int64_size());
  223. ASSERT_EQ(2, message.repeated_uint32_size());
  224. ASSERT_EQ(2, message.repeated_uint64_size());
  225. ASSERT_EQ(2, message.repeated_sint32_size());
  226. ASSERT_EQ(2, message.repeated_sint64_size());
  227. ASSERT_EQ(2, message.repeated_fixed32_size());
  228. ASSERT_EQ(2, message.repeated_fixed64_size());
  229. ASSERT_EQ(2, message.repeated_sfixed32_size());
  230. ASSERT_EQ(2, message.repeated_sfixed64_size());
  231. ASSERT_EQ(2, message.repeated_float_size());
  232. ASSERT_EQ(2, message.repeated_double_size());
  233. ASSERT_EQ(2, message.repeated_bool_size());
  234. ASSERT_EQ(2, message.repeated_string_size());
  235. ASSERT_EQ(2, message.repeated_bytes_size());
  236. ASSERT_EQ(2, message.repeatedgroup_size());
  237. ASSERT_EQ(2, message.repeated_nested_message_size());
  238. ASSERT_EQ(2, message.repeated_foreign_message_size());
  239. ASSERT_EQ(2, message.repeated_import_message_size());
  240. ASSERT_EQ(2, message.repeated_lazy_message_size());
  241. ASSERT_EQ(2, message.repeated_nested_enum_size());
  242. ASSERT_EQ(2, message.repeated_foreign_enum_size());
  243. ASSERT_EQ(2, message.repeated_import_enum_size());
  244. EXPECT_EQ(201, message.repeated_int32(0));
  245. EXPECT_EQ(202, message.repeated_int64(0));
  246. EXPECT_EQ(203, message.repeated_uint32(0));
  247. EXPECT_EQ(204, message.repeated_uint64(0));
  248. EXPECT_EQ(205, message.repeated_sint32(0));
  249. EXPECT_EQ(206, message.repeated_sint64(0));
  250. EXPECT_EQ(207, message.repeated_fixed32(0));
  251. EXPECT_EQ(208, message.repeated_fixed64(0));
  252. EXPECT_EQ(209, message.repeated_sfixed32(0));
  253. EXPECT_EQ(210, message.repeated_sfixed64(0));
  254. EXPECT_EQ(211, message.repeated_float(0));
  255. EXPECT_EQ(212, message.repeated_double(0));
  256. EXPECT_EQ(true, message.repeated_bool(0));
  257. EXPECT_EQ("215", message.repeated_string(0));
  258. EXPECT_EQ("216", message.repeated_bytes(0));
  259. EXPECT_EQ(217, message.repeatedgroup(0).a());
  260. EXPECT_EQ(218, message.repeated_nested_message(0).bb());
  261. EXPECT_EQ(219, message.repeated_foreign_message(0).c());
  262. EXPECT_EQ(220, message.repeated_import_message(0).d());
  263. EXPECT_EQ(227, message.repeated_lazy_message(0).bb());
  264. EXPECT_EQ(unittest::TestAllTypesLite::BAR, message.repeated_nested_enum(0));
  265. EXPECT_EQ(unittest::FOREIGN_LITE_BAR, message.repeated_foreign_enum(0));
  266. EXPECT_EQ(unittest_import::IMPORT_LITE_BAR, message.repeated_import_enum(0));
  267. EXPECT_EQ(301, message.repeated_int32(1));
  268. EXPECT_EQ(302, message.repeated_int64(1));
  269. EXPECT_EQ(303, message.repeated_uint32(1));
  270. EXPECT_EQ(304, message.repeated_uint64(1));
  271. EXPECT_EQ(305, message.repeated_sint32(1));
  272. EXPECT_EQ(306, message.repeated_sint64(1));
  273. EXPECT_EQ(307, message.repeated_fixed32(1));
  274. EXPECT_EQ(308, message.repeated_fixed64(1));
  275. EXPECT_EQ(309, message.repeated_sfixed32(1));
  276. EXPECT_EQ(310, message.repeated_sfixed64(1));
  277. EXPECT_EQ(311, message.repeated_float(1));
  278. EXPECT_EQ(312, message.repeated_double(1));
  279. EXPECT_EQ(false, message.repeated_bool(1));
  280. EXPECT_EQ("315", message.repeated_string(1));
  281. EXPECT_EQ("316", message.repeated_bytes(1));
  282. EXPECT_EQ(317, message.repeatedgroup(1).a());
  283. EXPECT_EQ(318, message.repeated_nested_message(1).bb());
  284. EXPECT_EQ(319, message.repeated_foreign_message(1).c());
  285. EXPECT_EQ(320, message.repeated_import_message(1).d());
  286. EXPECT_EQ(327, message.repeated_lazy_message(1).bb());
  287. EXPECT_EQ(unittest::TestAllTypesLite::BAZ, message.repeated_nested_enum(1));
  288. EXPECT_EQ(unittest::FOREIGN_LITE_BAZ, message.repeated_foreign_enum(1));
  289. EXPECT_EQ(unittest_import::IMPORT_LITE_BAZ, message.repeated_import_enum(1));
  290. // -----------------------------------------------------------------
  291. EXPECT_TRUE(message.has_default_int32());
  292. EXPECT_TRUE(message.has_default_int64());
  293. EXPECT_TRUE(message.has_default_uint32());
  294. EXPECT_TRUE(message.has_default_uint64());
  295. EXPECT_TRUE(message.has_default_sint32());
  296. EXPECT_TRUE(message.has_default_sint64());
  297. EXPECT_TRUE(message.has_default_fixed32());
  298. EXPECT_TRUE(message.has_default_fixed64());
  299. EXPECT_TRUE(message.has_default_sfixed32());
  300. EXPECT_TRUE(message.has_default_sfixed64());
  301. EXPECT_TRUE(message.has_default_float());
  302. EXPECT_TRUE(message.has_default_double());
  303. EXPECT_TRUE(message.has_default_bool());
  304. EXPECT_TRUE(message.has_default_string());
  305. EXPECT_TRUE(message.has_default_bytes());
  306. EXPECT_TRUE(message.has_default_nested_enum());
  307. EXPECT_TRUE(message.has_default_foreign_enum());
  308. EXPECT_TRUE(message.has_default_import_enum());
  309. EXPECT_EQ(401, message.default_int32());
  310. EXPECT_EQ(402, message.default_int64());
  311. EXPECT_EQ(403, message.default_uint32());
  312. EXPECT_EQ(404, message.default_uint64());
  313. EXPECT_EQ(405, message.default_sint32());
  314. EXPECT_EQ(406, message.default_sint64());
  315. EXPECT_EQ(407, message.default_fixed32());
  316. EXPECT_EQ(408, message.default_fixed64());
  317. EXPECT_EQ(409, message.default_sfixed32());
  318. EXPECT_EQ(410, message.default_sfixed64());
  319. EXPECT_EQ(411, message.default_float());
  320. EXPECT_EQ(412, message.default_double());
  321. EXPECT_EQ(false, message.default_bool());
  322. EXPECT_EQ("415", message.default_string());
  323. EXPECT_EQ("416", message.default_bytes());
  324. EXPECT_EQ(unittest::TestAllTypesLite::FOO, message.default_nested_enum());
  325. EXPECT_EQ(unittest::FOREIGN_LITE_FOO, message.default_foreign_enum());
  326. EXPECT_EQ(unittest_import::IMPORT_LITE_FOO, message.default_import_enum());
  327. EXPECT_FALSE(message.has_oneof_uint32());
  328. EXPECT_FALSE(message.has_oneof_nested_message());
  329. EXPECT_FALSE(message.has_oneof_string());
  330. EXPECT_TRUE(message.has_oneof_bytes());
  331. EXPECT_EQ("604", message.oneof_bytes());
  332. }
  333. // -------------------------------------------------------------------
  334. void TestUtilLite::ExpectClear(const unittest::TestAllTypesLite& message) {
  335. // has_blah() should initially be false for all optional fields.
  336. EXPECT_FALSE(message.has_optional_int32());
  337. EXPECT_FALSE(message.has_optional_int64());
  338. EXPECT_FALSE(message.has_optional_uint32());
  339. EXPECT_FALSE(message.has_optional_uint64());
  340. EXPECT_FALSE(message.has_optional_sint32());
  341. EXPECT_FALSE(message.has_optional_sint64());
  342. EXPECT_FALSE(message.has_optional_fixed32());
  343. EXPECT_FALSE(message.has_optional_fixed64());
  344. EXPECT_FALSE(message.has_optional_sfixed32());
  345. EXPECT_FALSE(message.has_optional_sfixed64());
  346. EXPECT_FALSE(message.has_optional_float());
  347. EXPECT_FALSE(message.has_optional_double());
  348. EXPECT_FALSE(message.has_optional_bool());
  349. EXPECT_FALSE(message.has_optional_string());
  350. EXPECT_FALSE(message.has_optional_bytes());
  351. EXPECT_FALSE(message.has_optionalgroup());
  352. EXPECT_FALSE(message.has_optional_nested_message());
  353. EXPECT_FALSE(message.has_optional_foreign_message());
  354. EXPECT_FALSE(message.has_optional_import_message());
  355. EXPECT_FALSE(message.has_optional_public_import_message());
  356. EXPECT_FALSE(message.has_optional_lazy_message());
  357. EXPECT_FALSE(message.has_optional_nested_enum());
  358. EXPECT_FALSE(message.has_optional_foreign_enum());
  359. EXPECT_FALSE(message.has_optional_import_enum());
  360. // Optional fields without defaults are set to zero or something like it.
  361. EXPECT_EQ(0, message.optional_int32());
  362. EXPECT_EQ(0, message.optional_int64());
  363. EXPECT_EQ(0, message.optional_uint32());
  364. EXPECT_EQ(0, message.optional_uint64());
  365. EXPECT_EQ(0, message.optional_sint32());
  366. EXPECT_EQ(0, message.optional_sint64());
  367. EXPECT_EQ(0, message.optional_fixed32());
  368. EXPECT_EQ(0, message.optional_fixed64());
  369. EXPECT_EQ(0, message.optional_sfixed32());
  370. EXPECT_EQ(0, message.optional_sfixed64());
  371. EXPECT_EQ(0, message.optional_float());
  372. EXPECT_EQ(0, message.optional_double());
  373. EXPECT_EQ(false, message.optional_bool());
  374. EXPECT_EQ("", message.optional_string());
  375. EXPECT_EQ("", message.optional_bytes());
  376. // Embedded messages should also be clear.
  377. EXPECT_FALSE(message.optionalgroup().has_a());
  378. EXPECT_FALSE(message.optional_nested_message().has_bb());
  379. EXPECT_FALSE(message.optional_foreign_message().has_c());
  380. EXPECT_FALSE(message.optional_import_message().has_d());
  381. EXPECT_FALSE(message.optional_public_import_message().has_e());
  382. EXPECT_FALSE(message.optional_lazy_message().has_bb());
  383. EXPECT_EQ(0, message.optionalgroup().a());
  384. EXPECT_EQ(0, message.optional_nested_message().bb());
  385. EXPECT_EQ(0, message.optional_foreign_message().c());
  386. EXPECT_EQ(0, message.optional_import_message().d());
  387. // Enums without defaults are set to the first value in the enum.
  388. EXPECT_EQ(unittest::TestAllTypesLite::FOO, message.optional_nested_enum());
  389. EXPECT_EQ(unittest::FOREIGN_LITE_FOO, message.optional_foreign_enum());
  390. EXPECT_EQ(unittest_import::IMPORT_LITE_FOO, message.optional_import_enum());
  391. // Repeated fields are empty.
  392. EXPECT_EQ(0, message.repeated_int32_size());
  393. EXPECT_EQ(0, message.repeated_int64_size());
  394. EXPECT_EQ(0, message.repeated_uint32_size());
  395. EXPECT_EQ(0, message.repeated_uint64_size());
  396. EXPECT_EQ(0, message.repeated_sint32_size());
  397. EXPECT_EQ(0, message.repeated_sint64_size());
  398. EXPECT_EQ(0, message.repeated_fixed32_size());
  399. EXPECT_EQ(0, message.repeated_fixed64_size());
  400. EXPECT_EQ(0, message.repeated_sfixed32_size());
  401. EXPECT_EQ(0, message.repeated_sfixed64_size());
  402. EXPECT_EQ(0, message.repeated_float_size());
  403. EXPECT_EQ(0, message.repeated_double_size());
  404. EXPECT_EQ(0, message.repeated_bool_size());
  405. EXPECT_EQ(0, message.repeated_string_size());
  406. EXPECT_EQ(0, message.repeated_bytes_size());
  407. EXPECT_EQ(0, message.repeatedgroup_size());
  408. EXPECT_EQ(0, message.repeated_nested_message_size());
  409. EXPECT_EQ(0, message.repeated_foreign_message_size());
  410. EXPECT_EQ(0, message.repeated_import_message_size());
  411. EXPECT_EQ(0, message.repeated_lazy_message_size());
  412. EXPECT_EQ(0, message.repeated_nested_enum_size());
  413. EXPECT_EQ(0, message.repeated_foreign_enum_size());
  414. EXPECT_EQ(0, message.repeated_import_enum_size());
  415. // has_blah() should also be false for all default fields.
  416. EXPECT_FALSE(message.has_default_int32());
  417. EXPECT_FALSE(message.has_default_int64());
  418. EXPECT_FALSE(message.has_default_uint32());
  419. EXPECT_FALSE(message.has_default_uint64());
  420. EXPECT_FALSE(message.has_default_sint32());
  421. EXPECT_FALSE(message.has_default_sint64());
  422. EXPECT_FALSE(message.has_default_fixed32());
  423. EXPECT_FALSE(message.has_default_fixed64());
  424. EXPECT_FALSE(message.has_default_sfixed32());
  425. EXPECT_FALSE(message.has_default_sfixed64());
  426. EXPECT_FALSE(message.has_default_float());
  427. EXPECT_FALSE(message.has_default_double());
  428. EXPECT_FALSE(message.has_default_bool());
  429. EXPECT_FALSE(message.has_default_string());
  430. EXPECT_FALSE(message.has_default_bytes());
  431. EXPECT_FALSE(message.has_default_nested_enum());
  432. EXPECT_FALSE(message.has_default_foreign_enum());
  433. EXPECT_FALSE(message.has_default_import_enum());
  434. // Fields with defaults have their default values (duh).
  435. EXPECT_EQ(41, message.default_int32());
  436. EXPECT_EQ(42, message.default_int64());
  437. EXPECT_EQ(43, message.default_uint32());
  438. EXPECT_EQ(44, message.default_uint64());
  439. EXPECT_EQ(-45, message.default_sint32());
  440. EXPECT_EQ(46, message.default_sint64());
  441. EXPECT_EQ(47, message.default_fixed32());
  442. EXPECT_EQ(48, message.default_fixed64());
  443. EXPECT_EQ(49, message.default_sfixed32());
  444. EXPECT_EQ(-50, message.default_sfixed64());
  445. EXPECT_EQ(51.5, message.default_float());
  446. EXPECT_EQ(52e3, message.default_double());
  447. EXPECT_EQ(true, message.default_bool());
  448. EXPECT_EQ("hello", message.default_string());
  449. EXPECT_EQ("world", message.default_bytes());
  450. EXPECT_EQ(unittest::TestAllTypesLite::BAR, message.default_nested_enum());
  451. EXPECT_EQ(unittest::FOREIGN_LITE_BAR, message.default_foreign_enum());
  452. EXPECT_EQ(unittest_import::IMPORT_LITE_BAR, message.default_import_enum());
  453. EXPECT_FALSE(message.has_oneof_uint32());
  454. EXPECT_FALSE(message.has_oneof_nested_message());
  455. EXPECT_FALSE(message.has_oneof_string());
  456. EXPECT_FALSE(message.has_oneof_bytes());
  457. }
  458. // -------------------------------------------------------------------
  459. void TestUtilLite::ExpectRepeatedFieldsModified(
  460. const unittest::TestAllTypesLite& message) {
  461. // ModifyRepeatedFields only sets the second repeated element of each
  462. // field. In addition to verifying this, we also verify that the first
  463. // element and size were *not* modified.
  464. ASSERT_EQ(2, message.repeated_int32_size());
  465. ASSERT_EQ(2, message.repeated_int64_size());
  466. ASSERT_EQ(2, message.repeated_uint32_size());
  467. ASSERT_EQ(2, message.repeated_uint64_size());
  468. ASSERT_EQ(2, message.repeated_sint32_size());
  469. ASSERT_EQ(2, message.repeated_sint64_size());
  470. ASSERT_EQ(2, message.repeated_fixed32_size());
  471. ASSERT_EQ(2, message.repeated_fixed64_size());
  472. ASSERT_EQ(2, message.repeated_sfixed32_size());
  473. ASSERT_EQ(2, message.repeated_sfixed64_size());
  474. ASSERT_EQ(2, message.repeated_float_size());
  475. ASSERT_EQ(2, message.repeated_double_size());
  476. ASSERT_EQ(2, message.repeated_bool_size());
  477. ASSERT_EQ(2, message.repeated_string_size());
  478. ASSERT_EQ(2, message.repeated_bytes_size());
  479. ASSERT_EQ(2, message.repeatedgroup_size());
  480. ASSERT_EQ(2, message.repeated_nested_message_size());
  481. ASSERT_EQ(2, message.repeated_foreign_message_size());
  482. ASSERT_EQ(2, message.repeated_import_message_size());
  483. ASSERT_EQ(2, message.repeated_lazy_message_size());
  484. ASSERT_EQ(2, message.repeated_nested_enum_size());
  485. ASSERT_EQ(2, message.repeated_foreign_enum_size());
  486. ASSERT_EQ(2, message.repeated_import_enum_size());
  487. EXPECT_EQ(201, message.repeated_int32(0));
  488. EXPECT_EQ(202, message.repeated_int64(0));
  489. EXPECT_EQ(203, message.repeated_uint32(0));
  490. EXPECT_EQ(204, message.repeated_uint64(0));
  491. EXPECT_EQ(205, message.repeated_sint32(0));
  492. EXPECT_EQ(206, message.repeated_sint64(0));
  493. EXPECT_EQ(207, message.repeated_fixed32(0));
  494. EXPECT_EQ(208, message.repeated_fixed64(0));
  495. EXPECT_EQ(209, message.repeated_sfixed32(0));
  496. EXPECT_EQ(210, message.repeated_sfixed64(0));
  497. EXPECT_EQ(211, message.repeated_float(0));
  498. EXPECT_EQ(212, message.repeated_double(0));
  499. EXPECT_EQ(true, message.repeated_bool(0));
  500. EXPECT_EQ("215", message.repeated_string(0));
  501. EXPECT_EQ("216", message.repeated_bytes(0));
  502. EXPECT_EQ(217, message.repeatedgroup(0).a());
  503. EXPECT_EQ(218, message.repeated_nested_message(0).bb());
  504. EXPECT_EQ(219, message.repeated_foreign_message(0).c());
  505. EXPECT_EQ(220, message.repeated_import_message(0).d());
  506. EXPECT_EQ(227, message.repeated_lazy_message(0).bb());
  507. EXPECT_EQ(unittest::TestAllTypesLite::BAR, message.repeated_nested_enum(0));
  508. EXPECT_EQ(unittest::FOREIGN_LITE_BAR, message.repeated_foreign_enum(0));
  509. EXPECT_EQ(unittest_import::IMPORT_LITE_BAR, message.repeated_import_enum(0));
  510. // Actually verify the second (modified) elements now.
  511. EXPECT_EQ(501, message.repeated_int32(1));
  512. EXPECT_EQ(502, message.repeated_int64(1));
  513. EXPECT_EQ(503, message.repeated_uint32(1));
  514. EXPECT_EQ(504, message.repeated_uint64(1));
  515. EXPECT_EQ(505, message.repeated_sint32(1));
  516. EXPECT_EQ(506, message.repeated_sint64(1));
  517. EXPECT_EQ(507, message.repeated_fixed32(1));
  518. EXPECT_EQ(508, message.repeated_fixed64(1));
  519. EXPECT_EQ(509, message.repeated_sfixed32(1));
  520. EXPECT_EQ(510, message.repeated_sfixed64(1));
  521. EXPECT_EQ(511, message.repeated_float(1));
  522. EXPECT_EQ(512, message.repeated_double(1));
  523. EXPECT_EQ(true, message.repeated_bool(1));
  524. EXPECT_EQ("515", message.repeated_string(1));
  525. EXPECT_EQ("516", message.repeated_bytes(1));
  526. EXPECT_EQ(517, message.repeatedgroup(1).a());
  527. EXPECT_EQ(518, message.repeated_nested_message(1).bb());
  528. EXPECT_EQ(519, message.repeated_foreign_message(1).c());
  529. EXPECT_EQ(520, message.repeated_import_message(1).d());
  530. EXPECT_EQ(527, message.repeated_lazy_message(1).bb());
  531. EXPECT_EQ(unittest::TestAllTypesLite::FOO, message.repeated_nested_enum(1));
  532. EXPECT_EQ(unittest::FOREIGN_LITE_FOO, message.repeated_foreign_enum(1));
  533. EXPECT_EQ(unittest_import::IMPORT_LITE_FOO, message.repeated_import_enum(1));
  534. }
  535. // -------------------------------------------------------------------
  536. void TestUtilLite::SetPackedFields(unittest::TestPackedTypesLite* message) {
  537. message->add_packed_int32(601);
  538. message->add_packed_int64(602);
  539. message->add_packed_uint32(603);
  540. message->add_packed_uint64(604);
  541. message->add_packed_sint32(605);
  542. message->add_packed_sint64(606);
  543. message->add_packed_fixed32(607);
  544. message->add_packed_fixed64(608);
  545. message->add_packed_sfixed32(609);
  546. message->add_packed_sfixed64(610);
  547. message->add_packed_float(611);
  548. message->add_packed_double(612);
  549. message->add_packed_bool(true);
  550. message->add_packed_enum(unittest::FOREIGN_LITE_BAR);
  551. // add a second one of each field
  552. message->add_packed_int32(701);
  553. message->add_packed_int64(702);
  554. message->add_packed_uint32(703);
  555. message->add_packed_uint64(704);
  556. message->add_packed_sint32(705);
  557. message->add_packed_sint64(706);
  558. message->add_packed_fixed32(707);
  559. message->add_packed_fixed64(708);
  560. message->add_packed_sfixed32(709);
  561. message->add_packed_sfixed64(710);
  562. message->add_packed_float(711);
  563. message->add_packed_double(712);
  564. message->add_packed_bool(false);
  565. message->add_packed_enum(unittest::FOREIGN_LITE_BAZ);
  566. }
  567. // -------------------------------------------------------------------
  568. void TestUtilLite::ModifyPackedFields(unittest::TestPackedTypesLite* message) {
  569. message->set_packed_int32(1, 801);
  570. message->set_packed_int64(1, 802);
  571. message->set_packed_uint32(1, 803);
  572. message->set_packed_uint64(1, 804);
  573. message->set_packed_sint32(1, 805);
  574. message->set_packed_sint64(1, 806);
  575. message->set_packed_fixed32(1, 807);
  576. message->set_packed_fixed64(1, 808);
  577. message->set_packed_sfixed32(1, 809);
  578. message->set_packed_sfixed64(1, 810);
  579. message->set_packed_float(1, 811);
  580. message->set_packed_double(1, 812);
  581. message->set_packed_bool(1, true);
  582. message->set_packed_enum(1, unittest::FOREIGN_LITE_FOO);
  583. }
  584. // -------------------------------------------------------------------
  585. void TestUtilLite::ExpectPackedFieldsSet(
  586. const unittest::TestPackedTypesLite& message) {
  587. ASSERT_EQ(2, message.packed_int32_size());
  588. ASSERT_EQ(2, message.packed_int64_size());
  589. ASSERT_EQ(2, message.packed_uint32_size());
  590. ASSERT_EQ(2, message.packed_uint64_size());
  591. ASSERT_EQ(2, message.packed_sint32_size());
  592. ASSERT_EQ(2, message.packed_sint64_size());
  593. ASSERT_EQ(2, message.packed_fixed32_size());
  594. ASSERT_EQ(2, message.packed_fixed64_size());
  595. ASSERT_EQ(2, message.packed_sfixed32_size());
  596. ASSERT_EQ(2, message.packed_sfixed64_size());
  597. ASSERT_EQ(2, message.packed_float_size());
  598. ASSERT_EQ(2, message.packed_double_size());
  599. ASSERT_EQ(2, message.packed_bool_size());
  600. ASSERT_EQ(2, message.packed_enum_size());
  601. EXPECT_EQ(601, message.packed_int32(0));
  602. EXPECT_EQ(602, message.packed_int64(0));
  603. EXPECT_EQ(603, message.packed_uint32(0));
  604. EXPECT_EQ(604, message.packed_uint64(0));
  605. EXPECT_EQ(605, message.packed_sint32(0));
  606. EXPECT_EQ(606, message.packed_sint64(0));
  607. EXPECT_EQ(607, message.packed_fixed32(0));
  608. EXPECT_EQ(608, message.packed_fixed64(0));
  609. EXPECT_EQ(609, message.packed_sfixed32(0));
  610. EXPECT_EQ(610, message.packed_sfixed64(0));
  611. EXPECT_EQ(611, message.packed_float(0));
  612. EXPECT_EQ(612, message.packed_double(0));
  613. EXPECT_EQ(true, message.packed_bool(0));
  614. EXPECT_EQ(unittest::FOREIGN_LITE_BAR, message.packed_enum(0));
  615. EXPECT_EQ(701, message.packed_int32(1));
  616. EXPECT_EQ(702, message.packed_int64(1));
  617. EXPECT_EQ(703, message.packed_uint32(1));
  618. EXPECT_EQ(704, message.packed_uint64(1));
  619. EXPECT_EQ(705, message.packed_sint32(1));
  620. EXPECT_EQ(706, message.packed_sint64(1));
  621. EXPECT_EQ(707, message.packed_fixed32(1));
  622. EXPECT_EQ(708, message.packed_fixed64(1));
  623. EXPECT_EQ(709, message.packed_sfixed32(1));
  624. EXPECT_EQ(710, message.packed_sfixed64(1));
  625. EXPECT_EQ(711, message.packed_float(1));
  626. EXPECT_EQ(712, message.packed_double(1));
  627. EXPECT_EQ(false, message.packed_bool(1));
  628. EXPECT_EQ(unittest::FOREIGN_LITE_BAZ, message.packed_enum(1));
  629. }
  630. // -------------------------------------------------------------------
  631. void TestUtilLite::ExpectPackedClear(
  632. const unittest::TestPackedTypesLite& message) {
  633. // Packed repeated fields are empty.
  634. EXPECT_EQ(0, message.packed_int32_size());
  635. EXPECT_EQ(0, message.packed_int64_size());
  636. EXPECT_EQ(0, message.packed_uint32_size());
  637. EXPECT_EQ(0, message.packed_uint64_size());
  638. EXPECT_EQ(0, message.packed_sint32_size());
  639. EXPECT_EQ(0, message.packed_sint64_size());
  640. EXPECT_EQ(0, message.packed_fixed32_size());
  641. EXPECT_EQ(0, message.packed_fixed64_size());
  642. EXPECT_EQ(0, message.packed_sfixed32_size());
  643. EXPECT_EQ(0, message.packed_sfixed64_size());
  644. EXPECT_EQ(0, message.packed_float_size());
  645. EXPECT_EQ(0, message.packed_double_size());
  646. EXPECT_EQ(0, message.packed_bool_size());
  647. EXPECT_EQ(0, message.packed_enum_size());
  648. }
  649. // -------------------------------------------------------------------
  650. void TestUtilLite::ExpectPackedFieldsModified(
  651. const unittest::TestPackedTypesLite& message) {
  652. // Do the same for packed repeated fields.
  653. ASSERT_EQ(2, message.packed_int32_size());
  654. ASSERT_EQ(2, message.packed_int64_size());
  655. ASSERT_EQ(2, message.packed_uint32_size());
  656. ASSERT_EQ(2, message.packed_uint64_size());
  657. ASSERT_EQ(2, message.packed_sint32_size());
  658. ASSERT_EQ(2, message.packed_sint64_size());
  659. ASSERT_EQ(2, message.packed_fixed32_size());
  660. ASSERT_EQ(2, message.packed_fixed64_size());
  661. ASSERT_EQ(2, message.packed_sfixed32_size());
  662. ASSERT_EQ(2, message.packed_sfixed64_size());
  663. ASSERT_EQ(2, message.packed_float_size());
  664. ASSERT_EQ(2, message.packed_double_size());
  665. ASSERT_EQ(2, message.packed_bool_size());
  666. ASSERT_EQ(2, message.packed_enum_size());
  667. EXPECT_EQ(601, message.packed_int32(0));
  668. EXPECT_EQ(602, message.packed_int64(0));
  669. EXPECT_EQ(603, message.packed_uint32(0));
  670. EXPECT_EQ(604, message.packed_uint64(0));
  671. EXPECT_EQ(605, message.packed_sint32(0));
  672. EXPECT_EQ(606, message.packed_sint64(0));
  673. EXPECT_EQ(607, message.packed_fixed32(0));
  674. EXPECT_EQ(608, message.packed_fixed64(0));
  675. EXPECT_EQ(609, message.packed_sfixed32(0));
  676. EXPECT_EQ(610, message.packed_sfixed64(0));
  677. EXPECT_EQ(611, message.packed_float(0));
  678. EXPECT_EQ(612, message.packed_double(0));
  679. EXPECT_EQ(true, message.packed_bool(0));
  680. EXPECT_EQ(unittest::FOREIGN_LITE_BAR, message.packed_enum(0));
  681. // Actually verify the second (modified) elements now.
  682. EXPECT_EQ(801, message.packed_int32(1));
  683. EXPECT_EQ(802, message.packed_int64(1));
  684. EXPECT_EQ(803, message.packed_uint32(1));
  685. EXPECT_EQ(804, message.packed_uint64(1));
  686. EXPECT_EQ(805, message.packed_sint32(1));
  687. EXPECT_EQ(806, message.packed_sint64(1));
  688. EXPECT_EQ(807, message.packed_fixed32(1));
  689. EXPECT_EQ(808, message.packed_fixed64(1));
  690. EXPECT_EQ(809, message.packed_sfixed32(1));
  691. EXPECT_EQ(810, message.packed_sfixed64(1));
  692. EXPECT_EQ(811, message.packed_float(1));
  693. EXPECT_EQ(812, message.packed_double(1));
  694. EXPECT_EQ(true, message.packed_bool(1));
  695. EXPECT_EQ(unittest::FOREIGN_LITE_FOO, message.packed_enum(1));
  696. }
  697. // ===================================================================
  698. // Extensions
  699. //
  700. // All this code is exactly equivalent to the above code except that it's
  701. // manipulating extension fields instead of normal ones.
  702. //
  703. // I gave up on the 80-char limit here. Sorry.
  704. void TestUtilLite::SetAllExtensions(unittest::TestAllExtensionsLite* message) {
  705. message->SetExtension(unittest::optional_int32_extension_lite, 101);
  706. message->SetExtension(unittest::optional_int64_extension_lite, 102);
  707. message->SetExtension(unittest::optional_uint32_extension_lite, 103);
  708. message->SetExtension(unittest::optional_uint64_extension_lite, 104);
  709. message->SetExtension(unittest::optional_sint32_extension_lite, 105);
  710. message->SetExtension(unittest::optional_sint64_extension_lite, 106);
  711. message->SetExtension(unittest::optional_fixed32_extension_lite, 107);
  712. message->SetExtension(unittest::optional_fixed64_extension_lite, 108);
  713. message->SetExtension(unittest::optional_sfixed32_extension_lite, 109);
  714. message->SetExtension(unittest::optional_sfixed64_extension_lite, 110);
  715. message->SetExtension(unittest::optional_float_extension_lite, 111);
  716. message->SetExtension(unittest::optional_double_extension_lite, 112);
  717. message->SetExtension(unittest::optional_bool_extension_lite, true);
  718. message->SetExtension(unittest::optional_string_extension_lite, "115");
  719. message->SetExtension(unittest::optional_bytes_extension_lite, "116");
  720. message->MutableExtension(unittest::optionalgroup_extension_lite)->set_a(117);
  721. message->MutableExtension(unittest::optional_nested_message_extension_lite)
  722. ->set_bb(118);
  723. message->MutableExtension(unittest::optional_foreign_message_extension_lite)
  724. ->set_c(119);
  725. message->MutableExtension(unittest::optional_import_message_extension_lite)
  726. ->set_d(120);
  727. message
  728. ->MutableExtension(
  729. unittest::optional_public_import_message_extension_lite)
  730. ->set_e(126);
  731. message->MutableExtension(unittest::optional_lazy_message_extension_lite)
  732. ->set_bb(127);
  733. message->SetExtension(unittest::optional_nested_enum_extension_lite,
  734. unittest::TestAllTypesLite::BAZ);
  735. message->SetExtension(unittest::optional_foreign_enum_extension_lite,
  736. unittest::FOREIGN_LITE_BAZ);
  737. message->SetExtension(unittest::optional_import_enum_extension_lite,
  738. unittest_import::IMPORT_LITE_BAZ);
  739. // -----------------------------------------------------------------
  740. message->AddExtension(unittest::repeated_int32_extension_lite, 201);
  741. message->AddExtension(unittest::repeated_int64_extension_lite, 202);
  742. message->AddExtension(unittest::repeated_uint32_extension_lite, 203);
  743. message->AddExtension(unittest::repeated_uint64_extension_lite, 204);
  744. message->AddExtension(unittest::repeated_sint32_extension_lite, 205);
  745. message->AddExtension(unittest::repeated_sint64_extension_lite, 206);
  746. message->AddExtension(unittest::repeated_fixed32_extension_lite, 207);
  747. message->AddExtension(unittest::repeated_fixed64_extension_lite, 208);
  748. message->AddExtension(unittest::repeated_sfixed32_extension_lite, 209);
  749. message->AddExtension(unittest::repeated_sfixed64_extension_lite, 210);
  750. message->AddExtension(unittest::repeated_float_extension_lite, 211);
  751. message->AddExtension(unittest::repeated_double_extension_lite, 212);
  752. message->AddExtension(unittest::repeated_bool_extension_lite, true);
  753. message->AddExtension(unittest::repeated_string_extension_lite, "215");
  754. message->AddExtension(unittest::repeated_bytes_extension_lite, "216");
  755. message->AddExtension(unittest::repeatedgroup_extension_lite)->set_a(217);
  756. message->AddExtension(unittest::repeated_nested_message_extension_lite)
  757. ->set_bb(218);
  758. message->AddExtension(unittest::repeated_foreign_message_extension_lite)
  759. ->set_c(219);
  760. message->AddExtension(unittest::repeated_import_message_extension_lite)
  761. ->set_d(220);
  762. message->AddExtension(unittest::repeated_lazy_message_extension_lite)
  763. ->set_bb(227);
  764. message->AddExtension(unittest::repeated_nested_enum_extension_lite,
  765. unittest::TestAllTypesLite::BAR);
  766. message->AddExtension(unittest::repeated_foreign_enum_extension_lite,
  767. unittest::FOREIGN_LITE_BAR);
  768. message->AddExtension(unittest::repeated_import_enum_extension_lite,
  769. unittest_import::IMPORT_LITE_BAR);
  770. // Add a second one of each field.
  771. message->AddExtension(unittest::repeated_int32_extension_lite, 301);
  772. message->AddExtension(unittest::repeated_int64_extension_lite, 302);
  773. message->AddExtension(unittest::repeated_uint32_extension_lite, 303);
  774. message->AddExtension(unittest::repeated_uint64_extension_lite, 304);
  775. message->AddExtension(unittest::repeated_sint32_extension_lite, 305);
  776. message->AddExtension(unittest::repeated_sint64_extension_lite, 306);
  777. message->AddExtension(unittest::repeated_fixed32_extension_lite, 307);
  778. message->AddExtension(unittest::repeated_fixed64_extension_lite, 308);
  779. message->AddExtension(unittest::repeated_sfixed32_extension_lite, 309);
  780. message->AddExtension(unittest::repeated_sfixed64_extension_lite, 310);
  781. message->AddExtension(unittest::repeated_float_extension_lite, 311);
  782. message->AddExtension(unittest::repeated_double_extension_lite, 312);
  783. message->AddExtension(unittest::repeated_bool_extension_lite, false);
  784. message->AddExtension(unittest::repeated_string_extension_lite, "315");
  785. message->AddExtension(unittest::repeated_bytes_extension_lite, "316");
  786. message->AddExtension(unittest::repeatedgroup_extension_lite)->set_a(317);
  787. message->AddExtension(unittest::repeated_nested_message_extension_lite)
  788. ->set_bb(318);
  789. message->AddExtension(unittest::repeated_foreign_message_extension_lite)
  790. ->set_c(319);
  791. message->AddExtension(unittest::repeated_import_message_extension_lite)
  792. ->set_d(320);
  793. message->AddExtension(unittest::repeated_lazy_message_extension_lite)
  794. ->set_bb(327);
  795. message->AddExtension(unittest::repeated_nested_enum_extension_lite,
  796. unittest::TestAllTypesLite::BAZ);
  797. message->AddExtension(unittest::repeated_foreign_enum_extension_lite,
  798. unittest::FOREIGN_LITE_BAZ);
  799. message->AddExtension(unittest::repeated_import_enum_extension_lite,
  800. unittest_import::IMPORT_LITE_BAZ);
  801. // -----------------------------------------------------------------
  802. message->SetExtension(unittest::default_int32_extension_lite, 401);
  803. message->SetExtension(unittest::default_int64_extension_lite, 402);
  804. message->SetExtension(unittest::default_uint32_extension_lite, 403);
  805. message->SetExtension(unittest::default_uint64_extension_lite, 404);
  806. message->SetExtension(unittest::default_sint32_extension_lite, 405);
  807. message->SetExtension(unittest::default_sint64_extension_lite, 406);
  808. message->SetExtension(unittest::default_fixed32_extension_lite, 407);
  809. message->SetExtension(unittest::default_fixed64_extension_lite, 408);
  810. message->SetExtension(unittest::default_sfixed32_extension_lite, 409);
  811. message->SetExtension(unittest::default_sfixed64_extension_lite, 410);
  812. message->SetExtension(unittest::default_float_extension_lite, 411);
  813. message->SetExtension(unittest::default_double_extension_lite, 412);
  814. message->SetExtension(unittest::default_bool_extension_lite, false);
  815. message->SetExtension(unittest::default_string_extension_lite, "415");
  816. message->SetExtension(unittest::default_bytes_extension_lite, "416");
  817. message->SetExtension(unittest::default_nested_enum_extension_lite,
  818. unittest::TestAllTypesLite::FOO);
  819. message->SetExtension(unittest::default_foreign_enum_extension_lite,
  820. unittest::FOREIGN_LITE_FOO);
  821. message->SetExtension(unittest::default_import_enum_extension_lite,
  822. unittest_import::IMPORT_LITE_FOO);
  823. message->SetExtension(unittest::oneof_uint32_extension_lite, 601);
  824. message->MutableExtension(unittest::oneof_nested_message_extension_lite)
  825. ->set_bb(602);
  826. ;
  827. message->SetExtension(unittest::oneof_string_extension_lite, "603");
  828. message->SetExtension(unittest::oneof_bytes_extension_lite, "604");
  829. }
  830. // -------------------------------------------------------------------
  831. void TestUtilLite::ModifyRepeatedExtensions(
  832. unittest::TestAllExtensionsLite* message) {
  833. message->SetExtension(unittest::repeated_int32_extension_lite, 1, 501);
  834. message->SetExtension(unittest::repeated_int64_extension_lite, 1, 502);
  835. message->SetExtension(unittest::repeated_uint32_extension_lite, 1, 503);
  836. message->SetExtension(unittest::repeated_uint64_extension_lite, 1, 504);
  837. message->SetExtension(unittest::repeated_sint32_extension_lite, 1, 505);
  838. message->SetExtension(unittest::repeated_sint64_extension_lite, 1, 506);
  839. message->SetExtension(unittest::repeated_fixed32_extension_lite, 1, 507);
  840. message->SetExtension(unittest::repeated_fixed64_extension_lite, 1, 508);
  841. message->SetExtension(unittest::repeated_sfixed32_extension_lite, 1, 509);
  842. message->SetExtension(unittest::repeated_sfixed64_extension_lite, 1, 510);
  843. message->SetExtension(unittest::repeated_float_extension_lite, 1, 511);
  844. message->SetExtension(unittest::repeated_double_extension_lite, 1, 512);
  845. message->SetExtension(unittest::repeated_bool_extension_lite, 1, true);
  846. message->SetExtension(unittest::repeated_string_extension_lite, 1, "515");
  847. message->SetExtension(unittest::repeated_bytes_extension_lite, 1, "516");
  848. message->MutableExtension(unittest::repeatedgroup_extension_lite, 1)
  849. ->set_a(517);
  850. message->MutableExtension(unittest::repeated_nested_message_extension_lite, 1)
  851. ->set_bb(518);
  852. message
  853. ->MutableExtension(unittest::repeated_foreign_message_extension_lite, 1)
  854. ->set_c(519);
  855. message->MutableExtension(unittest::repeated_import_message_extension_lite, 1)
  856. ->set_d(520);
  857. message->MutableExtension(unittest::repeated_lazy_message_extension_lite, 1)
  858. ->set_bb(527);
  859. message->SetExtension(unittest::repeated_nested_enum_extension_lite, 1,
  860. unittest::TestAllTypesLite::FOO);
  861. message->SetExtension(unittest::repeated_foreign_enum_extension_lite, 1,
  862. unittest::FOREIGN_LITE_FOO);
  863. message->SetExtension(unittest::repeated_import_enum_extension_lite, 1,
  864. unittest_import::IMPORT_LITE_FOO);
  865. }
  866. // -------------------------------------------------------------------
  867. void TestUtilLite::ExpectAllExtensionsSet(
  868. const unittest::TestAllExtensionsLite& message) {
  869. EXPECT_TRUE(message.HasExtension(unittest::optional_int32_extension_lite));
  870. EXPECT_TRUE(message.HasExtension(unittest::optional_int64_extension_lite));
  871. EXPECT_TRUE(message.HasExtension(unittest::optional_uint32_extension_lite));
  872. EXPECT_TRUE(message.HasExtension(unittest::optional_uint64_extension_lite));
  873. EXPECT_TRUE(message.HasExtension(unittest::optional_sint32_extension_lite));
  874. EXPECT_TRUE(message.HasExtension(unittest::optional_sint64_extension_lite));
  875. EXPECT_TRUE(message.HasExtension(unittest::optional_fixed32_extension_lite));
  876. EXPECT_TRUE(message.HasExtension(unittest::optional_fixed64_extension_lite));
  877. EXPECT_TRUE(message.HasExtension(unittest::optional_sfixed32_extension_lite));
  878. EXPECT_TRUE(message.HasExtension(unittest::optional_sfixed64_extension_lite));
  879. EXPECT_TRUE(message.HasExtension(unittest::optional_float_extension_lite));
  880. EXPECT_TRUE(message.HasExtension(unittest::optional_double_extension_lite));
  881. EXPECT_TRUE(message.HasExtension(unittest::optional_bool_extension_lite));
  882. EXPECT_TRUE(message.HasExtension(unittest::optional_string_extension_lite));
  883. EXPECT_TRUE(message.HasExtension(unittest::optional_bytes_extension_lite));
  884. EXPECT_TRUE(message.HasExtension(unittest::optionalgroup_extension_lite));
  885. EXPECT_TRUE(
  886. message.HasExtension(unittest::optional_nested_message_extension_lite));
  887. EXPECT_TRUE(
  888. message.HasExtension(unittest::optional_foreign_message_extension_lite));
  889. EXPECT_TRUE(
  890. message.HasExtension(unittest::optional_import_message_extension_lite));
  891. EXPECT_TRUE(message.HasExtension(
  892. unittest::optional_public_import_message_extension_lite));
  893. EXPECT_TRUE(
  894. message.HasExtension(unittest::optional_lazy_message_extension_lite));
  895. EXPECT_TRUE(
  896. message.GetExtension(unittest::optionalgroup_extension_lite).has_a());
  897. EXPECT_TRUE(
  898. message.GetExtension(unittest::optional_nested_message_extension_lite)
  899. .has_bb());
  900. EXPECT_TRUE(
  901. message.GetExtension(unittest::optional_foreign_message_extension_lite)
  902. .has_c());
  903. EXPECT_TRUE(
  904. message.GetExtension(unittest::optional_import_message_extension_lite)
  905. .has_d());
  906. EXPECT_TRUE(
  907. message
  908. .GetExtension(unittest::optional_public_import_message_extension_lite)
  909. .has_e());
  910. EXPECT_TRUE(
  911. message.GetExtension(unittest::optional_lazy_message_extension_lite)
  912. .has_bb());
  913. EXPECT_TRUE(
  914. message.HasExtension(unittest::optional_nested_enum_extension_lite));
  915. EXPECT_TRUE(
  916. message.HasExtension(unittest::optional_foreign_enum_extension_lite));
  917. EXPECT_TRUE(
  918. message.HasExtension(unittest::optional_import_enum_extension_lite));
  919. EXPECT_EQ(101, message.GetExtension(unittest::optional_int32_extension_lite));
  920. EXPECT_EQ(102, message.GetExtension(unittest::optional_int64_extension_lite));
  921. EXPECT_EQ(103,
  922. message.GetExtension(unittest::optional_uint32_extension_lite));
  923. EXPECT_EQ(104,
  924. message.GetExtension(unittest::optional_uint64_extension_lite));
  925. EXPECT_EQ(105,
  926. message.GetExtension(unittest::optional_sint32_extension_lite));
  927. EXPECT_EQ(106,
  928. message.GetExtension(unittest::optional_sint64_extension_lite));
  929. EXPECT_EQ(107,
  930. message.GetExtension(unittest::optional_fixed32_extension_lite));
  931. EXPECT_EQ(108,
  932. message.GetExtension(unittest::optional_fixed64_extension_lite));
  933. EXPECT_EQ(109,
  934. message.GetExtension(unittest::optional_sfixed32_extension_lite));
  935. EXPECT_EQ(110,
  936. message.GetExtension(unittest::optional_sfixed64_extension_lite));
  937. EXPECT_EQ(111, message.GetExtension(unittest::optional_float_extension_lite));
  938. EXPECT_EQ(112,
  939. message.GetExtension(unittest::optional_double_extension_lite));
  940. EXPECT_EQ(true, message.GetExtension(unittest::optional_bool_extension_lite));
  941. EXPECT_EQ("115",
  942. message.GetExtension(unittest::optional_string_extension_lite));
  943. EXPECT_EQ("116",
  944. message.GetExtension(unittest::optional_bytes_extension_lite));
  945. EXPECT_EQ(117,
  946. message.GetExtension(unittest::optionalgroup_extension_lite).a());
  947. EXPECT_EQ(
  948. 118,
  949. message.GetExtension(unittest::optional_nested_message_extension_lite)
  950. .bb());
  951. EXPECT_EQ(
  952. 119,
  953. message.GetExtension(unittest::optional_foreign_message_extension_lite)
  954. .c());
  955. EXPECT_EQ(
  956. 120,
  957. message.GetExtension(unittest::optional_import_message_extension_lite)
  958. .d());
  959. EXPECT_EQ(
  960. 126,
  961. message
  962. .GetExtension(unittest::optional_public_import_message_extension_lite)
  963. .e());
  964. EXPECT_EQ(127,
  965. message.GetExtension(unittest::optional_lazy_message_extension_lite)
  966. .bb());
  967. EXPECT_EQ(
  968. unittest::TestAllTypesLite::BAZ,
  969. message.GetExtension(unittest::optional_nested_enum_extension_lite));
  970. EXPECT_EQ(
  971. unittest::FOREIGN_LITE_BAZ,
  972. message.GetExtension(unittest::optional_foreign_enum_extension_lite));
  973. EXPECT_EQ(
  974. unittest_import::IMPORT_LITE_BAZ,
  975. message.GetExtension(unittest::optional_import_enum_extension_lite));
  976. // -----------------------------------------------------------------
  977. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_int32_extension_lite));
  978. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_int64_extension_lite));
  979. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_uint32_extension_lite));
  980. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_uint64_extension_lite));
  981. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sint32_extension_lite));
  982. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sint64_extension_lite));
  983. ASSERT_EQ(2,
  984. message.ExtensionSize(unittest::repeated_fixed32_extension_lite));
  985. ASSERT_EQ(2,
  986. message.ExtensionSize(unittest::repeated_fixed64_extension_lite));
  987. ASSERT_EQ(2,
  988. message.ExtensionSize(unittest::repeated_sfixed32_extension_lite));
  989. ASSERT_EQ(2,
  990. message.ExtensionSize(unittest::repeated_sfixed64_extension_lite));
  991. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_float_extension_lite));
  992. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_double_extension_lite));
  993. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_bool_extension_lite));
  994. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_string_extension_lite));
  995. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_bytes_extension_lite));
  996. ASSERT_EQ(2, message.ExtensionSize(unittest::repeatedgroup_extension_lite));
  997. ASSERT_EQ(2, message.ExtensionSize(
  998. unittest::repeated_nested_message_extension_lite));
  999. ASSERT_EQ(2, message.ExtensionSize(
  1000. unittest::repeated_foreign_message_extension_lite));
  1001. ASSERT_EQ(2, message.ExtensionSize(
  1002. unittest::repeated_import_message_extension_lite));
  1003. ASSERT_EQ(
  1004. 2, message.ExtensionSize(unittest::repeated_lazy_message_extension_lite));
  1005. ASSERT_EQ(
  1006. 2, message.ExtensionSize(unittest::repeated_nested_enum_extension_lite));
  1007. ASSERT_EQ(
  1008. 2, message.ExtensionSize(unittest::repeated_foreign_enum_extension_lite));
  1009. ASSERT_EQ(
  1010. 2, message.ExtensionSize(unittest::repeated_import_enum_extension_lite));
  1011. EXPECT_EQ(201,
  1012. message.GetExtension(unittest::repeated_int32_extension_lite, 0));
  1013. EXPECT_EQ(202,
  1014. message.GetExtension(unittest::repeated_int64_extension_lite, 0));
  1015. EXPECT_EQ(203,
  1016. message.GetExtension(unittest::repeated_uint32_extension_lite, 0));
  1017. EXPECT_EQ(204,
  1018. message.GetExtension(unittest::repeated_uint64_extension_lite, 0));
  1019. EXPECT_EQ(205,
  1020. message.GetExtension(unittest::repeated_sint32_extension_lite, 0));
  1021. EXPECT_EQ(206,
  1022. message.GetExtension(unittest::repeated_sint64_extension_lite, 0));
  1023. EXPECT_EQ(207,
  1024. message.GetExtension(unittest::repeated_fixed32_extension_lite, 0));
  1025. EXPECT_EQ(208,
  1026. message.GetExtension(unittest::repeated_fixed64_extension_lite, 0));
  1027. EXPECT_EQ(
  1028. 209, message.GetExtension(unittest::repeated_sfixed32_extension_lite, 0));
  1029. EXPECT_EQ(
  1030. 210, message.GetExtension(unittest::repeated_sfixed64_extension_lite, 0));
  1031. EXPECT_EQ(211,
  1032. message.GetExtension(unittest::repeated_float_extension_lite, 0));
  1033. EXPECT_EQ(212,
  1034. message.GetExtension(unittest::repeated_double_extension_lite, 0));
  1035. EXPECT_EQ(true,
  1036. message.GetExtension(unittest::repeated_bool_extension_lite, 0));
  1037. EXPECT_EQ("215",
  1038. message.GetExtension(unittest::repeated_string_extension_lite, 0));
  1039. EXPECT_EQ("216",
  1040. message.GetExtension(unittest::repeated_bytes_extension_lite, 0));
  1041. EXPECT_EQ(
  1042. 217, message.GetExtension(unittest::repeatedgroup_extension_lite, 0).a());
  1043. EXPECT_EQ(
  1044. 218,
  1045. message.GetExtension(unittest::repeated_nested_message_extension_lite, 0)
  1046. .bb());
  1047. EXPECT_EQ(
  1048. 219,
  1049. message.GetExtension(unittest::repeated_foreign_message_extension_lite, 0)
  1050. .c());
  1051. EXPECT_EQ(
  1052. 220,
  1053. message.GetExtension(unittest::repeated_import_message_extension_lite, 0)
  1054. .d());
  1055. EXPECT_EQ(
  1056. 227,
  1057. message.GetExtension(unittest::repeated_lazy_message_extension_lite, 0)
  1058. .bb());
  1059. EXPECT_EQ(
  1060. unittest::TestAllTypesLite::BAR,
  1061. message.GetExtension(unittest::repeated_nested_enum_extension_lite, 0));
  1062. EXPECT_EQ(
  1063. unittest::FOREIGN_LITE_BAR,
  1064. message.GetExtension(unittest::repeated_foreign_enum_extension_lite, 0));
  1065. EXPECT_EQ(
  1066. unittest_import::IMPORT_LITE_BAR,
  1067. message.GetExtension(unittest::repeated_import_enum_extension_lite, 0));
  1068. EXPECT_EQ(301,
  1069. message.GetExtension(unittest::repeated_int32_extension_lite, 1));
  1070. EXPECT_EQ(302,
  1071. message.GetExtension(unittest::repeated_int64_extension_lite, 1));
  1072. EXPECT_EQ(303,
  1073. message.GetExtension(unittest::repeated_uint32_extension_lite, 1));
  1074. EXPECT_EQ(304,
  1075. message.GetExtension(unittest::repeated_uint64_extension_lite, 1));
  1076. EXPECT_EQ(305,
  1077. message.GetExtension(unittest::repeated_sint32_extension_lite, 1));
  1078. EXPECT_EQ(306,
  1079. message.GetExtension(unittest::repeated_sint64_extension_lite, 1));
  1080. EXPECT_EQ(307,
  1081. message.GetExtension(unittest::repeated_fixed32_extension_lite, 1));
  1082. EXPECT_EQ(308,
  1083. message.GetExtension(unittest::repeated_fixed64_extension_lite, 1));
  1084. EXPECT_EQ(
  1085. 309, message.GetExtension(unittest::repeated_sfixed32_extension_lite, 1));
  1086. EXPECT_EQ(
  1087. 310, message.GetExtension(unittest::repeated_sfixed64_extension_lite, 1));
  1088. EXPECT_EQ(311,
  1089. message.GetExtension(unittest::repeated_float_extension_lite, 1));
  1090. EXPECT_EQ(312,
  1091. message.GetExtension(unittest::repeated_double_extension_lite, 1));
  1092. EXPECT_EQ(false,
  1093. message.GetExtension(unittest::repeated_bool_extension_lite, 1));
  1094. EXPECT_EQ("315",
  1095. message.GetExtension(unittest::repeated_string_extension_lite, 1));
  1096. EXPECT_EQ("316",
  1097. message.GetExtension(unittest::repeated_bytes_extension_lite, 1));
  1098. EXPECT_EQ(
  1099. 317, message.GetExtension(unittest::repeatedgroup_extension_lite, 1).a());
  1100. EXPECT_EQ(
  1101. 318,
  1102. message.GetExtension(unittest::repeated_nested_message_extension_lite, 1)
  1103. .bb());
  1104. EXPECT_EQ(
  1105. 319,
  1106. message.GetExtension(unittest::repeated_foreign_message_extension_lite, 1)
  1107. .c());
  1108. EXPECT_EQ(
  1109. 320,
  1110. message.GetExtension(unittest::repeated_import_message_extension_lite, 1)
  1111. .d());
  1112. EXPECT_EQ(
  1113. 327,
  1114. message.GetExtension(unittest::repeated_lazy_message_extension_lite, 1)
  1115. .bb());
  1116. EXPECT_EQ(
  1117. unittest::TestAllTypesLite::BAZ,
  1118. message.GetExtension(unittest::repeated_nested_enum_extension_lite, 1));
  1119. EXPECT_EQ(
  1120. unittest::FOREIGN_LITE_BAZ,
  1121. message.GetExtension(unittest::repeated_foreign_enum_extension_lite, 1));
  1122. EXPECT_EQ(
  1123. unittest_import::IMPORT_LITE_BAZ,
  1124. message.GetExtension(unittest::repeated_import_enum_extension_lite, 1));
  1125. // -----------------------------------------------------------------
  1126. EXPECT_TRUE(message.HasExtension(unittest::default_int32_extension_lite));
  1127. EXPECT_TRUE(message.HasExtension(unittest::default_int64_extension_lite));
  1128. EXPECT_TRUE(message.HasExtension(unittest::default_uint32_extension_lite));
  1129. EXPECT_TRUE(message.HasExtension(unittest::default_uint64_extension_lite));
  1130. EXPECT_TRUE(message.HasExtension(unittest::default_sint32_extension_lite));
  1131. EXPECT_TRUE(message.HasExtension(unittest::default_sint64_extension_lite));
  1132. EXPECT_TRUE(message.HasExtension(unittest::default_fixed32_extension_lite));
  1133. EXPECT_TRUE(message.HasExtension(unittest::default_fixed64_extension_lite));
  1134. EXPECT_TRUE(message.HasExtension(unittest::default_sfixed32_extension_lite));
  1135. EXPECT_TRUE(message.HasExtension(unittest::default_sfixed64_extension_lite));
  1136. EXPECT_TRUE(message.HasExtension(unittest::default_float_extension_lite));
  1137. EXPECT_TRUE(message.HasExtension(unittest::default_double_extension_lite));
  1138. EXPECT_TRUE(message.HasExtension(unittest::default_bool_extension_lite));
  1139. EXPECT_TRUE(message.HasExtension(unittest::default_string_extension_lite));
  1140. EXPECT_TRUE(message.HasExtension(unittest::default_bytes_extension_lite));
  1141. EXPECT_TRUE(
  1142. message.HasExtension(unittest::default_nested_enum_extension_lite));
  1143. EXPECT_TRUE(
  1144. message.HasExtension(unittest::default_foreign_enum_extension_lite));
  1145. EXPECT_TRUE(
  1146. message.HasExtension(unittest::default_import_enum_extension_lite));
  1147. EXPECT_EQ(401, message.GetExtension(unittest::default_int32_extension_lite));
  1148. EXPECT_EQ(402, message.GetExtension(unittest::default_int64_extension_lite));
  1149. EXPECT_EQ(403, message.GetExtension(unittest::default_uint32_extension_lite));
  1150. EXPECT_EQ(404, message.GetExtension(unittest::default_uint64_extension_lite));
  1151. EXPECT_EQ(405, message.GetExtension(unittest::default_sint32_extension_lite));
  1152. EXPECT_EQ(406, message.GetExtension(unittest::default_sint64_extension_lite));
  1153. EXPECT_EQ(407,
  1154. message.GetExtension(unittest::default_fixed32_extension_lite));
  1155. EXPECT_EQ(408,
  1156. message.GetExtension(unittest::default_fixed64_extension_lite));
  1157. EXPECT_EQ(409,
  1158. message.GetExtension(unittest::default_sfixed32_extension_lite));
  1159. EXPECT_EQ(410,
  1160. message.GetExtension(unittest::default_sfixed64_extension_lite));
  1161. EXPECT_EQ(411, message.GetExtension(unittest::default_float_extension_lite));
  1162. EXPECT_EQ(412, message.GetExtension(unittest::default_double_extension_lite));
  1163. EXPECT_EQ(false, message.GetExtension(unittest::default_bool_extension_lite));
  1164. EXPECT_EQ("415",
  1165. message.GetExtension(unittest::default_string_extension_lite));
  1166. EXPECT_EQ("416",
  1167. message.GetExtension(unittest::default_bytes_extension_lite));
  1168. EXPECT_EQ(unittest::TestAllTypesLite::FOO,
  1169. message.GetExtension(unittest::default_nested_enum_extension_lite));
  1170. EXPECT_EQ(
  1171. unittest::FOREIGN_LITE_FOO,
  1172. message.GetExtension(unittest::default_foreign_enum_extension_lite));
  1173. EXPECT_EQ(unittest_import::IMPORT_LITE_FOO,
  1174. message.GetExtension(unittest::default_import_enum_extension_lite));
  1175. EXPECT_TRUE(message.HasExtension(unittest::oneof_uint32_extension_lite));
  1176. EXPECT_TRUE(
  1177. message.GetExtension(unittest::oneof_nested_message_extension_lite)
  1178. .has_bb());
  1179. EXPECT_TRUE(message.HasExtension(unittest::oneof_string_extension_lite));
  1180. EXPECT_TRUE(message.HasExtension(unittest::oneof_bytes_extension_lite));
  1181. EXPECT_EQ(601, message.GetExtension(unittest::oneof_uint32_extension_lite));
  1182. EXPECT_EQ(
  1183. 602,
  1184. message.GetExtension(unittest::oneof_nested_message_extension_lite).bb());
  1185. EXPECT_EQ("603", message.GetExtension(unittest::oneof_string_extension_lite));
  1186. EXPECT_EQ("604", message.GetExtension(unittest::oneof_bytes_extension_lite));
  1187. }
  1188. // -------------------------------------------------------------------
  1189. void TestUtilLite::ExpectExtensionsClear(
  1190. const unittest::TestAllExtensionsLite& message) {
  1191. std::string serialized;
  1192. ASSERT_TRUE(message.SerializeToString(&serialized));
  1193. EXPECT_EQ("", serialized);
  1194. EXPECT_EQ(0, message.ByteSize());
  1195. // has_blah() should initially be false for all optional fields.
  1196. EXPECT_FALSE(message.HasExtension(unittest::optional_int32_extension_lite));
  1197. EXPECT_FALSE(message.HasExtension(unittest::optional_int64_extension_lite));
  1198. EXPECT_FALSE(message.HasExtension(unittest::optional_uint32_extension_lite));
  1199. EXPECT_FALSE(message.HasExtension(unittest::optional_uint64_extension_lite));
  1200. EXPECT_FALSE(message.HasExtension(unittest::optional_sint32_extension_lite));
  1201. EXPECT_FALSE(message.HasExtension(unittest::optional_sint64_extension_lite));
  1202. EXPECT_FALSE(message.HasExtension(unittest::optional_fixed32_extension_lite));
  1203. EXPECT_FALSE(message.HasExtension(unittest::optional_fixed64_extension_lite));
  1204. EXPECT_FALSE(
  1205. message.HasExtension(unittest::optional_sfixed32_extension_lite));
  1206. EXPECT_FALSE(
  1207. message.HasExtension(unittest::optional_sfixed64_extension_lite));
  1208. EXPECT_FALSE(message.HasExtension(unittest::optional_float_extension_lite));
  1209. EXPECT_FALSE(message.HasExtension(unittest::optional_double_extension_lite));
  1210. EXPECT_FALSE(message.HasExtension(unittest::optional_bool_extension_lite));
  1211. EXPECT_FALSE(message.HasExtension(unittest::optional_string_extension_lite));
  1212. EXPECT_FALSE(message.HasExtension(unittest::optional_bytes_extension_lite));
  1213. EXPECT_FALSE(message.HasExtension(unittest::optionalgroup_extension_lite));
  1214. EXPECT_FALSE(
  1215. message.HasExtension(unittest::optional_nested_message_extension_lite));
  1216. EXPECT_FALSE(
  1217. message.HasExtension(unittest::optional_foreign_message_extension_lite));
  1218. EXPECT_FALSE(
  1219. message.HasExtension(unittest::optional_import_message_extension_lite));
  1220. EXPECT_FALSE(message.HasExtension(
  1221. unittest::optional_public_import_message_extension_lite));
  1222. EXPECT_FALSE(
  1223. message.HasExtension(unittest::optional_lazy_message_extension_lite));
  1224. EXPECT_FALSE(
  1225. message.HasExtension(unittest::optional_nested_enum_extension_lite));
  1226. EXPECT_FALSE(
  1227. message.HasExtension(unittest::optional_foreign_enum_extension_lite));
  1228. EXPECT_FALSE(
  1229. message.HasExtension(unittest::optional_import_enum_extension_lite));
  1230. // Optional fields without defaults are set to zero or something like it.
  1231. EXPECT_EQ(0, message.GetExtension(unittest::optional_int32_extension_lite));
  1232. EXPECT_EQ(0, message.GetExtension(unittest::optional_int64_extension_lite));
  1233. EXPECT_EQ(0, message.GetExtension(unittest::optional_uint32_extension_lite));
  1234. EXPECT_EQ(0, message.GetExtension(unittest::optional_uint64_extension_lite));
  1235. EXPECT_EQ(0, message.GetExtension(unittest::optional_sint32_extension_lite));
  1236. EXPECT_EQ(0, message.GetExtension(unittest::optional_sint64_extension_lite));
  1237. EXPECT_EQ(0, message.GetExtension(unittest::optional_fixed32_extension_lite));
  1238. EXPECT_EQ(0, message.GetExtension(unittest::optional_fixed64_extension_lite));
  1239. EXPECT_EQ(0,
  1240. message.GetExtension(unittest::optional_sfixed32_extension_lite));
  1241. EXPECT_EQ(0,
  1242. message.GetExtension(unittest::optional_sfixed64_extension_lite));
  1243. EXPECT_EQ(0, message.GetExtension(unittest::optional_float_extension_lite));
  1244. EXPECT_EQ(0, message.GetExtension(unittest::optional_double_extension_lite));
  1245. EXPECT_EQ(false,
  1246. message.GetExtension(unittest::optional_bool_extension_lite));
  1247. EXPECT_EQ("", message.GetExtension(unittest::optional_string_extension_lite));
  1248. EXPECT_EQ("", message.GetExtension(unittest::optional_bytes_extension_lite));
  1249. // Embedded messages should also be clear.
  1250. EXPECT_FALSE(
  1251. message.GetExtension(unittest::optionalgroup_extension_lite).has_a());
  1252. EXPECT_FALSE(
  1253. message.GetExtension(unittest::optional_nested_message_extension_lite)
  1254. .has_bb());
  1255. EXPECT_FALSE(
  1256. message.GetExtension(unittest::optional_foreign_message_extension_lite)
  1257. .has_c());
  1258. EXPECT_FALSE(
  1259. message.GetExtension(unittest::optional_import_message_extension_lite)
  1260. .has_d());
  1261. EXPECT_FALSE(
  1262. message
  1263. .GetExtension(unittest::optional_public_import_message_extension_lite)
  1264. .has_e());
  1265. EXPECT_FALSE(
  1266. message.GetExtension(unittest::optional_lazy_message_extension_lite)
  1267. .has_bb());
  1268. EXPECT_EQ(0,
  1269. message.GetExtension(unittest::optionalgroup_extension_lite).a());
  1270. EXPECT_EQ(
  1271. 0, message.GetExtension(unittest::optional_nested_message_extension_lite)
  1272. .bb());
  1273. EXPECT_EQ(
  1274. 0, message.GetExtension(unittest::optional_foreign_message_extension_lite)
  1275. .c());
  1276. EXPECT_EQ(
  1277. 0, message.GetExtension(unittest::optional_import_message_extension_lite)
  1278. .d());
  1279. EXPECT_EQ(0, message
  1280. .GetExtension(
  1281. unittest::optional_public_import_message_extension_lite)
  1282. .e());
  1283. EXPECT_EQ(0,
  1284. message.GetExtension(unittest::optional_lazy_message_extension_lite)
  1285. .bb());
  1286. // Enums without defaults are set to the first value in the enum.
  1287. EXPECT_EQ(
  1288. unittest::TestAllTypesLite::FOO,
  1289. message.GetExtension(unittest::optional_nested_enum_extension_lite));
  1290. EXPECT_EQ(
  1291. unittest::FOREIGN_LITE_FOO,
  1292. message.GetExtension(unittest::optional_foreign_enum_extension_lite));
  1293. EXPECT_EQ(
  1294. unittest_import::IMPORT_LITE_FOO,
  1295. message.GetExtension(unittest::optional_import_enum_extension_lite));
  1296. // Repeated fields are empty.
  1297. EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_int32_extension_lite));
  1298. EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_int64_extension_lite));
  1299. EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_uint32_extension_lite));
  1300. EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_uint64_extension_lite));
  1301. EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_sint32_extension_lite));
  1302. EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_sint64_extension_lite));
  1303. EXPECT_EQ(0,
  1304. message.ExtensionSize(unittest::repeated_fixed32_extension_lite));
  1305. EXPECT_EQ(0,
  1306. message.ExtensionSize(unittest::repeated_fixed64_extension_lite));
  1307. EXPECT_EQ(0,
  1308. message.ExtensionSize(unittest::repeated_sfixed32_extension_lite));
  1309. EXPECT_EQ(0,
  1310. message.ExtensionSize(unittest::repeated_sfixed64_extension_lite));
  1311. EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_float_extension_lite));
  1312. EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_double_extension_lite));
  1313. EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_bool_extension_lite));
  1314. EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_string_extension_lite));
  1315. EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_bytes_extension_lite));
  1316. EXPECT_EQ(0, message.ExtensionSize(unittest::repeatedgroup_extension_lite));
  1317. EXPECT_EQ(0, message.ExtensionSize(
  1318. unittest::repeated_nested_message_extension_lite));
  1319. EXPECT_EQ(0, message.ExtensionSize(
  1320. unittest::repeated_foreign_message_extension_lite));
  1321. EXPECT_EQ(0, message.ExtensionSize(
  1322. unittest::repeated_import_message_extension_lite));
  1323. EXPECT_EQ(
  1324. 0, message.ExtensionSize(unittest::repeated_lazy_message_extension_lite));
  1325. EXPECT_EQ(
  1326. 0, message.ExtensionSize(unittest::repeated_nested_enum_extension_lite));
  1327. EXPECT_EQ(
  1328. 0, message.ExtensionSize(unittest::repeated_foreign_enum_extension_lite));
  1329. EXPECT_EQ(
  1330. 0, message.ExtensionSize(unittest::repeated_import_enum_extension_lite));
  1331. // has_blah() should also be false for all default fields.
  1332. EXPECT_FALSE(message.HasExtension(unittest::default_int32_extension_lite));
  1333. EXPECT_FALSE(message.HasExtension(unittest::default_int64_extension_lite));
  1334. EXPECT_FALSE(message.HasExtension(unittest::default_uint32_extension_lite));
  1335. EXPECT_FALSE(message.HasExtension(unittest::default_uint64_extension_lite));
  1336. EXPECT_FALSE(message.HasExtension(unittest::default_sint32_extension_lite));
  1337. EXPECT_FALSE(message.HasExtension(unittest::default_sint64_extension_lite));
  1338. EXPECT_FALSE(message.HasExtension(unittest::default_fixed32_extension_lite));
  1339. EXPECT_FALSE(message.HasExtension(unittest::default_fixed64_extension_lite));
  1340. EXPECT_FALSE(message.HasExtension(unittest::default_sfixed32_extension_lite));
  1341. EXPECT_FALSE(message.HasExtension(unittest::default_sfixed64_extension_lite));
  1342. EXPECT_FALSE(message.HasExtension(unittest::default_float_extension_lite));
  1343. EXPECT_FALSE(message.HasExtension(unittest::default_double_extension_lite));
  1344. EXPECT_FALSE(message.HasExtension(unittest::default_bool_extension_lite));
  1345. EXPECT_FALSE(message.HasExtension(unittest::default_string_extension_lite));
  1346. EXPECT_FALSE(message.HasExtension(unittest::default_bytes_extension_lite));
  1347. EXPECT_FALSE(
  1348. message.HasExtension(unittest::default_nested_enum_extension_lite));
  1349. EXPECT_FALSE(
  1350. message.HasExtension(unittest::default_foreign_enum_extension_lite));
  1351. EXPECT_FALSE(
  1352. message.HasExtension(unittest::default_import_enum_extension_lite));
  1353. // Fields with defaults have their default values (duh).
  1354. EXPECT_EQ(41, message.GetExtension(unittest::default_int32_extension_lite));
  1355. EXPECT_EQ(42, message.GetExtension(unittest::default_int64_extension_lite));
  1356. EXPECT_EQ(43, message.GetExtension(unittest::default_uint32_extension_lite));
  1357. EXPECT_EQ(44, message.GetExtension(unittest::default_uint64_extension_lite));
  1358. EXPECT_EQ(-45, message.GetExtension(unittest::default_sint32_extension_lite));
  1359. EXPECT_EQ(46, message.GetExtension(unittest::default_sint64_extension_lite));
  1360. EXPECT_EQ(47, message.GetExtension(unittest::default_fixed32_extension_lite));
  1361. EXPECT_EQ(48, message.GetExtension(unittest::default_fixed64_extension_lite));
  1362. EXPECT_EQ(49,
  1363. message.GetExtension(unittest::default_sfixed32_extension_lite));
  1364. EXPECT_EQ(-50,
  1365. message.GetExtension(unittest::default_sfixed64_extension_lite));
  1366. EXPECT_EQ(51.5, message.GetExtension(unittest::default_float_extension_lite));
  1367. EXPECT_EQ(52e3,
  1368. message.GetExtension(unittest::default_double_extension_lite));
  1369. EXPECT_EQ(true, message.GetExtension(unittest::default_bool_extension_lite));
  1370. EXPECT_EQ("hello",
  1371. message.GetExtension(unittest::default_string_extension_lite));
  1372. EXPECT_EQ("world",
  1373. message.GetExtension(unittest::default_bytes_extension_lite));
  1374. EXPECT_EQ(unittest::TestAllTypesLite::BAR,
  1375. message.GetExtension(unittest::default_nested_enum_extension_lite));
  1376. EXPECT_EQ(
  1377. unittest::FOREIGN_LITE_BAR,
  1378. message.GetExtension(unittest::default_foreign_enum_extension_lite));
  1379. EXPECT_EQ(unittest_import::IMPORT_LITE_BAR,
  1380. message.GetExtension(unittest::default_import_enum_extension_lite));
  1381. EXPECT_FALSE(message.HasExtension(unittest::oneof_uint32_extension_lite));
  1382. EXPECT_FALSE(
  1383. message.GetExtension(unittest::oneof_nested_message_extension_lite)
  1384. .has_bb());
  1385. EXPECT_FALSE(message.HasExtension(unittest::oneof_string_extension_lite));
  1386. EXPECT_FALSE(message.HasExtension(unittest::oneof_bytes_extension_lite));
  1387. }
  1388. // -------------------------------------------------------------------
  1389. void TestUtilLite::ExpectRepeatedExtensionsModified(
  1390. const unittest::TestAllExtensionsLite& message) {
  1391. // ModifyRepeatedFields only sets the second repeated element of each
  1392. // field. In addition to verifying this, we also verify that the first
  1393. // element and size were *not* modified.
  1394. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_int32_extension_lite));
  1395. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_int64_extension_lite));
  1396. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_uint32_extension_lite));
  1397. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_uint64_extension_lite));
  1398. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sint32_extension_lite));
  1399. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_sint64_extension_lite));
  1400. ASSERT_EQ(2,
  1401. message.ExtensionSize(unittest::repeated_fixed32_extension_lite));
  1402. ASSERT_EQ(2,
  1403. message.ExtensionSize(unittest::repeated_fixed64_extension_lite));
  1404. ASSERT_EQ(2,
  1405. message.ExtensionSize(unittest::repeated_sfixed32_extension_lite));
  1406. ASSERT_EQ(2,
  1407. message.ExtensionSize(unittest::repeated_sfixed64_extension_lite));
  1408. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_float_extension_lite));
  1409. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_double_extension_lite));
  1410. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_bool_extension_lite));
  1411. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_string_extension_lite));
  1412. ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_bytes_extension_lite));
  1413. ASSERT_EQ(2, message.ExtensionSize(unittest::repeatedgroup_extension_lite));
  1414. ASSERT_EQ(2, message.ExtensionSize(
  1415. unittest::repeated_nested_message_extension_lite));
  1416. ASSERT_EQ(2, message.ExtensionSize(
  1417. unittest::repeated_foreign_message_extension_lite));
  1418. ASSERT_EQ(2, message.ExtensionSize(
  1419. unittest::repeated_import_message_extension_lite));
  1420. ASSERT_EQ(
  1421. 2, message.ExtensionSize(unittest::repeated_lazy_message_extension_lite));
  1422. ASSERT_EQ(
  1423. 2, message.ExtensionSize(unittest::repeated_nested_enum_extension_lite));
  1424. ASSERT_EQ(
  1425. 2, message.ExtensionSize(unittest::repeated_foreign_enum_extension_lite));
  1426. ASSERT_EQ(
  1427. 2, message.ExtensionSize(unittest::repeated_import_enum_extension_lite));
  1428. EXPECT_EQ(201,
  1429. message.GetExtension(unittest::repeated_int32_extension_lite, 0));
  1430. EXPECT_EQ(202,
  1431. message.GetExtension(unittest::repeated_int64_extension_lite, 0));
  1432. EXPECT_EQ(203,
  1433. message.GetExtension(unittest::repeated_uint32_extension_lite, 0));
  1434. EXPECT_EQ(204,
  1435. message.GetExtension(unittest::repeated_uint64_extension_lite, 0));
  1436. EXPECT_EQ(205,
  1437. message.GetExtension(unittest::repeated_sint32_extension_lite, 0));
  1438. EXPECT_EQ(206,
  1439. message.GetExtension(unittest::repeated_sint64_extension_lite, 0));
  1440. EXPECT_EQ(207,
  1441. message.GetExtension(unittest::repeated_fixed32_extension_lite, 0));
  1442. EXPECT_EQ(208,
  1443. message.GetExtension(unittest::repeated_fixed64_extension_lite, 0));
  1444. EXPECT_EQ(
  1445. 209, message.GetExtension(unittest::repeated_sfixed32_extension_lite, 0));
  1446. EXPECT_EQ(
  1447. 210, message.GetExtension(unittest::repeated_sfixed64_extension_lite, 0));
  1448. EXPECT_EQ(211,
  1449. message.GetExtension(unittest::repeated_float_extension_lite, 0));
  1450. EXPECT_EQ(212,
  1451. message.GetExtension(unittest::repeated_double_extension_lite, 0));
  1452. EXPECT_EQ(true,
  1453. message.GetExtension(unittest::repeated_bool_extension_lite, 0));
  1454. EXPECT_EQ("215",
  1455. message.GetExtension(unittest::repeated_string_extension_lite, 0));
  1456. EXPECT_EQ("216",
  1457. message.GetExtension(unittest::repeated_bytes_extension_lite, 0));
  1458. EXPECT_EQ(
  1459. 217, message.GetExtension(unittest::repeatedgroup_extension_lite, 0).a());
  1460. EXPECT_EQ(
  1461. 218,
  1462. message.GetExtension(unittest::repeated_nested_message_extension_lite, 0)
  1463. .bb());
  1464. EXPECT_EQ(
  1465. 219,
  1466. message.GetExtension(unittest::repeated_foreign_message_extension_lite, 0)
  1467. .c());
  1468. EXPECT_EQ(
  1469. 220,
  1470. message.GetExtension(unittest::repeated_import_message_extension_lite, 0)
  1471. .d());
  1472. EXPECT_EQ(
  1473. 227,
  1474. message.GetExtension(unittest::repeated_lazy_message_extension_lite, 0)
  1475. .bb());
  1476. EXPECT_EQ(
  1477. unittest::TestAllTypesLite::BAR,
  1478. message.GetExtension(unittest::repeated_nested_enum_extension_lite, 0));
  1479. EXPECT_EQ(
  1480. unittest::FOREIGN_LITE_BAR,
  1481. message.GetExtension(unittest::repeated_foreign_enum_extension_lite, 0));
  1482. EXPECT_EQ(
  1483. unittest_import::IMPORT_LITE_BAR,
  1484. message.GetExtension(unittest::repeated_import_enum_extension_lite, 0));
  1485. // Actually verify the second (modified) elements now.
  1486. EXPECT_EQ(501,
  1487. message.GetExtension(unittest::repeated_int32_extension_lite, 1));
  1488. EXPECT_EQ(502,
  1489. message.GetExtension(unittest::repeated_int64_extension_lite, 1));
  1490. EXPECT_EQ(503,
  1491. message.GetExtension(unittest::repeated_uint32_extension_lite, 1));
  1492. EXPECT_EQ(504,
  1493. message.GetExtension(unittest::repeated_uint64_extension_lite, 1));
  1494. EXPECT_EQ(505,
  1495. message.GetExtension(unittest::repeated_sint32_extension_lite, 1));
  1496. EXPECT_EQ(506,
  1497. message.GetExtension(unittest::repeated_sint64_extension_lite, 1));
  1498. EXPECT_EQ(507,
  1499. message.GetExtension(unittest::repeated_fixed32_extension_lite, 1));
  1500. EXPECT_EQ(508,
  1501. message.GetExtension(unittest::repeated_fixed64_extension_lite, 1));
  1502. EXPECT_EQ(
  1503. 509, message.GetExtension(unittest::repeated_sfixed32_extension_lite, 1));
  1504. EXPECT_EQ(
  1505. 510, message.GetExtension(unittest::repeated_sfixed64_extension_lite, 1));
  1506. EXPECT_EQ(511,
  1507. message.GetExtension(unittest::repeated_float_extension_lite, 1));
  1508. EXPECT_EQ(512,
  1509. message.GetExtension(unittest::repeated_double_extension_lite, 1));
  1510. EXPECT_EQ(true,
  1511. message.GetExtension(unittest::repeated_bool_extension_lite, 1));
  1512. EXPECT_EQ("515",
  1513. message.GetExtension(unittest::repeated_string_extension_lite, 1));
  1514. EXPECT_EQ("516",
  1515. message.GetExtension(unittest::repeated_bytes_extension_lite, 1));
  1516. EXPECT_EQ(
  1517. 517, message.GetExtension(unittest::repeatedgroup_extension_lite, 1).a());
  1518. EXPECT_EQ(
  1519. 518,
  1520. message.GetExtension(unittest::repeated_nested_message_extension_lite, 1)
  1521. .bb());
  1522. EXPECT_EQ(
  1523. 519,
  1524. message.GetExtension(unittest::repeated_foreign_message_extension_lite, 1)
  1525. .c());
  1526. EXPECT_EQ(
  1527. 520,
  1528. message.GetExtension(unittest::repeated_import_message_extension_lite, 1)
  1529. .d());
  1530. EXPECT_EQ(
  1531. 527,
  1532. message.GetExtension(unittest::repeated_lazy_message_extension_lite, 1)
  1533. .bb());
  1534. EXPECT_EQ(
  1535. unittest::TestAllTypesLite::FOO,
  1536. message.GetExtension(unittest::repeated_nested_enum_extension_lite, 1));
  1537. EXPECT_EQ(
  1538. unittest::FOREIGN_LITE_FOO,
  1539. message.GetExtension(unittest::repeated_foreign_enum_extension_lite, 1));
  1540. EXPECT_EQ(
  1541. unittest_import::IMPORT_LITE_FOO,
  1542. message.GetExtension(unittest::repeated_import_enum_extension_lite, 1));
  1543. }
  1544. // -------------------------------------------------------------------
  1545. void TestUtilLite::SetPackedExtensions(
  1546. unittest::TestPackedExtensionsLite* message) {
  1547. message->AddExtension(unittest::packed_int32_extension_lite, 601);
  1548. message->AddExtension(unittest::packed_int64_extension_lite, 602);
  1549. message->AddExtension(unittest::packed_uint32_extension_lite, 603);
  1550. message->AddExtension(unittest::packed_uint64_extension_lite, 604);
  1551. message->AddExtension(unittest::packed_sint32_extension_lite, 605);
  1552. message->AddExtension(unittest::packed_sint64_extension_lite, 606);
  1553. message->AddExtension(unittest::packed_fixed32_extension_lite, 607);
  1554. message->AddExtension(unittest::packed_fixed64_extension_lite, 608);
  1555. message->AddExtension(unittest::packed_sfixed32_extension_lite, 609);
  1556. message->AddExtension(unittest::packed_sfixed64_extension_lite, 610);
  1557. message->AddExtension(unittest::packed_float_extension_lite, 611);
  1558. message->AddExtension(unittest::packed_double_extension_lite, 612);
  1559. message->AddExtension(unittest::packed_bool_extension_lite, true);
  1560. message->AddExtension(unittest::packed_enum_extension_lite,
  1561. unittest::FOREIGN_LITE_BAR);
  1562. // add a second one of each field
  1563. message->AddExtension(unittest::packed_int32_extension_lite, 701);
  1564. message->AddExtension(unittest::packed_int64_extension_lite, 702);
  1565. message->AddExtension(unittest::packed_uint32_extension_lite, 703);
  1566. message->AddExtension(unittest::packed_uint64_extension_lite, 704);
  1567. message->AddExtension(unittest::packed_sint32_extension_lite, 705);
  1568. message->AddExtension(unittest::packed_sint64_extension_lite, 706);
  1569. message->AddExtension(unittest::packed_fixed32_extension_lite, 707);
  1570. message->AddExtension(unittest::packed_fixed64_extension_lite, 708);
  1571. message->AddExtension(unittest::packed_sfixed32_extension_lite, 709);
  1572. message->AddExtension(unittest::packed_sfixed64_extension_lite, 710);
  1573. message->AddExtension(unittest::packed_float_extension_lite, 711);
  1574. message->AddExtension(unittest::packed_double_extension_lite, 712);
  1575. message->AddExtension(unittest::packed_bool_extension_lite, false);
  1576. message->AddExtension(unittest::packed_enum_extension_lite,
  1577. unittest::FOREIGN_LITE_BAZ);
  1578. }
  1579. // -------------------------------------------------------------------
  1580. void TestUtilLite::ModifyPackedExtensions(
  1581. unittest::TestPackedExtensionsLite* message) {
  1582. message->SetExtension(unittest::packed_int32_extension_lite, 1, 801);
  1583. message->SetExtension(unittest::packed_int64_extension_lite, 1, 802);
  1584. message->SetExtension(unittest::packed_uint32_extension_lite, 1, 803);
  1585. message->SetExtension(unittest::packed_uint64_extension_lite, 1, 804);
  1586. message->SetExtension(unittest::packed_sint32_extension_lite, 1, 805);
  1587. message->SetExtension(unittest::packed_sint64_extension_lite, 1, 806);
  1588. message->SetExtension(unittest::packed_fixed32_extension_lite, 1, 807);
  1589. message->SetExtension(unittest::packed_fixed64_extension_lite, 1, 808);
  1590. message->SetExtension(unittest::packed_sfixed32_extension_lite, 1, 809);
  1591. message->SetExtension(unittest::packed_sfixed64_extension_lite, 1, 810);
  1592. message->SetExtension(unittest::packed_float_extension_lite, 1, 811);
  1593. message->SetExtension(unittest::packed_double_extension_lite, 1, 812);
  1594. message->SetExtension(unittest::packed_bool_extension_lite, 1, true);
  1595. message->SetExtension(unittest::packed_enum_extension_lite, 1,
  1596. unittest::FOREIGN_LITE_FOO);
  1597. }
  1598. // -------------------------------------------------------------------
  1599. void TestUtilLite::ExpectPackedExtensionsSet(
  1600. const unittest::TestPackedExtensionsLite& message) {
  1601. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_int32_extension_lite));
  1602. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_int64_extension_lite));
  1603. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_uint32_extension_lite));
  1604. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_uint64_extension_lite));
  1605. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sint32_extension_lite));
  1606. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sint64_extension_lite));
  1607. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_fixed32_extension_lite));
  1608. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_fixed64_extension_lite));
  1609. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sfixed32_extension_lite));
  1610. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sfixed64_extension_lite));
  1611. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_float_extension_lite));
  1612. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_double_extension_lite));
  1613. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_bool_extension_lite));
  1614. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_enum_extension_lite));
  1615. EXPECT_EQ(601,
  1616. message.GetExtension(unittest::packed_int32_extension_lite, 0));
  1617. EXPECT_EQ(602,
  1618. message.GetExtension(unittest::packed_int64_extension_lite, 0));
  1619. EXPECT_EQ(603,
  1620. message.GetExtension(unittest::packed_uint32_extension_lite, 0));
  1621. EXPECT_EQ(604,
  1622. message.GetExtension(unittest::packed_uint64_extension_lite, 0));
  1623. EXPECT_EQ(605,
  1624. message.GetExtension(unittest::packed_sint32_extension_lite, 0));
  1625. EXPECT_EQ(606,
  1626. message.GetExtension(unittest::packed_sint64_extension_lite, 0));
  1627. EXPECT_EQ(607,
  1628. message.GetExtension(unittest::packed_fixed32_extension_lite, 0));
  1629. EXPECT_EQ(608,
  1630. message.GetExtension(unittest::packed_fixed64_extension_lite, 0));
  1631. EXPECT_EQ(609,
  1632. message.GetExtension(unittest::packed_sfixed32_extension_lite, 0));
  1633. EXPECT_EQ(610,
  1634. message.GetExtension(unittest::packed_sfixed64_extension_lite, 0));
  1635. EXPECT_EQ(611,
  1636. message.GetExtension(unittest::packed_float_extension_lite, 0));
  1637. EXPECT_EQ(612,
  1638. message.GetExtension(unittest::packed_double_extension_lite, 0));
  1639. EXPECT_EQ(true,
  1640. message.GetExtension(unittest::packed_bool_extension_lite, 0));
  1641. EXPECT_EQ(unittest::FOREIGN_LITE_BAR,
  1642. message.GetExtension(unittest::packed_enum_extension_lite, 0));
  1643. EXPECT_EQ(701,
  1644. message.GetExtension(unittest::packed_int32_extension_lite, 1));
  1645. EXPECT_EQ(702,
  1646. message.GetExtension(unittest::packed_int64_extension_lite, 1));
  1647. EXPECT_EQ(703,
  1648. message.GetExtension(unittest::packed_uint32_extension_lite, 1));
  1649. EXPECT_EQ(704,
  1650. message.GetExtension(unittest::packed_uint64_extension_lite, 1));
  1651. EXPECT_EQ(705,
  1652. message.GetExtension(unittest::packed_sint32_extension_lite, 1));
  1653. EXPECT_EQ(706,
  1654. message.GetExtension(unittest::packed_sint64_extension_lite, 1));
  1655. EXPECT_EQ(707,
  1656. message.GetExtension(unittest::packed_fixed32_extension_lite, 1));
  1657. EXPECT_EQ(708,
  1658. message.GetExtension(unittest::packed_fixed64_extension_lite, 1));
  1659. EXPECT_EQ(709,
  1660. message.GetExtension(unittest::packed_sfixed32_extension_lite, 1));
  1661. EXPECT_EQ(710,
  1662. message.GetExtension(unittest::packed_sfixed64_extension_lite, 1));
  1663. EXPECT_EQ(711,
  1664. message.GetExtension(unittest::packed_float_extension_lite, 1));
  1665. EXPECT_EQ(712,
  1666. message.GetExtension(unittest::packed_double_extension_lite, 1));
  1667. EXPECT_EQ(false,
  1668. message.GetExtension(unittest::packed_bool_extension_lite, 1));
  1669. EXPECT_EQ(unittest::FOREIGN_LITE_BAZ,
  1670. message.GetExtension(unittest::packed_enum_extension_lite, 1));
  1671. }
  1672. // -------------------------------------------------------------------
  1673. void TestUtilLite::ExpectPackedExtensionsClear(
  1674. const unittest::TestPackedExtensionsLite& message) {
  1675. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_int32_extension_lite));
  1676. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_int64_extension_lite));
  1677. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_uint32_extension_lite));
  1678. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_uint64_extension_lite));
  1679. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_sint32_extension_lite));
  1680. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_sint64_extension_lite));
  1681. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_fixed32_extension_lite));
  1682. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_fixed64_extension_lite));
  1683. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_sfixed32_extension_lite));
  1684. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_sfixed64_extension_lite));
  1685. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_float_extension_lite));
  1686. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_double_extension_lite));
  1687. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_bool_extension_lite));
  1688. EXPECT_EQ(0, message.ExtensionSize(unittest::packed_enum_extension_lite));
  1689. }
  1690. // -------------------------------------------------------------------
  1691. void TestUtilLite::ExpectPackedExtensionsModified(
  1692. const unittest::TestPackedExtensionsLite& message) {
  1693. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_int32_extension_lite));
  1694. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_int64_extension_lite));
  1695. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_uint32_extension_lite));
  1696. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_uint64_extension_lite));
  1697. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sint32_extension_lite));
  1698. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sint64_extension_lite));
  1699. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_fixed32_extension_lite));
  1700. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_fixed64_extension_lite));
  1701. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sfixed32_extension_lite));
  1702. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_sfixed64_extension_lite));
  1703. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_float_extension_lite));
  1704. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_double_extension_lite));
  1705. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_bool_extension_lite));
  1706. ASSERT_EQ(2, message.ExtensionSize(unittest::packed_enum_extension_lite));
  1707. EXPECT_EQ(601,
  1708. message.GetExtension(unittest::packed_int32_extension_lite, 0));
  1709. EXPECT_EQ(602,
  1710. message.GetExtension(unittest::packed_int64_extension_lite, 0));
  1711. EXPECT_EQ(603,
  1712. message.GetExtension(unittest::packed_uint32_extension_lite, 0));
  1713. EXPECT_EQ(604,
  1714. message.GetExtension(unittest::packed_uint64_extension_lite, 0));
  1715. EXPECT_EQ(605,
  1716. message.GetExtension(unittest::packed_sint32_extension_lite, 0));
  1717. EXPECT_EQ(606,
  1718. message.GetExtension(unittest::packed_sint64_extension_lite, 0));
  1719. EXPECT_EQ(607,
  1720. message.GetExtension(unittest::packed_fixed32_extension_lite, 0));
  1721. EXPECT_EQ(608,
  1722. message.GetExtension(unittest::packed_fixed64_extension_lite, 0));
  1723. EXPECT_EQ(609,
  1724. message.GetExtension(unittest::packed_sfixed32_extension_lite, 0));
  1725. EXPECT_EQ(610,
  1726. message.GetExtension(unittest::packed_sfixed64_extension_lite, 0));
  1727. EXPECT_EQ(611,
  1728. message.GetExtension(unittest::packed_float_extension_lite, 0));
  1729. EXPECT_EQ(612,
  1730. message.GetExtension(unittest::packed_double_extension_lite, 0));
  1731. EXPECT_EQ(true,
  1732. message.GetExtension(unittest::packed_bool_extension_lite, 0));
  1733. EXPECT_EQ(unittest::FOREIGN_LITE_BAR,
  1734. message.GetExtension(unittest::packed_enum_extension_lite, 0));
  1735. // Actually verify the second (modified) elements now.
  1736. EXPECT_EQ(801,
  1737. message.GetExtension(unittest::packed_int32_extension_lite, 1));
  1738. EXPECT_EQ(802,
  1739. message.GetExtension(unittest::packed_int64_extension_lite, 1));
  1740. EXPECT_EQ(803,
  1741. message.GetExtension(unittest::packed_uint32_extension_lite, 1));
  1742. EXPECT_EQ(804,
  1743. message.GetExtension(unittest::packed_uint64_extension_lite, 1));
  1744. EXPECT_EQ(805,
  1745. message.GetExtension(unittest::packed_sint32_extension_lite, 1));
  1746. EXPECT_EQ(806,
  1747. message.GetExtension(unittest::packed_sint64_extension_lite, 1));
  1748. EXPECT_EQ(807,
  1749. message.GetExtension(unittest::packed_fixed32_extension_lite, 1));
  1750. EXPECT_EQ(808,
  1751. message.GetExtension(unittest::packed_fixed64_extension_lite, 1));
  1752. EXPECT_EQ(809,
  1753. message.GetExtension(unittest::packed_sfixed32_extension_lite, 1));
  1754. EXPECT_EQ(810,
  1755. message.GetExtension(unittest::packed_sfixed64_extension_lite, 1));
  1756. EXPECT_EQ(811,
  1757. message.GetExtension(unittest::packed_float_extension_lite, 1));
  1758. EXPECT_EQ(812,
  1759. message.GetExtension(unittest::packed_double_extension_lite, 1));
  1760. EXPECT_EQ(true,
  1761. message.GetExtension(unittest::packed_bool_extension_lite, 1));
  1762. EXPECT_EQ(unittest::FOREIGN_LITE_FOO,
  1763. message.GetExtension(unittest::packed_enum_extension_lite, 1));
  1764. }
  1765. } // namespace protobuf
  1766. } // namespace google