SpBufferTest.cpp 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. #include "SpHelper.h"
  2. #include<gtest/gtest.h>
  3. wchar_t hello[] = L"Hello, World!\n";
  4. TEST(SpBufferTest, WideCharTest)
  5. {
  6. std::wcout << hello << std::endl;
  7. std::wcout << L"sizeof(wchar_t): " << sizeof(wchar_t) << std::endl;
  8. }
  9. TEST(SpBufferTest, TestSimpleStringA)
  10. {
  11. CSimpleStringA str("Hello world 12345678 90");
  12. SpBuffer buffer;
  13. buffer.OpenWrite();
  14. buffer = buffer & str;
  15. CAutoBuffer buf = buffer.ToBuffer();
  16. buffer.Close();
  17. SpBuffer bufToRead;
  18. ASSERT_TRUE(bufToRead.OpenRead((const char*)&buf[0], buf.GetCount()));
  19. ASSERT_TRUE(bufToRead.IsRead());
  20. ASSERT_FALSE(bufToRead.IsWrite());
  21. CSimpleStringA out;
  22. bufToRead& out;
  23. std::cout << "print:" << out.GetData() << std::endl;
  24. ASSERT_TRUE(out.Compare(str) == 0);
  25. }
  26. #ifndef _WIN32
  27. TEST(SpBufferTest, TestSimpleStringWC)
  28. {
  29. CSimpleStringW str(L"Hello world 12345678 90");
  30. SpBuffer buffer;
  31. buffer.OpenWrite();
  32. buffer = buffer & str;
  33. CAutoBuffer buf = buffer.ToBuffer();
  34. buffer.Close();
  35. SpBuffer bufToRead;
  36. ASSERT_TRUE(bufToRead.OpenRead((const char*)&buf[0], buf.GetCount()));
  37. ASSERT_TRUE(bufToRead.IsRead());
  38. ASSERT_FALSE(bufToRead.IsWrite());
  39. CSimpleStringW out;
  40. bufToRead& out;
  41. ASSERT_TRUE(out.Compare(str) == 0);
  42. }
  43. TEST(SpBufferTest, TestSimpleString16bitTest)
  44. {
  45. CSimpleStringW str2(L"Hello world 12345678 90");
  46. CSimpleStringA str1("Hello world 12345678 90");
  47. WCHAR test[] = { 'H','e','l','l','o',' ','w','o','r','l','d',' ','1','2','3','4','5','6','7','8',' ','9','0' };
  48. CSimpleString16Bit str(test);
  49. std::cout << "str length: " << str.GetLength() << std::endl;
  50. ASSERT_TRUE(str.GetLength() == str1.GetLength());
  51. SpBuffer buffer;
  52. buffer.OpenWrite();
  53. buffer = buffer & str;
  54. CAutoBuffer buf = buffer.ToBuffer();
  55. ASSERT_TRUE(buf.GetCount() != 0);
  56. buffer.Close();
  57. SpBuffer bufToRead;
  58. ASSERT_TRUE(bufToRead.OpenRead((const char*)&buf[0], buf.GetCount()));
  59. ASSERT_TRUE(bufToRead.IsRead());
  60. ASSERT_FALSE(bufToRead.IsWrite());
  61. CSimpleString16Bit out;
  62. bufToRead& out;
  63. std::cout << "out length: " << out.GetLength() << std::endl;
  64. CSimpleStringW out1 = CSimpleString16Bit2W(out);
  65. CSimpleStringA out2 = CSimpleString16Bit2A(out);
  66. ASSERT_TRUE(out.Compare(str) == 0);
  67. ASSERT_TRUE(out1.Compare(str2) == 0);
  68. ASSERT_TRUE(out2.Compare(str1) == 0);
  69. }
  70. #endif //NOT _WIN32
  71. struct SampleService_TwoWayFuncNotOverlap_Ans
  72. {
  73. CSimpleStringA ans_context;
  74. void Serialize(SpBuffer& Buf)
  75. {
  76. auto& buf = Buf & ans_context;
  77. }
  78. };
  79. struct GUIConsoleService_SyncMaterialCount_Info
  80. {
  81. CSimpleStringA strDeviceNo;
  82. CSimpleStringW strDevice;
  83. CSimpleStringA strEmpty;
  84. CSimpleStringW strEmptyW;
  85. CSimpleString16Bit strEmptyBit;
  86. unsigned int dwCardBoxNum;
  87. CBlob blobInstance2;
  88. CBlob blobInstance;
  89. CAutoArray<CBlob> blobInstanceList;
  90. CAutoArray<bool> arrMaintainFlag;
  91. CAutoArray<CSimpleStringA> arrMaintainer;
  92. CAutoArray<unsigned int> arrMaintainTime;
  93. CAutoArray<CSimpleStringA> arrCardBoxNo;
  94. CAutoArray<CSimpleStringA> arrPsbCode;
  95. CAutoArray<CSimpleStringA> arrPsbName;
  96. CAutoArray<CSimpleString16Bit> arrPsbName2;
  97. CAutoArray<unsigned int> arrCardInit;
  98. CAutoArray<unsigned int> arrCardRemains;
  99. CAutoArray<unsigned int> arrCardIssued;
  100. CAutoArray<unsigned int> arrCardMixed;
  101. CAutoArray<unsigned int> arrCardPercent;
  102. void Serialize(SpBuffer& Buf)
  103. {
  104. auto& buf = Buf & strDeviceNo & strEmpty & strEmptyW & strEmptyBit & strDevice & dwCardBoxNum & blobInstance2 & blobInstance & blobInstanceList & arrMaintainFlag & arrMaintainer & arrMaintainTime & arrCardBoxNo & arrPsbCode & arrPsbName & arrPsbName2 & arrCardInit & arrCardRemains & arrCardIssued & arrCardMixed & arrCardPercent;
  105. }
  106. };
  107. TEST(CAutoBufferTest, TestSpObject2Buffer)
  108. {
  109. SampleService_TwoWayFuncNotOverlap_Ans ans;
  110. ans.ans_context;
  111. CAutoBuffer Buf = SpObject2Buffer<SampleService_TwoWayFuncNotOverlap_Ans>(ans);
  112. }
  113. TEST(CAutoBufferTest, TestArray)
  114. {
  115. GUIConsoleService_SyncMaterialCount_Info info;
  116. CSimpleStringW str2(L"Hello world 12345678 90");
  117. CSimpleStringA str1("Hello world 12345678 90");
  118. WCHAR testd[] = { 'H','e','l','l','o',' ','w','o','r','l','d',' ','1','2','3','4','5','6','7','8',' ','9','0' };
  119. CSimpleString16Bit testBit(testd);
  120. info.strEmptyBit = testd;
  121. info.strDeviceNo = "7715010050";
  122. info.strDevice = L"Hello World";
  123. info.dwCardBoxNum = 2;
  124. int count = 3;
  125. char blobString[124] = "Hello Blob";
  126. info.blobInstance.Refer(blobString, strlen(blobString) + 1);
  127. info.arrMaintainFlag.Init(count);
  128. info.arrMaintainer.Init(count);
  129. info.arrMaintainTime.Init(count);
  130. info.arrCardBoxNo.Init(count);
  131. info.arrPsbCode.Init(count);
  132. info.arrPsbName.Init(count);
  133. info.arrCardInit.Init(count);
  134. info.arrCardRemains.Init(count);
  135. info.arrCardIssued.Init(count);
  136. info.arrCardMixed.Init(count);
  137. info.arrCardPercent.Init(count);
  138. info.arrPsbName2.Init(count);
  139. info.arrMaintainFlag[0] = true;
  140. info.arrMaintainFlag[1] = false;
  141. info.arrMaintainFlag[2] = false;
  142. info.arrMaintainTime[0] = 660995020;
  143. info.arrMaintainTime[1] = 0;
  144. info.arrMaintainTime[2] = 660995020;
  145. info.arrCardInit[0] = 1;
  146. info.arrCardInit[1] = 0;
  147. info.arrCardInit[2] = 0;
  148. info.arrCardRemains[0] = 1;
  149. info.arrCardRemains[1] = 0;
  150. info.arrCardRemains[2] = 0;
  151. info.arrCardIssued[0] = 0;
  152. info.arrCardIssued[1] = 0;
  153. info.arrCardIssued[2] = 0;
  154. info.arrCardMixed[0] = 0;
  155. info.arrCardMixed[1] = 0;
  156. info.arrCardMixed[2] = 0;
  157. info.arrCardPercent[0] = 10;
  158. info.arrCardPercent[1] = 0;
  159. info.arrCardPercent[2] = 0;
  160. info.arrMaintainer[0] = "SP80275003";
  161. info.arrMaintainer[1] = "";
  162. info.arrMaintainer[2] = "SP80275003";
  163. info.arrCardBoxNo[0] = "NN90000004";
  164. info.arrCardBoxNo[1] = "";
  165. info.arrCardBoxNo[2] = "";
  166. info.arrPsbCode[0] = "4603";
  167. info.arrPsbCode[1] = "";
  168. info.arrPsbCode[2] = "";
  169. CSimpleStringA testValue("ICDEGEFEE222fdjlsfjskdf");
  170. info.arrPsbName[0] = testValue;
  171. info.arrPsbName[1] = "";
  172. info.arrPsbName[2] = "";
  173. info.arrPsbName2[0] = testd;
  174. info.arrPsbName2[1] = testd;
  175. info.arrPsbName2[2] = testd;
  176. std::cout << "pre SpObject2Buffer" << std::endl;
  177. CAutoBuffer Buf = SpObject2Buffer<GUIConsoleService_SyncMaterialCount_Info>(info);
  178. std::cout << "after SpObject2Buffer" << std::endl;
  179. std::cout << "pre SpBuffer2Object" << std::endl;
  180. CAutoBuffer Buf2;
  181. GUIConsoleService_SyncMaterialCount_Info info2;
  182. ErrorCodeEnum err = SpBuffer2Object<GUIConsoleService_SyncMaterialCount_Info>(Buf, info2);
  183. std::cout << "after SpBuffer2Object" << std::endl;
  184. ASSERT_TRUE(err == Error_Succeed);
  185. ASSERT_TRUE(info2.arrCardBoxNo.GetCount() == count);
  186. ASSERT_TRUE(info2.strDeviceNo == "7715010050");
  187. ASSERT_TRUE(info2.dwCardBoxNum == 2);
  188. ASSERT_TRUE(info2.strEmptyBit == testBit);
  189. ASSERT_TRUE(strcmp(info2.blobInstance.m_pData, "Hello Blob") == 0);
  190. ASSERT_TRUE(info2.arrPsbName.GetCount() == count);
  191. ASSERT_TRUE(info2.arrPsbName[0] == testValue);
  192. ASSERT_TRUE(info2.arrPsbName[2].IsNullOrEmpty());
  193. ASSERT_TRUE(info2.arrCardBoxNo[0] = "NN90000004");
  194. ASSERT_TRUE(info2.arrCardPercent[0] = 10);
  195. ASSERT_TRUE(info2.arrPsbName2[0] == testBit);
  196. ASSERT_TRUE(info2.arrPsbName2[0] == testBit);
  197. ASSERT_TRUE(info2.arrPsbName2[0] == testBit);
  198. ASSERT_TRUE(!info2.strDevice.IsNullOrEmpty());
  199. ASSERT_TRUE(info2.strDevice.GetData() != NULL);
  200. CSimpleStringA test = CSimpleStringW2A(info2.strDevice);
  201. std::wcout << "test: " << info2.strDevice.GetData() << std::endl;
  202. std::cout << "test: " << test.GetData() << std::endl;
  203. ASSERT_TRUE(info2.strDevice == L"Hello World");
  204. ASSERT_TRUE(info2.strEmpty.IsNullOrEmpty());
  205. ASSERT_TRUE(info2.strEmptyW.IsNullOrEmpty());
  206. std::wcout << "hihihih: " << CSimpleString16Bit2W(info2.strEmptyBit).GetData() << std::endl;
  207. }