args-test.cpp 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. #include "gtest/gtest.h"
  2. extern "C" {
  3. #include "PikaVM.h"
  4. #include "dataArgs.h"
  5. #include "dataString.h"
  6. }
  7. static int mem;
  8. TEST(args, test1) {
  9. mem = pikaMemNow();
  10. Args* args = New_args(NULL);
  11. args_setInt(args, (char*)"a", 1);
  12. int a = args_getInt(args, (char*)"a");
  13. EXPECT_EQ(a, 1);
  14. args_deinit(args);
  15. EXPECT_EQ(pikaMemNow(), 0);
  16. }
  17. TEST(args, test4) {
  18. int32_t testint = 12333;
  19. Args* args = New_args(NULL);
  20. args_setInt(args, (char*)"testint", testint);
  21. EXPECT_EQ(12333, args_getInt(args, (char*)"testint"));
  22. args_deinit(args);
  23. EXPECT_EQ(pikaMemNow(), 0);
  24. }
  25. TEST(args, test2) {
  26. Args* args = New_args(NULL);
  27. int64_t int64Out = 0;
  28. void* pointer = NULL;
  29. char* strOut = NULL;
  30. args_setInt(args, (char*)"int64Test", (int64_t)22221);
  31. args_setPtr(args, (char*)"pointerTest", (void*)2222322);
  32. args_setStr(args, (char*)"strTest", (char*)"teeeds");
  33. int64Out = args_getInt(args, (char*)"int64Test");
  34. pointer = args_getPtr(args, (char*)"pointerTest");
  35. strOut = args_getStr(args, (char*)"strTest");
  36. EXPECT_EQ(int64Out, 22221);
  37. EXPECT_EQ((uint64_t)pointer, 2222322);
  38. EXPECT_EQ(1, strEqu((char*)"teeeds", strOut));
  39. EXPECT_EQ(args_getType(args, (char*)"int64Test"), ARG_TYPE_INT);
  40. EXPECT_EQ(args_getType(args, (char*)"pointerTest"), ARG_TYPE_POINTER);
  41. EXPECT_EQ(args_getType(args, (char*)"strTest"), ARG_TYPE_STRING);
  42. args_deinit(args);
  43. EXPECT_EQ(pikaMemNow(), 0);
  44. }
  45. TEST(args, test3) {
  46. Args* args1 = New_args(NULL);
  47. Args* args2 = New_args(NULL);
  48. args_setFloat(args1, (char*)"argtest1", 2.883);
  49. args_setStr(args1, (char*)"strtest1", (char*)"teststr");
  50. args_copyArgByName(args1, (char*)"argtest1", args2);
  51. args_copyArgByName(args1, (char*)"strtest1", args2);
  52. EXPECT_EQ(2.8830f, args_getFloat(args1, (char*)"argtest1"));
  53. args_deinit(args1);
  54. args_deinit(args2);
  55. EXPECT_EQ(pikaMemNow(), 0);
  56. }
  57. TEST(args, buff) {
  58. Args* buffs = New_args(NULL);
  59. args_getBuff(buffs, 256);
  60. args_deinit(buffs);
  61. EXPECT_EQ(pikaMemNow(), 0);
  62. }
  63. TEST(args, update) {
  64. Args* args = New_args(NULL);
  65. args_setInt(args, (char*)"testInt", 124);
  66. args_setInt(args, (char*)"testInt", 125);
  67. EXPECT_EQ(125, args_getInt(args, (char*)"testInt"));
  68. args_deinit(args);
  69. EXPECT_EQ(pikaMemNow(), 0);
  70. }
  71. TEST(args, print_int) {
  72. Args* args = New_args(NULL);
  73. args_setInt(args, (char*)"testInt", 124);
  74. EXPECT_STREQ((char*)"124", args_print(args, (char*)"testInt"));
  75. args_deinit(args);
  76. EXPECT_EQ(pikaMemNow(), 0);
  77. }
  78. // TEST(args, test5) {
  79. // int32_t testInt = 124;
  80. // Args* args = New_args(NULL);
  81. // args_bind(args, (char*)"i", (char*)"testInt", &testInt);
  82. // char* type = args_getType(args, (char*)"testInt");
  83. // args_print(args, (char*)"testInt");
  84. // EXPECT_STREQ((char*)"124", args_print(args, (char*)"testInt"));
  85. // args_deinit(args);
  86. // EXPECT_EQ(pikaMemNow(), 0);
  87. // }
  88. TEST(args, test6) {
  89. Args* args = New_args(NULL);
  90. args_setFloat(args, (char*)"testfloat", 1.42);
  91. EXPECT_STREQ((char*)"1.420000", args_print(args, (char*)"testfloat"));
  92. args_deinit(args);
  93. EXPECT_EQ(pikaMemNow(), 0);
  94. }
  95. // TEST(args, test7) {
  96. // Args* args = New_args(NULL);
  97. // float floatBindTest = 2.314;
  98. // args_bind(args, (char*)"f", (char*)"floatBind", &floatBindTest);
  99. // EXPECT_STREQ((char*)"2.314000", args_print(args, (char*)"floatBind"));
  100. // args_deinit(args);
  101. // EXPECT_EQ(pikaMemNow(), 0);
  102. // }
  103. TEST(args, test8) {
  104. Args* args = New_args(NULL);
  105. args_setStr(args, (char*)"testString", (char*)"test string print");
  106. EXPECT_STREQ((char*)"test string print",
  107. args_print(args, (char*)"testString"));
  108. args_deinit(args);
  109. EXPECT_EQ(pikaMemNow(), 0);
  110. }
  111. // TEST(args, test9) {
  112. // Args* args = New_args(NULL);
  113. // char strBindTest[] = "test string bind";
  114. // args_bindStr(args, (char*)"testStringBind", (char**)&strBindTest);
  115. // EXPECT_STREQ((char*)"test string bind",
  116. // args_print(args, (char*)"testStringBind"));
  117. // args_deinit(args);
  118. // EXPECT_EQ(pikaMemNow(), 0);
  119. // }
  120. TEST(args, test12) {
  121. Args* args = New_args(NULL);
  122. args_setInt(args, (char*)"test", 13);
  123. args_setInt(args, (char*)"kw", 25);
  124. EXPECT_EQ(2, args_getSize(args));
  125. EXPECT_EQ(13, (int)args_getInt(args, (char*)"test"));
  126. args_removeArg(args, args_getArg(args, (char*)"test"));
  127. EXPECT_EQ(1, args_getSize(args));
  128. EXPECT_EQ(-999999999, (int)args_getInt(args, (char*)"test"));
  129. args_deinit(args);
  130. EXPECT_EQ(pikaMemNow(), 0);
  131. }
  132. struct test {
  133. int a;
  134. float b;
  135. int c;
  136. };
  137. TEST(args, struct_) {
  138. Args* args = New_args(NULL);
  139. struct test test_struct = {1, 2.2, 4};
  140. args_setStruct(args, (char*)"test", test_struct);
  141. struct test* out_struct = (struct test*)args_getStruct(args, (char*)"test");
  142. EXPECT_EQ(out_struct->a, 1);
  143. EXPECT_FLOAT_EQ(out_struct->b, 2.2);
  144. EXPECT_EQ(out_struct->c, 4);
  145. args_deinit(args);
  146. EXPECT_EQ(pikaMemNow(), 0);
  147. }
  148. TEST(args, mem) {
  149. EXPECT_EQ(pikaMemNow(), mem);
  150. EXPECT_EQ(pikaMemNow(), 0);
  151. }
  152. TEST(args, index) {
  153. Args* args = New_args(NULL);
  154. args_pushArg(args, arg_setInt(NULL, (char*)"", 1));
  155. args_pushArg(args, arg_setFloat(NULL, (char*)"", 2.4));
  156. int a = arg_getInt(args_getArg_index(args, 1));
  157. float b = arg_getFloat(args_getArg_index(args, 0));
  158. /* assert */
  159. EXPECT_EQ(a, 1);
  160. EXPECT_FLOAT_EQ(b, 2.4);
  161. /* check memory */
  162. args_deinit(args);
  163. EXPECT_EQ(pikaMemNow(), 0);
  164. }
  165. TEST(args, int_float_convert) {
  166. Args* args = New_args(NULL);
  167. args_setInt(args, (char*)"a", 10);
  168. args_setFloat(args, (char*)"b", 2.333);
  169. float a = args_getFloat(args, (char*)"a");
  170. int b = args_getInt(args, (char*)"b");
  171. /* assert */
  172. EXPECT_EQ(a, 10);
  173. EXPECT_FLOAT_EQ(b, 2);
  174. /* check memory */
  175. args_deinit(args);
  176. EXPECT_EQ(pikaMemNow(), 0);
  177. }
  178. TEST(args, heap_struct) {
  179. ByteCodeFrame bytecode_frame;
  180. byteCodeFrame_init(&bytecode_frame);
  181. bytecode_frame.const_pool.size = 100;
  182. Args* args = New_args(NULL);
  183. args_setHeapStruct(args, (char*)"a", bytecode_frame, byteCodeFrame_deinit);
  184. ByteCodeFrame* bf_out =
  185. (ByteCodeFrame*)args_getHeapStruct(args, (char*)"a");
  186. /* assert */
  187. EXPECT_EQ(bf_out->const_pool.size, 100);
  188. /* check memory */
  189. args_deinit(args);
  190. EXPECT_EQ(pikaMemNow(), 0);
  191. }
  192. TEST(args, heap_struct_override) {
  193. ByteCodeFrame bytecode_frame;
  194. byteCodeFrame_init(&bytecode_frame);
  195. bytecode_frame.const_pool.size = 100;
  196. ByteCodeFrame bytecode_frame_1;
  197. byteCodeFrame_init(&bytecode_frame_1);
  198. bytecode_frame_1.const_pool.size = 100;
  199. Args* args = New_args(NULL);
  200. args_setHeapStruct(args, (char*)"a", bytecode_frame, byteCodeFrame_deinit);
  201. args_setHeapStruct(args, (char*)"a", bytecode_frame_1,
  202. byteCodeFrame_deinit);
  203. ByteCodeFrame* bf_out =
  204. (ByteCodeFrame*)args_getHeapStruct(args, (char*)"a");
  205. /* assert */
  206. EXPECT_EQ(bf_out->const_pool.size, 100);
  207. /* check memory */
  208. args_deinit(args);
  209. EXPECT_EQ(pikaMemNow(), 0);
  210. }
  211. TEST(args, args_move) {
  212. Args* args = New_args(NULL);
  213. Args* args2 = New_args(NULL);
  214. args_setInt(args, (char*)"a", 100);
  215. args_moveArg(args, args2, args_getArg(args, (char*)"a"));
  216. /* assert */
  217. EXPECT_EQ(-999999999, args_getInt(args, (char*)"a"));
  218. EXPECT_EQ(100, args_getInt(args2, (char*)"a"));
  219. /* deinit */
  220. args_deinit(args);
  221. args_deinit(args2);
  222. EXPECT_EQ(pikaMemNow(), 0);
  223. }
  224. TEST(args, args_mem) {
  225. char mem_test[] = {0x33, 0x55, 0x00, 0x15};
  226. Args* args = New_args(NULL);
  227. args_setMem(args, (char*)"mem", mem_test, sizeof(mem_test));
  228. size_t mem_size = args_getMemSize(args, (char*)"mem");
  229. char* mem_test_out = (char*)args_getMem(args, (char*)"mem");
  230. EXPECT_EQ(mem_size, sizeof(mem_test));
  231. EXPECT_EQ(mem_test_out[0], 0x33);
  232. EXPECT_EQ(mem_test_out[1], 0x55);
  233. EXPECT_EQ(mem_test_out[2], 0x00);
  234. EXPECT_EQ(mem_test_out[3], 0x15);
  235. args_deinit(args);
  236. }