186 lines
4.9 KiB
C
186 lines
4.9 KiB
C
#include "uart_driver.h"
|
|
#include <unity.h>
|
|
|
|
void setUp(void) {
|
|
// Set up test fixtures before each test
|
|
}
|
|
|
|
void tearDown(void) {
|
|
// Clean up test fixtures after each test
|
|
}
|
|
|
|
void test_uart_driver_init_valid_config(void) {
|
|
uart_driver_t driver;
|
|
uart_config_t config = {
|
|
.tx_pin = 17,
|
|
.rx_pin = 18,
|
|
.baud_rate = 9600,
|
|
.data_bits = 8,
|
|
.parity = 0, // none
|
|
.stop_bits = 1
|
|
};
|
|
|
|
TEST_ASSERT_TRUE(uart_driver_init(&driver, &config));
|
|
TEST_ASSERT_TRUE(uart_driver_is_initialized(&driver));
|
|
|
|
uart_driver_deinit(&driver);
|
|
}
|
|
|
|
void test_uart_driver_init_invalid_baud_rate(void) {
|
|
uart_driver_t driver;
|
|
uart_config_t config = {
|
|
.tx_pin = 17,
|
|
.rx_pin = 18,
|
|
.baud_rate = 0, // Invalid baud rate
|
|
.data_bits = 8,
|
|
.parity = 0,
|
|
.stop_bits = 1
|
|
};
|
|
|
|
TEST_ASSERT_FALSE(uart_driver_init(&driver, &config));
|
|
TEST_ASSERT_FALSE(uart_driver_is_initialized(&driver));
|
|
}
|
|
|
|
void test_uart_driver_init_invalid_data_bits(void) {
|
|
uart_driver_t driver;
|
|
uart_config_t config = {
|
|
.tx_pin = 17,
|
|
.rx_pin = 18,
|
|
.baud_rate = 9600,
|
|
.data_bits = 9, // Invalid data bits
|
|
.parity = 0,
|
|
.stop_bits = 1
|
|
};
|
|
|
|
TEST_ASSERT_FALSE(uart_driver_init(&driver, &config));
|
|
TEST_ASSERT_FALSE(uart_driver_is_initialized(&driver));
|
|
}
|
|
|
|
void test_uart_driver_init_null_pointers(void) {
|
|
uart_driver_t driver;
|
|
uart_config_t config = {
|
|
.tx_pin = 17,
|
|
.rx_pin = 18,
|
|
.baud_rate = 9600,
|
|
.data_bits = 8,
|
|
.parity = 0,
|
|
.stop_bits = 1
|
|
};
|
|
|
|
// Test NULL driver pointer
|
|
TEST_ASSERT_FALSE(uart_driver_init(NULL, &config));
|
|
|
|
// Test NULL config pointer
|
|
TEST_ASSERT_FALSE(uart_driver_init(&driver, NULL));
|
|
}
|
|
|
|
void test_uart_driver_send_receive(void) {
|
|
uart_driver_t driver;
|
|
uart_config_t config = {
|
|
.tx_pin = 17,
|
|
.rx_pin = 18,
|
|
.baud_rate = 9600,
|
|
.data_bits = 8,
|
|
.parity = 0,
|
|
.stop_bits = 1
|
|
};
|
|
|
|
TEST_ASSERT_TRUE(uart_driver_init(&driver, &config));
|
|
TEST_ASSERT_TRUE(uart_driver_is_initialized(&driver));
|
|
|
|
uint8_t test_data[] = {0x01, 0x02, 0x03, 0x04, 0x05};
|
|
size_t test_length = sizeof(test_data);
|
|
|
|
// Test sending data
|
|
TEST_ASSERT_TRUE(uart_driver_send(&driver, test_data, test_length, 1000));
|
|
|
|
// Test receiving data (should return 0 in our mock implementation)
|
|
uint8_t rx_buffer[10];
|
|
int bytes_received = uart_driver_receive(&driver, rx_buffer, sizeof(rx_buffer), 100);
|
|
TEST_ASSERT_EQUAL_INT(0, bytes_received); // Our mock returns 0 (no data)
|
|
|
|
uart_driver_deinit(&driver);
|
|
}
|
|
|
|
void test_uart_driver_send_null_data(void) {
|
|
uart_driver_t driver;
|
|
uart_config_t config = {
|
|
.tx_pin = 17,
|
|
.rx_pin = 18,
|
|
.baud_rate = 9600,
|
|
.data_bits = 8,
|
|
.parity = 0,
|
|
.stop_bits = 1
|
|
};
|
|
|
|
TEST_ASSERT_TRUE(uart_driver_init(&driver, &config));
|
|
|
|
// Test sending NULL data
|
|
TEST_ASSERT_FALSE(uart_driver_send(&driver, NULL, 5, 1000));
|
|
|
|
uart_driver_deinit(&driver);
|
|
}
|
|
|
|
void test_uart_driver_receive_null_buffer(void) {
|
|
uart_driver_t driver;
|
|
uart_config_t config = {
|
|
.tx_pin = 17,
|
|
.rx_pin = 18,
|
|
.baud_rate = 9600,
|
|
.data_bits = 8,
|
|
.parity = 0,
|
|
.stop_bits = 1
|
|
};
|
|
|
|
TEST_ASSERT_TRUE(uart_driver_init(&driver, &config));
|
|
|
|
// Test receiving with NULL buffer
|
|
TEST_ASSERT_EQUAL_INT(-1, uart_driver_receive(&driver, NULL, 10, 100));
|
|
|
|
uart_driver_deinit(&driver);
|
|
}
|
|
|
|
void test_uart_driver_uninitialized_operations(void) {
|
|
uart_driver_t driver = {0}; // Not initialized
|
|
uint8_t test_data = 0x01;
|
|
uint8_t rx_buffer[10];
|
|
|
|
// Test operations on uninitialized driver
|
|
TEST_ASSERT_FALSE(uart_driver_send(&driver, &test_data, 1, 1000));
|
|
TEST_ASSERT_EQUAL_INT(-1, uart_driver_receive(&driver, rx_buffer, sizeof(rx_buffer), 100));
|
|
TEST_ASSERT_FALSE(uart_driver_is_initialized(&driver));
|
|
}
|
|
|
|
void test_uart_driver_deinit(void) {
|
|
uart_driver_t driver;
|
|
uart_config_t config = {
|
|
.tx_pin = 17,
|
|
.rx_pin = 18,
|
|
.baud_rate = 9600,
|
|
.data_bits = 8,
|
|
.parity = 0,
|
|
.stop_bits = 1
|
|
};
|
|
|
|
TEST_ASSERT_TRUE(uart_driver_init(&driver, &config));
|
|
TEST_ASSERT_TRUE(uart_driver_is_initialized(&driver));
|
|
|
|
uart_driver_deinit(&driver);
|
|
TEST_ASSERT_FALSE(uart_driver_is_initialized(&driver));
|
|
}
|
|
|
|
int main(void) {
|
|
UNITY_BEGIN();
|
|
|
|
RUN_TEST(test_uart_driver_init_valid_config);
|
|
RUN_TEST(test_uart_driver_init_invalid_baud_rate);
|
|
RUN_TEST(test_uart_driver_init_invalid_data_bits);
|
|
RUN_TEST(test_uart_driver_init_null_pointers);
|
|
RUN_TEST(test_uart_driver_send_receive);
|
|
RUN_TEST(test_uart_driver_send_null_data);
|
|
RUN_TEST(test_uart_driver_receive_null_buffer);
|
|
RUN_TEST(test_uart_driver_uninitialized_operations);
|
|
RUN_TEST(test_uart_driver_deinit);
|
|
|
|
return UNITY_END();
|
|
} |