jsondeserializationtest.cpp 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579
  1. /*
  2. * MIT License
  3. *
  4. * Copyright (c) 2020 Alexey Edelev <semlanik@gmail.com>
  5. *
  6. * This file is part of QtProtobuf project https://git.semlanik.org/semlanik/qtprotobuf
  7. *
  8. * Permission is hereby granted, free of charge, to any person obtaining a copy of this
  9. * software and associated documentation files (the "Software"), to deal in the Software
  10. * without restriction, including without limitation the rights to use, copy, modify,
  11. * merge, publish, distribute, sublicense, and/or sell copies of the Software, and
  12. * to permit persons to whom the Software is furnished to do so, subject to the following
  13. * conditions:
  14. *
  15. * The above copyright notice and this permission notice shall be included in all copies
  16. * or substantial portions of the Software.
  17. *
  18. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
  19. * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  20. * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
  21. * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  22. * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  23. * DEALINGS IN THE SOFTWARE.
  24. */
  25. #include <gtest/gtest.h>
  26. #include <QByteArray>
  27. #include <QString>
  28. #include <qprotobufjsonserializer.h>
  29. #include "simpletest.qpb.h"
  30. using namespace qtprotobufnamespace::tests;
  31. namespace QtProtobuf {
  32. namespace tests {
  33. class JsonDeserializationTest : public ::testing::Test
  34. {
  35. public:
  36. JsonDeserializationTest() = default;
  37. void SetUp() override;
  38. static void SetUpTestCase() {
  39. QtProtobuf::qRegisterProtobufTypes();
  40. }
  41. protected:
  42. std::unique_ptr<QProtobufJsonSerializer> serializer;
  43. };
  44. void JsonDeserializationTest::SetUp() {
  45. serializer.reset(new QProtobufJsonSerializer);
  46. }
  47. TEST_F(JsonDeserializationTest, FixedInt32MessageSerializeTest)
  48. {
  49. SimpleFixedInt32Message msg;
  50. msg.deserialize(serializer.get(), QByteArray("{\"testFieldFixedInt32\": 5}"));
  51. EXPECT_EQ(msg.testFieldFixedInt32(), 5);
  52. msg.deserialize(serializer.get(), QByteArray("{\"testFieldFixedInt32\": 0}"));
  53. EXPECT_EQ(msg.testFieldFixedInt32(), 0);
  54. msg.deserialize(serializer.get(), QByteArray("{\"testFieldFixedInt32\":555}"));
  55. EXPECT_EQ(msg.testFieldFixedInt32(), 555);
  56. }
  57. TEST_F(JsonDeserializationTest, SFixedInt32MessageSerializeTest)
  58. {
  59. SimpleSFixedInt32Message msg;
  60. msg.deserialize(serializer.get(), QByteArray("{\"testFieldFixedInt32\":555}"));
  61. EXPECT_EQ(msg.testFieldFixedInt32(), 555);
  62. msg.deserialize(serializer.get(), QByteArray("{\"testFieldFixedInt32\":-555}"));
  63. EXPECT_EQ(msg.testFieldFixedInt32(), -555);
  64. }
  65. TEST_F(JsonDeserializationTest, Int32MessageSerializeTest)
  66. {
  67. SimpleIntMessage msg;
  68. msg.deserialize(serializer.get(), QByteArray("{\"testFieldInt\":555}"));
  69. EXPECT_EQ(msg.testFieldInt(), 555);
  70. }
  71. TEST_F(JsonDeserializationTest, SInt32MessageSerializeTest)
  72. {
  73. SimpleSIntMessage msg;
  74. msg.deserialize(serializer.get(), QByteArray("{\"testFieldInt\":555}"));
  75. EXPECT_EQ(msg.testFieldInt(), 555);
  76. msg.deserialize(serializer.get(), QByteArray("{\"testFieldInt\":-555}"));
  77. EXPECT_EQ(msg.testFieldInt(), -555);
  78. }
  79. TEST_F(JsonDeserializationTest, UInt32MessageSerializeTest)
  80. {
  81. SimpleUIntMessage msg;
  82. msg.deserialize(serializer.get(), QByteArray("{\"testFieldInt\":555}"));
  83. EXPECT_EQ(msg.testFieldInt(), 555);
  84. }
  85. TEST_F(JsonDeserializationTest, FixedInt64MessageSerializeTest)
  86. {
  87. SimpleFixedInt64Message msg;
  88. msg.deserialize(serializer.get(), QByteArray("{\"testFieldFixedInt64\":555}"));
  89. EXPECT_EQ(msg.testFieldFixedInt64(), 555);
  90. }
  91. TEST_F(JsonDeserializationTest, Int64MessageSerializeTest)
  92. {
  93. SimpleInt64Message msg;
  94. msg.deserialize(serializer.get(), QByteArray("{\"testFieldInt\":555}"));
  95. EXPECT_EQ(msg.testFieldInt(), 555);
  96. }
  97. TEST_F(JsonDeserializationTest, SInt64MessageSerializeTest)
  98. {
  99. SimpleSInt64Message msg;
  100. msg.deserialize(serializer.get(), QByteArray("{\"testFieldInt\":555}"));
  101. EXPECT_EQ(msg.testFieldInt(), 555);
  102. msg.deserialize(serializer.get(), QByteArray("{\"testFieldInt\":-555}"));
  103. EXPECT_EQ(msg.testFieldInt(), -555);
  104. }
  105. TEST_F(JsonDeserializationTest, UInt64MessageSerializeTest)
  106. {
  107. SimpleUInt64Message msg;
  108. msg.deserialize(serializer.get(), QByteArray("{\"testFieldInt\":555}"));
  109. EXPECT_EQ(msg.testFieldInt(), 555);
  110. }
  111. TEST_F(JsonDeserializationTest, FloatMessageSerializeTest)
  112. {
  113. SimpleFloatMessage test;
  114. test.deserialize(serializer.get(), QByteArray("{\"testFieldFloat\": 0.1}"));
  115. EXPECT_EQ(test.testFieldFloat(), 0.1f);
  116. test.deserialize(serializer.get(), QByteArray("{\"testFieldFloat\": 1.17549e-38}"));
  117. EXPECT_EQ(test.testFieldFloat(), 1.17549e-38f);
  118. test.deserialize(serializer.get(), QByteArray("{\"testFieldFloat\": 3.40282e+38}"));
  119. EXPECT_EQ(test.testFieldFloat(), 3.40282e+38f);
  120. test.deserialize(serializer.get(), QByteArray("{\"testFieldFloat\": -4.2}"));
  121. EXPECT_EQ(test.testFieldFloat(), -4.2f);
  122. test.deserialize(serializer.get(), QByteArray("{\"testFieldFloat\": 0}"));
  123. EXPECT_EQ(test.testFieldFloat(), 0.0f);
  124. test.deserialize(serializer.get(), QByteArray("{\"testFieldFloat\": 0.0}"));
  125. EXPECT_EQ(test.testFieldFloat(), 0.0f);
  126. }
  127. TEST_F(JsonDeserializationTest, DoubleMessageSerializeTest)
  128. {
  129. SimpleDoubleMessage test;
  130. test.deserialize(serializer.get(), QByteArray("{\"testFieldDouble\": 0.1}"));
  131. EXPECT_EQ(test.testFieldDouble(), 0.1);
  132. test.deserialize(serializer.get(), QByteArray("{\"testFieldDouble\": 2.2250738585072014e-308}"));
  133. EXPECT_EQ(test.testFieldDouble(), 2.2250738585072014e-308);
  134. test.deserialize(serializer.get(), QByteArray("{\"testFieldDouble\": 1.7976931348623157e+308}"));
  135. EXPECT_EQ(test.testFieldDouble(), 1.7976931348623157e+308);
  136. test.deserialize(serializer.get(), QByteArray("{\"testFieldDouble\": 0}"));
  137. EXPECT_EQ(test.testFieldDouble(), 0);
  138. test.deserialize(serializer.get(), QByteArray("{\"testFieldDouble\": 0.0}"));
  139. EXPECT_EQ(test.testFieldDouble(), 0);
  140. }
  141. TEST_F(JsonDeserializationTest, StringMessageSerializeTest)
  142. {
  143. SimpleStringMessage test;
  144. test.deserialize(serializer.get(), QByteArray("{\"testFieldString\":\"qwerty\"}"));
  145. EXPECT_STREQ(test.testFieldString().toStdString().c_str(), "qwerty");
  146. }
  147. TEST_F(JsonDeserializationTest, BytesMessageSerializeTest)
  148. {
  149. SimpleBytesMessage test;
  150. test.deserialize(serializer.get(), QByteArray("{\"testFieldBytes\":\"ABKEBDKBBFlWAFJmSnZqeHFiZ3ZGd1MxWXZPWlhndGo1ZmZHTFM3QAFpTkh6OW9aSW9LYm03ejhIATc5eEJ1cAlQa3BRWHZHb08wOU9ZOXhSYXd4M2VPQXM5eGpvVEExeEpocncyOFRBY3ExQ2ViWWxDOVdVZlFDNmhJYW50YU5keUhpS1RvZmZpMFp0N2xhNDJTUnhYWlNQNEd1eGJjWklwNTNwSm55Q3dmQ3kxcWRGY3pUMGRtbjdoOGZweUFkZW1FYXZ3RmVkYTRkMFBBcEdmU1Uyakx0MzlYOGtZVUJ4Tk0yV2dBTFJCZ0hkVmRlODdxNlBpNVU2OVRqaE1kMjhXMVNGRDFEeHlvZ0NDcnFPY3QyWlBJQ29MbnJxZEYzT2ROempSVkxmZXl2UThMZ0x2Uk5GUjlXZldBeUF6NzluS2dCYW1kOE50bHZ0NE1nMzVFNWdWUzJnN0FRN3JrbTcyY0Jkblc5c0NFeUdhYmVYQXVINWo0R1JidUxUN3FCWldEY0ZMRjRTc0NkUzNXZkZHZE5IZndhaWp6eWtCeW83MVB2RlZsVFhIMldKV29GdlI1RkFMakJUbjdiQ2RQMHBBaVNiTENZOFh6Mk1zYzNkQmI1RmY5R0lTUGJVcE5tVXZCZE1aTUhRdnFPbVROWEVQcE4wYjc0TURPTVFmV0pTaE9vM05rQXZNanMIKg\"}"));
  151. EXPECT_STREQ(test.testFieldBytes().toHex().toStdString().c_str(), "0012840432810459560052664a766a78716267764677533159764f5a5867746a356666474c53374001694e487a396f5a496f4b626d377a38480137397842757009506b70515876476f4f30394f5939785261777833654f417339786a6f544131784a68727732385441637131436562596c43395755665143366849616e74614e647948694b546f666669305a74376c613432535278585a53503447757862635a49703533704a6e79437766437931716446637a5430646d6e3768386670794164656d456176774665646134643050417047665355326a4c74333958386b595542784e4d325767414c524267486456646538377136506935553639546a684d6432385731534644314478796f67434372714f6374325a5049436f4c6e72716446334f644e7a6a52564c6665797651384c674c76524e4652395766574179417a37396e4b6742616d64384e746c7674344d6733354535675653326737415137726b6d37326342646e5739734345794761626558417548356a34475262754c543771425a574463464c463453734364533357664647644e48667761696a7a796b42796f3731507646566c54584832574a576f4676523546414c6a42546e37624364503070416953624c435938587a324d73633364426235466639474953506255704e6d557642644d5a4d485176714f6d544e584550704e306237344d444f4d5166574a53684f6f334e6b41764d6a73082a");
  152. }
  153. TEST_F(JsonDeserializationTest, ComplexTypeSerializeTest)
  154. {
  155. ComplexMessage test;
  156. test.deserialize(serializer.get(), QByteArray("{\"testComplexField\":{\"testFieldString\":\"qwerty\"},\"testFieldInt\":42}"));
  157. EXPECT_EQ(test.testFieldInt(), 42);
  158. EXPECT_STREQ(test.testComplexField().testFieldString().toStdString().c_str(), "qwerty");
  159. test.setTestFieldInt(99);
  160. test.setTestComplexField({});
  161. test.deserialize(serializer.get(), QByteArray("{\"testFieldInt\":42,\"testComplexField\":{\"testFieldString\":\"qwerty\"}}"));
  162. EXPECT_EQ(test.testFieldInt(), 42);
  163. EXPECT_STREQ(test.testComplexField().testFieldString().toStdString().c_str(), "qwerty");
  164. test.setTestFieldInt(0);
  165. test.setTestComplexField({});
  166. test.deserialize(serializer.get(), QByteArray("{\"testComplexField\":{\"testFieldString\":\"YVRfJvjxqbgvFwS1YvOZXgtj5ffGLS7AiNHz9oZIoKbm7z8H79xBuyPkpQXvGoO09OY9xRawx3eOAs9xjoTA1xJhrw28TAcq1CebYlC9WUfQC6hIantaNdyHiKToffi0Zt7la42SRxXZSP4GuxbcZIp53pJnyCwfCy1qdFczT0dmn7h8fpyAdemEavwFeda4d0PApGfSU2jLt39X8kYUBxNM2WgALRBgHdVde87q6Pi5U69TjhMd28W1SFD1DxyogCCrqOct2ZPICoLnrqdF3OdNzjRVLfeyvQ8LgLvRNFR9WfWAyAz79nKgBamd8Ntlvt4Mg35E5gVS2g7AQ7rkm72cBdnW9sCEyGabeXAuH5j4GRbuLT7qBZWDcFLF4SsCdS3WfFGdNHfwaijzykByo71PvFVlTXH2WJWoFvR5FALjBTn7bCdP0pAiSbLCY8Xz2Msc3dBb5Ff9GISPbUpNmUvBdMZMHQvqOmTNXEPpN0b74MDOMQfWJShOo3NkAvMjs\"},\"testFieldInt\":42}"));
  167. EXPECT_STREQ(test.testComplexField().testFieldString().toStdString().c_str(), "YVRfJvjxqbgvFwS1YvOZXgtj5ffGLS7AiNHz9oZIoKbm7z8H79xBuyPkpQXvGoO09OY9xRawx3eOAs9xjoTA1xJhrw28TAcq1CebYlC9WUfQC6hIantaNdyHiKToffi0Zt7la42SRxXZSP4GuxbcZIp53pJnyCwfCy1qdFczT0dmn7h8fpyAdemEavwFeda4d0PApGfSU2jLt39X8kYUBxNM2WgALRBgHdVde87q6Pi5U69TjhMd28W1SFD1DxyogCCrqOct2ZPICoLnrqdF3OdNzjRVLfeyvQ8LgLvRNFR9WfWAyAz79nKgBamd8Ntlvt4Mg35E5gVS2g7AQ7rkm72cBdnW9sCEyGabeXAuH5j4GRbuLT7qBZWDcFLF4SsCdS3WfFGdNHfwaijzykByo71PvFVlTXH2WJWoFvR5FALjBTn7bCdP0pAiSbLCY8Xz2Msc3dBb5Ff9GISPbUpNmUvBdMZMHQvqOmTNXEPpN0b74MDOMQfWJShOo3NkAvMjs");
  168. EXPECT_EQ(test.testFieldInt(), 42);
  169. test.setTestFieldInt(0);
  170. test.setTestComplexField({});
  171. test.deserialize(serializer.get(), QByteArray("{\"testFieldInt\":42,\"testComplexField\":{\"testFieldString\":\"YVRfJvjxqbgvFwS1YvOZXgtj5ffGLS7AiNHz9oZIoKbm7z8H79xBuyPkpQXvGoO09OY9xRawx3eOAs9xjoTA1xJhrw28TAcq1CebYlC9WUfQC6hIantaNdyHiKToffi0Zt7la42SRxXZSP4GuxbcZIp53pJnyCwfCy1qdFczT0dmn7h8fpyAdemEavwFeda4d0PApGfSU2jLt39X8kYUBxNM2WgALRBgHdVde87q6Pi5U69TjhMd28W1SFD1DxyogCCrqOct2ZPICoLnrqdF3OdNzjRVLfeyvQ8LgLvRNFR9WfWAyAz79nKgBamd8Ntlvt4Mg35E5gVS2g7AQ7rkm72cBdnW9sCEyGabeXAuH5j4GRbuLT7qBZWDcFLF4SsCdS3WfFGdNHfwaijzykByo71PvFVlTXH2WJWoFvR5FALjBTn7bCdP0pAiSbLCY8Xz2Msc3dBb5Ff9GISPbUpNmUvBdMZMHQvqOmTNXEPpN0b74MDOMQfWJShOo3NkAvMjs\"}}"));
  172. EXPECT_STREQ(test.testComplexField().testFieldString().toStdString().c_str(), "YVRfJvjxqbgvFwS1YvOZXgtj5ffGLS7AiNHz9oZIoKbm7z8H79xBuyPkpQXvGoO09OY9xRawx3eOAs9xjoTA1xJhrw28TAcq1CebYlC9WUfQC6hIantaNdyHiKToffi0Zt7la42SRxXZSP4GuxbcZIp53pJnyCwfCy1qdFczT0dmn7h8fpyAdemEavwFeda4d0PApGfSU2jLt39X8kYUBxNM2WgALRBgHdVde87q6Pi5U69TjhMd28W1SFD1DxyogCCrqOct2ZPICoLnrqdF3OdNzjRVLfeyvQ8LgLvRNFR9WfWAyAz79nKgBamd8Ntlvt4Mg35E5gVS2g7AQ7rkm72cBdnW9sCEyGabeXAuH5j4GRbuLT7qBZWDcFLF4SsCdS3WfFGdNHfwaijzykByo71PvFVlTXH2WJWoFvR5FALjBTn7bCdP0pAiSbLCY8Xz2Msc3dBb5Ff9GISPbUpNmUvBdMZMHQvqOmTNXEPpN0b74MDOMQfWJShOo3NkAvMjs");
  173. EXPECT_EQ(test.testFieldInt(), 42);
  174. test.setTestFieldInt(0);
  175. test.setTestComplexField({});
  176. test.deserialize(serializer.get(), QByteArray("{\"testComplexField\":{\"testFieldString\":\"qwerty\"},\"testFieldInt\":-45}"));
  177. EXPECT_STREQ(test.testComplexField().testFieldString().toStdString().c_str(), "qwerty");
  178. EXPECT_EQ(test.testFieldInt(), -45);
  179. test.setTestFieldInt(0);
  180. test.setTestComplexField({});
  181. test.deserialize(serializer.get(), QByteArray("{\"testFieldInt\":-45,\"testComplexField\":{\"testFieldString\":\"qwerty\"}}"));
  182. EXPECT_STREQ(test.testComplexField().testFieldString().toStdString().c_str(), "qwerty");
  183. EXPECT_EQ(test.testFieldInt(), -45);
  184. }
  185. TEST_F(JsonDeserializationTest, RepeatedIntMessageTest)
  186. {
  187. RepeatedIntMessage test;
  188. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[0,1,321,-65999,123245,-3,3]}");
  189. EXPECT_TRUE(test.testRepeatedInt() == QtProtobuf::int32List({0, 1, 321, -65999, 123245, -3, 3}));
  190. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[]}");
  191. EXPECT_TRUE(test.testRepeatedInt().isEmpty());
  192. }
  193. TEST_F(JsonDeserializationTest, RepeatedSIntMessageTest)
  194. {
  195. RepeatedSIntMessage test;
  196. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[1,321,-65999,123245,-3,3,0]}");
  197. EXPECT_TRUE(test.testRepeatedInt() == QtProtobuf::sint32List({1, 321, -65999, 123245, -3, 3, 0}));
  198. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[]}");
  199. EXPECT_TRUE(test.testRepeatedInt().isEmpty());
  200. }
  201. TEST_F(JsonDeserializationTest, RepeatedUIntMessageTest)
  202. {
  203. RepeatedUIntMessage test;
  204. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[1,0,321,65999,123245,3]}");
  205. EXPECT_TRUE(test.testRepeatedInt() == QtProtobuf::uint32List({1, 0, 321, 65999, 123245, 3}));
  206. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[]}");
  207. EXPECT_TRUE(test.testRepeatedInt().isEmpty());
  208. }
  209. TEST_F(JsonDeserializationTest, RepeatedInt64MessageTest)
  210. {
  211. RepeatedInt64Message test;
  212. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[1,321,-65999,12324523123123,-3,0,3]}");
  213. EXPECT_TRUE(test.testRepeatedInt() == QtProtobuf::int64List({1, 321, -65999, 12324523123123, -3, 0, 3}));
  214. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[]}");
  215. EXPECT_TRUE(test.testRepeatedInt().isEmpty());
  216. }
  217. TEST_F(JsonDeserializationTest, RepeatedSInt64MessageTest)
  218. {
  219. RepeatedSInt64Message test;
  220. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[1,321,-65999,12324523123123,0,-3,3]}");
  221. EXPECT_TRUE(test.testRepeatedInt() == QtProtobuf::sint64List({1, 321, -65999, 12324523123123, 0, -3, 3}));
  222. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[]}");
  223. EXPECT_TRUE(test.testRepeatedInt().isEmpty());
  224. }
  225. TEST_F(JsonDeserializationTest, RepeatedUInt64MessageTest)
  226. {
  227. RepeatedUInt64Message test;
  228. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[1,321,0,65999,123245,123245324235425234,3]}");
  229. EXPECT_TRUE(test.testRepeatedInt() == QtProtobuf::uint64List({1, 321, 0, 65999, 123245, 123245324235425234, 3}));
  230. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[]}");
  231. EXPECT_TRUE(test.testRepeatedInt().isEmpty());
  232. }
  233. TEST_F(JsonDeserializationTest, RepeatedFixedIntMessageTest)
  234. {
  235. RepeatedFixedIntMessage test;
  236. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[1,321,65999,12324523,3,3,0]}");
  237. EXPECT_TRUE(test.testRepeatedInt() == QtProtobuf::fixed32List({1, 321, 65999, 12324523, 3, 3, 0}));
  238. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[]}");
  239. EXPECT_TRUE(test.testRepeatedInt().isEmpty());
  240. }
  241. TEST_F(JsonDeserializationTest, RepeatedSFixedIntMessageTest)
  242. {
  243. RepeatedSFixedIntMessage test;
  244. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[0,1,321,-65999,12324523,-3,3]}");
  245. EXPECT_TRUE(test.testRepeatedInt() == QtProtobuf::sfixed32List({0, 1, 321, -65999, 12324523, -3, 3}));
  246. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[]}");
  247. EXPECT_TRUE(test.testRepeatedInt().isEmpty());
  248. }
  249. TEST_F(JsonDeserializationTest, RepeatedFixedInt64MessageTest)
  250. {
  251. RepeatedFixedInt64Message test;
  252. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[1,321,65999,123245324235425234,3,3,0]}");
  253. EXPECT_TRUE(test.testRepeatedInt() == QtProtobuf::fixed64List({1, 321, 65999, 123245324235425234, 3, 3, 0}));
  254. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[]}");
  255. EXPECT_TRUE(test.testRepeatedInt().isEmpty());
  256. }
  257. TEST_F(JsonDeserializationTest, RepeatedSFixedInt64MessageTest)
  258. {
  259. RepeatedSFixedInt64Message test;
  260. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[1,321,-65999,123245324235425234,-3,3,0]}");
  261. EXPECT_TRUE(test.testRepeatedInt() == QtProtobuf::sfixed64List({1, 321, -65999, 123245324235425234, -3, 3, 0}));
  262. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[1,321,-65999,11,123245324235425234,-3,3,0]}");
  263. EXPECT_TRUE(test.testRepeatedInt() == QtProtobuf::sfixed64List({1, 321, -65999, 11, 123245324235425234, -3, 3, 0}));
  264. test.deserialize(serializer.get(), "{\"testRepeatedInt\":[]}");
  265. EXPECT_TRUE(test.testRepeatedInt().isEmpty());
  266. }
  267. TEST_F(JsonDeserializationTest, RepeatedStringMessageTest)
  268. {
  269. RepeatedStringMessage test;
  270. test.deserialize(serializer.get(), "{\"testRepeatedString\":[\"aaaa\",\"bbbbb\",\"ccc\",\"dddddd\",\"eeeee\",\"\"]}");
  271. EXPECT_TRUE(test.testRepeatedString() == QStringList({"aaaa","bbbbb","ccc","dddddd","eeeee",""}));
  272. test.deserialize(serializer.get(), "{\"testRepeatedString\":[]}");
  273. EXPECT_TRUE(test.testRepeatedString().isEmpty());
  274. }
  275. TEST_F(JsonDeserializationTest, RepeatedDoubleMessageTest)
  276. {
  277. RepeatedDoubleMessage test;
  278. test.deserialize(serializer.get(), "{\"testRepeatedDouble\":[0.1,0.2,0.3,0.4,0.5]}");
  279. EXPECT_TRUE(test.testRepeatedDouble() == QList<double>({0.1, 0.2, 0.3, 0.4, 0.5}));
  280. test.deserialize(serializer.get(), "{\"testRepeatedDouble\":[]}");
  281. EXPECT_TRUE(test.testRepeatedDouble().isEmpty());
  282. }
  283. TEST_F(JsonDeserializationTest, RepeatedBytesMessageTest)
  284. {
  285. RepeatedBytesMessage test;
  286. test.deserialize(serializer.get(), "{\"testRepeatedBytes\":[\"AQIDBAUG\",\"/////w==\",\"6urq6uo=\",\"AQIDBAUG\"]}");
  287. EXPECT_TRUE(test.testRepeatedBytes() == QList<QByteArray>({QByteArray::fromHex("010203040506"),
  288. QByteArray::fromHex("ffffffff"),
  289. QByteArray::fromHex("eaeaeaeaea"),
  290. QByteArray::fromHex("010203040506")}));
  291. test.deserialize(serializer.get(), "{\"testRepeatedBytes\":[]}");
  292. EXPECT_TRUE(test.testRepeatedBytes().isEmpty());
  293. test.deserialize(serializer.get(), "{\"testRepeatedBytes\":[\"AQIDBAUG\",\"\",\"6urq6uo=\",\"AQIDBAUG\"]}");
  294. EXPECT_TRUE(test.testRepeatedBytes() == QList<QByteArray>({QByteArray::fromHex("010203040506"),
  295. QByteArray::fromHex(""),
  296. QByteArray::fromHex("eaeaeaeaea"),
  297. QByteArray::fromHex("010203040506")}));
  298. }
  299. TEST_F(JsonDeserializationTest, RepeatedFloatMessageTest)
  300. {
  301. RepeatedFloatMessage test;
  302. test.deserialize(serializer.get(), "{\"testRepeatedFloat\":[0.4,1.2,0.5,1.4,0.6]}");
  303. EXPECT_TRUE(test.testRepeatedFloat() == QList<float>({0.4f, 1.2f, 0.5f, 1.4f, 0.6f}));
  304. test.deserialize(serializer.get(), "{\"testRepeatedFloat\":[]}");
  305. EXPECT_TRUE(test.testRepeatedFloat().isEmpty());
  306. }
  307. TEST_F(JsonDeserializationTest, BoolMessageSerializeTest)
  308. {
  309. SimpleBoolMessage test;
  310. test.deserialize(serializer.get(), "{\"testFieldBool\":true}");
  311. EXPECT_TRUE(test.testFieldBool());
  312. test.deserialize(serializer.get(), "{\"testFieldBool\":false}");
  313. EXPECT_FALSE(test.testFieldBool());
  314. }
  315. TEST_F(JsonDeserializationTest, SimpleEnumMessageSerializeTest)
  316. {
  317. SimpleEnumMessage test;
  318. test.deserialize(serializer.get(), "{\"localEnum\":\"LOCAL_ENUM_VALUE2\"}");
  319. EXPECT_EQ(test.localEnum(), SimpleEnumMessage::LOCAL_ENUM_VALUE2);
  320. }
  321. TEST_F(JsonDeserializationTest, SimpleEnumListMessageTest)
  322. {
  323. SimpleEnumListMessage test;
  324. test.deserialize(serializer.get(), "{\"localEnumList\":[\"LOCAL_ENUM_VALUE0\",\"LOCAL_ENUM_VALUE1\",\"LOCAL_ENUM_VALUE2\",\"LOCAL_ENUM_VALUE1\",\"LOCAL_ENUM_VALUE2\",\"LOCAL_ENUM_VALUE3\"]}");
  325. EXPECT_TRUE(test.localEnumList() == SimpleEnumListMessage::LocalEnumRepeated({SimpleEnumListMessage::LOCAL_ENUM_VALUE0,
  326. SimpleEnumListMessage::LOCAL_ENUM_VALUE1,
  327. SimpleEnumListMessage::LOCAL_ENUM_VALUE2,
  328. SimpleEnumListMessage::LOCAL_ENUM_VALUE1,
  329. SimpleEnumListMessage::LOCAL_ENUM_VALUE2,
  330. SimpleEnumListMessage::LOCAL_ENUM_VALUE3}));
  331. test.deserialize(serializer.get(), "{\"localEnumList\":[]}");
  332. EXPECT_TRUE(test.localEnumList().isEmpty());
  333. }
  334. TEST_F(JsonDeserializationTest, RepeatedComplexMessageTest)
  335. {
  336. RepeatedComplexMessage test;
  337. test.deserialize(serializer.get(), "{\"testRepeatedComplex\":[{\"testComplexField\":{\"testFieldString\":\"qwerty\"},\"testFieldInt\":25},{\"testComplexField\":{\"testFieldString\":\"\"},\"testFieldInt\":25},{\"testComplexField\":{\"testFieldString\":\"qwerty\"},\"testFieldInt\":25}]}");
  338. ASSERT_EQ(test.testRepeatedComplex().size(), 3);
  339. EXPECT_EQ(test.testRepeatedComplex()[0]->testFieldInt(), 25);
  340. EXPECT_EQ(test.testRepeatedComplex()[1]->testFieldInt(), 25);
  341. EXPECT_EQ(test.testRepeatedComplex()[2]->testFieldInt(), 25);
  342. EXPECT_STREQ(test.testRepeatedComplex()[0]->testComplexField().testFieldString().toStdString().c_str(), "qwerty");
  343. EXPECT_STREQ(test.testRepeatedComplex()[1]->testComplexField().testFieldString().toStdString().c_str(), "");
  344. EXPECT_STREQ(test.testRepeatedComplex()[2]->testComplexField().testFieldString().toStdString().c_str(), "qwerty");
  345. test.deserialize(serializer.get(), "{\"testRepeatedComplex\":[]}");
  346. EXPECT_TRUE(test.testRepeatedComplex().isEmpty());
  347. }
  348. TEST_F(JsonDeserializationTest, SimpleFixed32StringMapSerializeTest)
  349. {
  350. SimpleFixed32StringMapMessage test;
  351. test.deserialize(serializer.get(), "{\"mapField\":{\"10\":\"ten\",\"15\":\"fifteen\",\"42\":\"fourty two\",\"0\":\"\"}}");
  352. ASSERT_EQ(test.mapField().size(), 4);
  353. EXPECT_STREQ(test.mapField()[10].toStdString().c_str(), "ten");
  354. EXPECT_STREQ(test.mapField()[42].toStdString().c_str(), "fourty two");
  355. EXPECT_STREQ(test.mapField()[15].toStdString().c_str(), "fifteen");
  356. EXPECT_STREQ(test.mapField()[0].toStdString().c_str(), "");
  357. }
  358. TEST_F(JsonDeserializationTest, SimpleSFixed32StringMapSerializeTest)
  359. {
  360. SimpleSFixed32StringMapMessage test;
  361. test.deserialize(serializer.get(), "{\"mapField\":{\"-42\":\"minus fourty two\",\"10\":\"ten\",\"15\":\"fifteen\"}}");
  362. ASSERT_EQ(test.mapField().size(), 3);
  363. EXPECT_STREQ(test.mapField()[10].toStdString().c_str(), "ten");
  364. EXPECT_STREQ(test.mapField()[-42].toStdString().c_str(), "minus fourty two");
  365. EXPECT_STREQ(test.mapField()[15].toStdString().c_str(), "fifteen");
  366. }
  367. TEST_F(JsonDeserializationTest, SimpleInt32StringMapSerializeTest)
  368. {
  369. SimpleInt32StringMapMessage test;
  370. test.deserialize(serializer.get(), "{\"mapField\":{\"-10\":\"minus ten\",\"15\":\"fifteen\",\"42\":\"fourty two\"}}");
  371. ASSERT_EQ(test.mapField().size(), 3);
  372. EXPECT_STREQ(test.mapField()[-10].toStdString().c_str(), "minus ten");
  373. EXPECT_STREQ(test.mapField()[42].toStdString().c_str(), "fourty two");
  374. EXPECT_STREQ(test.mapField()[15].toStdString().c_str(), "fifteen");
  375. test.deserialize(serializer.get(), "{\"mapField\":{}}");
  376. ASSERT_EQ(test.mapField().size(), 0);
  377. }
  378. TEST_F(JsonDeserializationTest, SimpleSInt32StringMapSerializeTest)
  379. {
  380. SimpleSInt32StringMapMessage test;
  381. test.deserialize(serializer.get(), "{\"mapField\":{\"-42\":\"minus fourty two\",\"10\":\"ten\",\"15\":\"fifteen\"}}");
  382. ASSERT_EQ(test.mapField().size(), 3);
  383. EXPECT_STREQ(test.mapField()[10].toStdString().c_str(), "ten");
  384. EXPECT_STREQ(test.mapField()[-42].toStdString().c_str(), "minus fourty two");
  385. EXPECT_STREQ(test.mapField()[15].toStdString().c_str(), "fifteen");
  386. test.deserialize(serializer.get(), "{\"mapField\":{}}");
  387. ASSERT_EQ(test.mapField().size(), 0);
  388. }
  389. TEST_F(JsonDeserializationTest, SimpleUInt32StringMapSerializeTest)
  390. {
  391. SimpleUInt32StringMapMessage test;
  392. test.deserialize(serializer.get(), "{\"mapField\":{\"10\":\"ten\",\"15\":\"fifteen\",\"42\":\"fourty two\"}}");
  393. ASSERT_EQ(test.mapField().size(), 3);
  394. EXPECT_STREQ(test.mapField()[10].toStdString().c_str(), "ten");
  395. EXPECT_STREQ(test.mapField()[42].toStdString().c_str(), "fourty two");
  396. EXPECT_STREQ(test.mapField()[15].toStdString().c_str(), "fifteen");
  397. test.deserialize(serializer.get(), "{\"mapField\":{}}");
  398. ASSERT_EQ(test.mapField().size(), 0);
  399. }
  400. TEST_F(JsonDeserializationTest, SimpleFixed64StringMapSerializeTest)
  401. {
  402. SimpleFixed64StringMapMessage test;
  403. test.deserialize(serializer.get(), "{\"mapField\":{\"10\":\"ten\",\"15\":\"fifteen\",\"42\":\"fourty two\"}}");
  404. ASSERT_EQ(test.mapField().size(), 3);
  405. EXPECT_STREQ(test.mapField()[10].toStdString().c_str(), "ten");
  406. EXPECT_STREQ(test.mapField()[42].toStdString().c_str(), "fourty two");
  407. EXPECT_STREQ(test.mapField()[15].toStdString().c_str(), "fifteen");
  408. test.deserialize(serializer.get(), "{\"mapField\":{}}");
  409. ASSERT_EQ(test.mapField().size(), 0);
  410. }
  411. TEST_F(JsonDeserializationTest, SimpleSFixed64StringMapSerializeTest)
  412. {
  413. SimpleSFixed64StringMapMessage test;
  414. test.deserialize(serializer.get(), "{\"mapField\":{\"-42\":\"minus fourty two\",\"10\":\"ten\",\"15\":\"fifteen\"}}");
  415. ASSERT_EQ(test.mapField().size(), 3);
  416. EXPECT_STREQ(test.mapField()[10].toStdString().c_str(), "ten");
  417. EXPECT_STREQ(test.mapField()[-42].toStdString().c_str(), "minus fourty two");
  418. EXPECT_STREQ(test.mapField()[15].toStdString().c_str(), "fifteen");
  419. test.deserialize(serializer.get(), "{\"mapField\":{}}");
  420. ASSERT_EQ(test.mapField().size(), 0);
  421. }
  422. TEST_F(JsonDeserializationTest, SimpleInt64StringMapSerializeTest)
  423. {
  424. SimpleInt64StringMapMessage test;
  425. test.deserialize(serializer.get(), "{\"mapField\":{\"-10\":\"minus ten\",\"15\":\"fifteen\",\"42\":\"fourty two\"}}");
  426. ASSERT_EQ(test.mapField().size(), 3);
  427. EXPECT_STREQ(test.mapField()[-10].toStdString().c_str(), "minus ten");
  428. EXPECT_STREQ(test.mapField()[42].toStdString().c_str(), "fourty two");
  429. EXPECT_STREQ(test.mapField()[15].toStdString().c_str(), "fifteen");
  430. test.deserialize(serializer.get(), "{\"mapField\":{}}");
  431. ASSERT_EQ(test.mapField().size(), 0);
  432. }
  433. TEST_F(JsonDeserializationTest, SimpleSInt64StringMapSerializeTest)
  434. {
  435. SimpleSInt64StringMapMessage test;
  436. test.deserialize(serializer.get(), "{\"mapField\":{\"-42\":\"minus fourty two\",\"10\":\"ten\",\"15\":\"fifteen\"}}");
  437. ASSERT_EQ(test.mapField().size(), 3);
  438. EXPECT_STREQ(test.mapField()[10].toStdString().c_str(), "ten");
  439. EXPECT_STREQ(test.mapField()[-42].toStdString().c_str(), "minus fourty two");
  440. EXPECT_STREQ(test.mapField()[15].toStdString().c_str(), "fifteen");
  441. test.deserialize(serializer.get(), "{\"mapField\":{}}");
  442. ASSERT_EQ(test.mapField().size(), 0);
  443. }
  444. TEST_F(JsonDeserializationTest, SimpleUInt64StringMapSerializeTest)
  445. {
  446. SimpleUInt64StringMapMessage test;
  447. test.deserialize(serializer.get(), "{\"mapField\":{\"42\":\"fourty two\",\"10\":\"ten\",\"15\":\"fifteen\"}}");
  448. ASSERT_EQ(test.mapField().size(), 3);
  449. EXPECT_STREQ(test.mapField()[10].toStdString().c_str(), "ten");
  450. EXPECT_STREQ(test.mapField()[42].toStdString().c_str(), "fourty two");
  451. EXPECT_STREQ(test.mapField()[15].toStdString().c_str(), "fifteen");
  452. test.deserialize(serializer.get(), "{\"mapField\":{}}");
  453. ASSERT_EQ(test.mapField().size(), 0);
  454. }
  455. TEST_F(JsonDeserializationTest, SimpleStringStringMapSerializeTest)
  456. {
  457. SimpleStringStringMapMessage test;
  458. test.deserialize(serializer.get(), "{\"mapField\":{\"ben\":\"ten\",\"sweet\":\"fifteen\",\"what is the answer?\":\"fourty two\"}}");
  459. ASSERT_EQ(test.mapField().size(), 3);
  460. EXPECT_STREQ(test.mapField()["ben"].toStdString().c_str(), "ten");
  461. EXPECT_STREQ(test.mapField()["what is the answer?"].toStdString().c_str(), "fourty two");
  462. EXPECT_STREQ(test.mapField()["sweet"].toStdString().c_str(), "fifteen");
  463. test.deserialize(serializer.get(), "{\"mapField\":{}}");
  464. ASSERT_EQ(test.mapField().size(), 0);
  465. }
  466. }
  467. }