This repository has been archived on 2025-04-02. You can view files and clone it, but cannot push or open issues or pull requests.
controller-hart/Tests/test_hart.c

86 lines
4.0 KiB
C

#include "lwrb.h"
uint8_t lwrb_data[8 + 1];
lwrb_t buff;
int main()
{
lwrb_sz_t len;
lwrb_init(&buff, lwrb_data, ARRAY_LEN(lwrb_data));
printf("Read/Write test\r\n");
{
uint8_t rw_buff[8];
#define RW_TEST(_w_exp_, _r_exp_, _rw_len_, _rw_exp_len_) \
do \
{ \
printf("W ptr: %u, R ptr: %u, R/W len: %u, as_expected: %u\r\n", (unsigned)buff.w_ptr, (unsigned)buff.r_ptr, \
(unsigned)(_rw_len_), \
(unsigned)(buff.w_ptr == (_w_exp_) && buff.r_ptr == (_r_exp_) && (_rw_len_) == (_rw_exp_len_))); \
} while (0)
lwrb_reset(&buff);
len = lwrb_write(&buff, "1234567890", 10); /* Write 3 bytes */
RW_TEST(3, 0, len, 3);
len = lwrb_write(&buff, "abcdefg", 7); /* Write 3 bytes */
RW_TEST(6, 0, len, 3);
for (int i = 0; i < buff.size; i++)
{
printf("%c ", buff.buff[i]);
}
printf("\n");
len = lwrb_read(&buff, rw_buff, 3); /* Read 3 bytes */
RW_TEST(6, 3, len, 3);
len = lwrb_read(&buff, rw_buff, 4); /* Read 4 bytes */
RW_TEST(6, 6, len, 3);
len = lwrb_write(&buff, "abc", 3); /* Write 3 bytes -> buffer should go over */
RW_TEST(0, 6, len, 3);
#undef RW_TEST
}
// printf("Read/Write extended test\r\n");
// {
// uint8_t rw_buff[8];
// lwrb_sz_t written, read;
// uint8_t success;
// #define RW_TEST(_w_exp_, _r_exp_, _success_, _rw_len_, _rw_exp_len_) \
// do \
// { \
// printf("W ptr: %u, R ptr: %u, R/W success: %u, R/W len: %u, as_expected: %u\r\n", (unsigned)buff.w_ptr, \
// (unsigned)buff.r_ptr, (unsigned)(_success_), (unsigned)(_rw_len_), \
// (unsigned)(buff.w_ptr == (_w_exp_) && buff.r_ptr == (_r_exp_) && (_rw_len_) == (_rw_exp_len_))); \
// } while (0)
// lwrb_reset(&buff);
// written = 0;
// success = lwrb_write_ex(&buff, "abcdefg", 7, &written, LWRB_FLAG_WRITE_ALL); /* Write all bytes */
// RW_TEST(7, 0, success, written, 7);
// // success = lwrb_read_ex(&buff, rw_buff, 3, &read, LWRB_FLAG_READ_ALL); /* Read 3 bytes only */
// // printf("RW FULL READ: %u, as_expected: %u\r\n", (unsigned)success, (unsigned)(success == 1));
// // RW_TEST(7, 3, success, written, 7);
// /* This one shall failed, not enough memory available */
// success = lwrb_write_ex(&buff, "abcd", 4, &written, LWRB_FLAG_WRITE_ALL); /* Write all bytes */
// printf("RW FULL WRITE: %u, as_expected: %u\r\n", (unsigned)success, (unsigned)(success == 0));
// /* Read few more bytes to allow full write */
// success = lwrb_read_ex(&buff, rw_buff, 1, &read, LWRB_FLAG_READ_ALL); /* Read 3 bytes only */
// printf("RW FULL READ: %u, as_expected: %u\r\n", (unsigned)success, (unsigned)(success == 1));
// // 打印rw_buff
// for (int i = 0; i < ARRAY_LEN(rw_buff); i++)
// {
// printf("%c ", rw_buff[i]);
// }
// /* Now it should go through */
// success = lwrb_write_ex(&buff, "abcdefg", 7, &written, LWRB_FLAG_WRITE_ALL); /* Write all bytes */
// printf("RW FULL WRITE: %u, as_expected: %u\r\n", (unsigned)success, (unsigned)(success == 1));
// #undef RW_TEST
// }
return 0;
}