参考代码

This commit is contained in:
LokLiang
2024-03-28 12:19:52 +08:00
commit 7b86aa3362
96 changed files with 19986 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
#include "os_test.h"
static vuint test_flag = 0;
static void _os_test_fifo_handler_0(void *arg)
{
SYS_LOG_INF("测试创建和清空, 应出现1个警告");
void *first_handle;
SYS_ASSERT_FALSE(os_fifo_q_create(&fifo_handle[0]) != OS_OK, "");
first_handle = fifo_handle[0].handle;
os_fifo_q_clr(&fifo_handle[0]);
os_fifo_q_delete(&fifo_handle[0]);
SYS_LOG_INF("测试警告, 应出现3个警告");
SYS_ASSERT_FALSE(os_fifo_q_create(&fifo_handle[0]) != OS_OK, "");
uint32_t *p32 = os_fifo_alloc(sizeof(*p32));
SYS_ASSERT_FALSE(p32 == 0, "");
*p32 = 0x1234abcd;
SYS_ASSERT_FALSE(os_fifo_put(&fifo_handle[0], p32) != OS_OK, "");
SYS_ASSERT_FALSE(os_fifo_put(&fifo_handle[0], p32) == OS_OK, ""); // os_fifo_put(): fifo_data not valid
SYS_ASSERT_FALSE(os_fifo_take(&fifo_handle[0], 0) != p32, "");
SYS_ASSERT_FALSE(*p32 != 0x1234abcd, "");
SYS_ASSERT_FALSE(os_fifo_take(&fifo_handle[0], 0) != 0, "");
SYS_ASSERT_FALSE(os_fifo_free(p32) != OS_OK, "");
SYS_ASSERT_FALSE(os_fifo_free(p32) == OS_OK, ""); // os_fifo_free(): 0x.. was not in fifo queue, can not to free
SYS_ASSERT_FALSE(os_fifo_put(&fifo_handle[0], p32) == OS_OK, ""); // os_fifo_put(): fifo_data not valid
SYS_LOG_INF("测试清除");
SYS_ASSERT_FALSE(os_fifo_alloc(sizeof(*p32)) != p32, "");
SYS_ASSERT_FALSE(os_fifo_put(&fifo_handle[0], p32) != OS_OK, "");
os_fifo_q_clr(&fifo_handle[0]);
SYS_ASSERT_FALSE(os_fifo_take(&fifo_handle[0], 0) != 0, "");
SYS_ASSERT_FALSE(os_fifo_alloc(sizeof(*p32)) != p32, "");
SYS_ASSERT_FALSE(os_fifo_free(p32) != OS_OK, "");
SYS_LOG_INF("测试自动释放已在队列内的数据");
SYS_ASSERT_FALSE(os_fifo_alloc(sizeof(*p32)) != p32, "");
SYS_ASSERT_FALSE(os_fifo_put(&fifo_handle[0], p32) != 0, "");
os_fifo_q_delete(&fifo_handle[0]);
SYS_ASSERT_FALSE(os_fifo_q_create(&fifo_handle[0]) != OS_OK, "");
SYS_ASSERT_FALSE(first_handle != fifo_handle[0].handle, "");
SYS_ASSERT_FALSE(os_fifo_alloc(sizeof(*p32)) != p32, "");
SYS_ASSERT_FALSE(os_fifo_put(&fifo_handle[0], p32) != OS_OK, "");
os_fifo_q_delete(&fifo_handle[0]);
test_flag = 1;
}
static void _os_test_fifo_t1(void *arg)
{
test_flag = test_flag << 4 | 1;
void *mem = os_fifo_take(&fifo_handle[0], -1u);
test_flag = test_flag << 4 | 2;
os_fifo_free(mem);
}
void os_test_fifo(void)
{
SYS_LOG_INF("-------------------------------");
test_flag = 0;
os_work_create(&test_work_handle[0], "", _os_test_fifo_handler_0, NULL, 1);
os_work_submit(default_os_work_q_hdl, &test_work_handle[0], 0);
os_work_delete(&test_work_handle[0]);
SYS_ASSERT_FALSE(test_flag == 0, "");
SYS_LOG_INF("-------------------------------");
size_t max_block_size;
os_heap_info(NULL, NULL, &max_block_size);
static os_thread_t t1;
void *mem;
SYS_LOG_INF("测试提交 FIFO 唤醒");
test_flag = 0;
os_fifo_q_create(&fifo_handle[0]);
os_test_create_thread(&t1, _os_test_fifo_t1, "t1", OS_PRIORITY_HIGHEST);
SYS_ASSERT_FALSE(test_flag != 0x1, "");
mem = os_fifo_alloc(0x10);
SYS_ASSERT_FALSE(test_flag != 0x1, "");
os_fifo_put(&fifo_handle[0], mem);
SYS_ASSERT_FALSE(test_flag != 0x12, "");
os_fifo_q_delete(&fifo_handle[0]);
}