0
mirror of https://github.com/TheusHen/EEGFrontier.git synced 2026-04-16 15:06:07 +00:00
Files
EEGFrontier/firmware/test/test_fw_utils/test_main.cpp
2026-02-26 17:19:05 -03:00

76 lines
2.2 KiB
C++

#include <unity.h>
#include "fw_utils.h"
void test_sign_extend_24bit_values() {
TEST_ASSERT_EQUAL_INT32(0, signExtend24(0x000000));
TEST_ASSERT_EQUAL_INT32(1, signExtend24(0x000001));
TEST_ASSERT_EQUAL_INT32(0x007FFFFF, signExtend24(0x007FFFFF));
TEST_ASSERT_EQUAL_INT32(-1, signExtend24(0x00FFFFFF));
TEST_ASSERT_EQUAL_INT32(-8388608, signExtend24(0x00800000));
}
void test_crc16_ccitt_known_vector() {
static const uint8_t data[] = {'1','2','3','4','5','6','7','8','9'};
TEST_ASSERT_EQUAL_HEX16(0x29B1, crc16_ccitt(data, sizeof(data)));
}
void test_cobs_encode_no_zeros() {
const uint8_t in[] = {0x11, 0x22, 0x33};
uint8_t out[8] = {0};
size_t len = cobsEncode(in, sizeof(in), out);
TEST_ASSERT_EQUAL_UINT32(4, static_cast<uint32_t>(len));
TEST_ASSERT_EQUAL_UINT8(0x04, out[0]);
TEST_ASSERT_EQUAL_UINT8(0x11, out[1]);
TEST_ASSERT_EQUAL_UINT8(0x22, out[2]);
TEST_ASSERT_EQUAL_UINT8(0x33, out[3]);
}
void test_cobs_encode_with_zeros() {
const uint8_t in[] = {0x11, 0x00, 0x22, 0x00, 0x00, 0x33};
uint8_t out[16] = {0};
size_t len = cobsEncode(in, sizeof(in), out);
const uint8_t expected[] = {
0x02, 0x11,
0x02, 0x22,
0x01,
0x02, 0x33};
TEST_ASSERT_EQUAL_UINT32(sizeof(expected), static_cast<uint32_t>(len));
TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, out, sizeof(expected));
}
void test_pack_helpers_little_endian() {
uint8_t buf[4] = {0};
pack_u16_le(buf, 0xABCD);
TEST_ASSERT_EQUAL_UINT8(0xCD, buf[0]);
TEST_ASSERT_EQUAL_UINT8(0xAB, buf[1]);
pack_u32_le(buf, 0x12345678UL);
TEST_ASSERT_EQUAL_UINT8(0x78, buf[0]);
TEST_ASSERT_EQUAL_UINT8(0x56, buf[1]);
TEST_ASSERT_EQUAL_UINT8(0x34, buf[2]);
TEST_ASSERT_EQUAL_UINT8(0x12, buf[3]);
pack_i32_le(buf, -2);
TEST_ASSERT_EQUAL_UINT8(0xFE, buf[0]);
TEST_ASSERT_EQUAL_UINT8(0xFF, buf[1]);
TEST_ASSERT_EQUAL_UINT8(0xFF, buf[2]);
TEST_ASSERT_EQUAL_UINT8(0xFF, buf[3]);
}
int main(int argc, char** argv) {
(void)argc;
(void)argv;
UNITY_BEGIN();
RUN_TEST(test_sign_extend_24bit_values);
RUN_TEST(test_crc16_ccitt_known_vector);
RUN_TEST(test_cobs_encode_no_zeros);
RUN_TEST(test_cobs_encode_with_zeros);
RUN_TEST(test_pack_helpers_little_endian);
return UNITY_END();
}