network-test.cpp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #include "test_common.h"
  2. TEST_START
  3. #if !PIKA_NANO_ENABLE
  4. extern "C" {
  5. #include "../package/pikascript/pikascript-lib/PikaStdDevice/pika_hal.h"
  6. int pika_hal_platform_WIFI_open(pika_dev* dev, char* name) {
  7. pika_platform_printf("pika_hal_platform_WIFI_open: %s\r\n", name);
  8. return 0;
  9. }
  10. int pika_hal_platform_WIFI_close(pika_dev* dev) {
  11. return 0;
  12. }
  13. int pika_hal_platform_WIFI_ioctl_config(pika_dev* dev,
  14. pika_hal_WIFI_config* cfg) {
  15. return 0;
  16. }
  17. int pika_hal_platform_WIFI_ioctl_enable(pika_dev* dev) {
  18. pika_hal_WIFI_config* cfg = (pika_hal_WIFI_config*)dev->ioctl_config;
  19. strcpy(cfg->ip, "192.168.1.123");
  20. strcpy(cfg->gateway, "192.168.1.1");
  21. strcpy(cfg->dns, "8.8.8.8");
  22. return 0;
  23. }
  24. int pika_hal_platform_WIFI_ioctl_disable(pika_dev* dev) {
  25. return 0;
  26. }
  27. int pika_hal_platform_WIFI_ioctl_others(pika_dev* dev,
  28. PIKA_HAL_IOCTL_CMD cmd,
  29. void* arg) {
  30. if (cmd == PIKA_HAL_IOCTL_WIFI_SCAN) {
  31. pika_platform_printf(
  32. "pika_hal_platform_WIFI_ioctl_others: "
  33. "PIKA_HAL_IOCTL_WIFI_SCAN\r\n");
  34. int count = 3;
  35. size_t size = sizeof(pika_hal_WIFI_scan_result) +
  36. count * sizeof(pika_hal_WIFI_record);
  37. pika_hal_WIFI_scan_result* result =
  38. (pika_hal_WIFI_scan_result*)pika_platform_malloc(size);
  39. memset(result, 0, size);
  40. result->count = count;
  41. strcpy(result->records[0].ssid, "ssid1");
  42. result->records[0].channel = 1;
  43. result->records[0].rssi = -10;
  44. result->records[0].authmode = 0;
  45. strcpy(result->records[1].ssid, "ssid2");
  46. result->records[1].channel = 2;
  47. result->records[1].rssi = -20;
  48. result->records[1].authmode = 1;
  49. strcpy(result->records[2].ssid, "ssid3");
  50. result->records[2].channel = 3;
  51. result->records[2].rssi = -30;
  52. result->records[2].authmode = 2;
  53. *(pika_hal_WIFI_scan_result**)arg = result;
  54. return 0;
  55. }
  56. if (cmd == PIKA_HAL_IOCTL_WIFI_SET_ACTIVE) {
  57. pika_platform_printf(
  58. "pika_hal_platform_WIFI_ioctl_others: "
  59. "PIKA_HAL_IOCTL_WIFI_SET_ACTIVE:%d\r\n",
  60. *(int*)arg);
  61. return 0;
  62. }
  63. if (cmd == PIKA_HAL_IOCTL_WIFI_GET_STATUS) {
  64. pika_platform_printf(
  65. "pika_hal_platform_WIFI_ioctl_others: "
  66. "PIKA_HAL_IOCTL_WIFI_GET_STATUS\r\n");
  67. *(PIKA_HAL_WIFI_STATUS*)arg = PIKA_HAL_WIFI_STATUS_GOT_IP;
  68. return 0;
  69. }
  70. return -1;
  71. }
  72. }
  73. TEST(network, scan) {
  74. pikaMemInfo.heapUsedMax = 0;
  75. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  76. extern unsigned char pikaModules_py_a[];
  77. obj_linkLibrary(pikaMain, pikaModules_py_a);
  78. /* run */
  79. __platform_printf("BEGIN\r\n");
  80. pikaVM_runSingleFile(pikaMain, "test/python/network/network_scan.py");
  81. /* assert */
  82. EXPECT_STREQ(log_buff[0],
  83. "[('ssid1', b'', 1, -10, 0, 0), ('ssid2', b'', 2, "
  84. "-20, 1, 0), ('ssid3', b'', 3, -30, 2, 0)]\r\n");
  85. EXPECT_STREQ(log_buff[1],
  86. "pika_hal_platform_WIFI_ioctl_others: "
  87. "PIKA_HAL_IOCTL_WIFI_SCAN\r\n");
  88. EXPECT_STREQ(log_buff[2],
  89. "pika_hal_platform_WIFI_ioctl_others: "
  90. "PIKA_HAL_IOCTL_WIFI_SET_ACTIVE:1\r\n");
  91. EXPECT_STREQ(log_buff[3], "pika_hal_platform_WIFI_open: WLAN0\r\n");
  92. /* deinit */
  93. obj_deinit(pikaMain);
  94. EXPECT_EQ(pikaMemNow(), 0);
  95. }
  96. TEST(network, connect) {
  97. pikaMemInfo.heapUsedMax = 0;
  98. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  99. extern unsigned char pikaModules_py_a[];
  100. obj_linkLibrary(pikaMain, pikaModules_py_a);
  101. /* run */
  102. __platform_printf("BEGIN\r\n");
  103. pikaVM_runSingleFile(pikaMain, "test/python/network/network_connect.py");
  104. /* assert */
  105. #if 0
  106. pika_hal_platform_WIFI_open: WLAN0
  107. pika_hal_platform_WIFI_ioctl_others: PIKA_HAL_IOCTL_WIFI_SET_ACTIVE:1
  108. pika_hal_platform_WIFI_ioctl_others: PIKA_HAL_IOCTL_WIFI_GET_STATUS
  109. 1
  110. ('192.168.1.123', '255.255.255.0', '192.168.1.1', '8.8.8.8')
  111. #endif
  112. EXPECT_STREQ(log_buff[4], "pika_hal_platform_WIFI_open: WLAN0\r\n");
  113. EXPECT_STREQ(log_buff[3],
  114. "pika_hal_platform_WIFI_ioctl_others: "
  115. "PIKA_HAL_IOCTL_WIFI_SET_ACTIVE:1\r\n");
  116. EXPECT_STREQ(log_buff[2],
  117. "pika_hal_platform_WIFI_ioctl_others: "
  118. "PIKA_HAL_IOCTL_WIFI_GET_STATUS\r\n");
  119. EXPECT_STREQ(log_buff[1], "1\r\n");
  120. EXPECT_STREQ(
  121. log_buff[0],
  122. "('192.168.1.123', '255.255.255.0', '192.168.1.1', '8.8.8.8')\r\n");
  123. /* deinit */
  124. obj_deinit(pikaMain);
  125. EXPECT_EQ(pikaMemNow(), 0);
  126. }
  127. TEST(network, config) {
  128. pikaMemInfo.heapUsedMax = 0;
  129. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  130. extern unsigned char pikaModules_py_a[];
  131. obj_linkLibrary(pikaMain, pikaModules_py_a);
  132. /* run */
  133. __platform_printf("BEGIN\r\n");
  134. pikaVM_runSingleFile(pikaMain, "test/python/network/network_config.py");
  135. /* assert */
  136. EXPECT_STREQ(log_buff[0], "configssid 11\r\n");
  137. /* deinit */
  138. obj_deinit(pikaMain);
  139. EXPECT_EQ(pikaMemNow(), 0);
  140. }
  141. #endif
  142. TEST_END