pikapython/test/event-test.cpp
2022-11-05 13:20:23 +08:00

68 lines
2.1 KiB
C

#include "test_common.h"
TEST_START
extern PikaEventListener* g_pika_device_event_listener;
#if PIKA_EVENT_ENABLE
TEST(event, gpio) {
/* init */
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
/* run */
pikaVM_runSingleFile(pikaMain, "../../examples/TemplateDevice/gpio_cb.py");
#define EVENT_SIGAL_IO_RISING_EDGE 0x01
#define EVENT_SIGAL_IO_FALLING_EDGE 0x02
#define GPIO_PA8_EVENT_ID 0x08
/* simulate run in the call back */
pks_eventLisener_sendSignal(g_pika_device_event_listener, GPIO_PA8_EVENT_ID,
EVENT_SIGAL_IO_RISING_EDGE);
pks_eventLisener_sendSignal(g_pika_device_event_listener, GPIO_PA8_EVENT_ID,
EVENT_SIGAL_IO_FALLING_EDGE);
/* assert */
obj_run(pikaMain, "io1.eventTest()");
EXPECT_STREQ(log_buff[3], "get rising edge!\r\n");
EXPECT_STREQ(log_buff[2], "get falling edge!\r\n");
EXPECT_STREQ(log_buff[1], "get rising edge!\r\n");
EXPECT_STREQ(log_buff[0], "get falling edge!\r\n");
for (int i = 0; i < 255; i++) {
obj_run(pikaMain, "io1.eventTest()");
}
/* simulate run in the call back */
Arg* res_123 = pks_eventLisener_sendSignalAwaitResult(
g_pika_device_event_listener, GPIO_PA8_EVENT_ID, 123);
Arg* res_456 = pks_eventLisener_sendSignalAwaitResult(
g_pika_device_event_listener, GPIO_PA8_EVENT_ID, 456);
EXPECT_EQ(arg_getInt(res_123), 123);
EXPECT_EQ(arg_getInt(res_456), 456);
/* deinit */
obj_deinit(pikaMain);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(event, remove_regist) {
/* init */
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
/* run */
pks_eventLisener_init(&g_pika_device_event_listener);
PikaObj* testobj = newNormalObj(New_TinyObj);
pks_eventLicener_registEvent(g_pika_device_event_listener, 0, testobj);
EXPECT_EQ(testobj->refcnt, 2);
pks_eventLicener_removeEvent(g_pika_device_event_listener, 0);
EXPECT_EQ(testobj->refcnt, 1);
/* deinit */
obj_deinit(pikaMain);
obj_deinit(testobj);
pks_eventLisener_deinit(&g_pika_device_event_listener);
EXPECT_EQ(pikaMemNow(), 0);
}
#endif
TEST_END