ca13734bf0
Add kernel (Cortex-M0/M3/M4, Tricore, S32K, RISC-V ports), drivers, middleware (CAN stack, diagnostics, safety), applications, board support, build/test tooling, and documentation.
102 lines
2.4 KiB
C
102 lines
2.4 KiB
C
/**
|
|
* @file test_gpio.c
|
|
* @brief Hardware tests for GPIO
|
|
*/
|
|
|
|
#include "unity.h"
|
|
#include "kernel.h"
|
|
#include "gpio_driver.h"
|
|
#include "board.h"
|
|
|
|
/* Test pins */
|
|
#define TEST_OUTPUT_PIN 0
|
|
#define TEST_INPUT_PIN 1
|
|
|
|
/* Setup */
|
|
void setUp(void) {
|
|
kernel_init();
|
|
board_init();
|
|
}
|
|
|
|
/* Teardown */
|
|
void tearDown(void) {
|
|
kernel_stop();
|
|
}
|
|
|
|
/* ============================================================================
|
|
* Test Cases
|
|
* ============================================================================ */
|
|
|
|
/**
|
|
* @brief Test GPIO initialization
|
|
*/
|
|
void test_gpio_init(void) {
|
|
GpioPinConfig_t config = {
|
|
.port = 0,
|
|
.pin = TEST_OUTPUT_PIN,
|
|
.mode = GPIO_MODE_OUTPUT,
|
|
.output_type = GPIO_OUTPUT_PUSH_PULL,
|
|
.pull = GPIO_PULL_NONE,
|
|
.speed = GPIO_SPEED_HIGH
|
|
};
|
|
|
|
TEST_ASSERT_EQUAL(KERNEL_OK, gpio_init(&config));
|
|
}
|
|
|
|
/**
|
|
* @brief Test GPIO write and read
|
|
*/
|
|
void test_gpio_write_read(void) {
|
|
/* Configure output pin */
|
|
GpioPinConfig_t output_config = {
|
|
.port = 0,
|
|
.pin = TEST_OUTPUT_PIN,
|
|
.mode = GPIO_MODE_OUTPUT,
|
|
.output_type = GPIO_OUTPUT_PUSH_PULL,
|
|
.pull = GPIO_PULL_NONE,
|
|
.speed = GPIO_SPEED_HIGH
|
|
};
|
|
gpio_init(&output_config);
|
|
|
|
/* Write high */
|
|
TEST_ASSERT_EQUAL(KERNEL_OK, gpio_write(0, TEST_OUTPUT_PIN, true));
|
|
TEST_ASSERT_TRUE(gpio_read(0, TEST_OUTPUT_PIN));
|
|
|
|
/* Write low */
|
|
TEST_ASSERT_EQUAL(KERNEL_OK, gpio_write(0, TEST_OUTPUT_PIN, false));
|
|
TEST_ASSERT_FALSE(gpio_read(0, TEST_OUTPUT_PIN));
|
|
}
|
|
|
|
/**
|
|
* @brief Test GPIO toggle
|
|
*/
|
|
void test_gpio_toggle(void) {
|
|
GpioPinConfig_t config = {
|
|
.port = 0,
|
|
.pin = TEST_OUTPUT_PIN,
|
|
.mode = GPIO_MODE_OUTPUT,
|
|
.output_type = GPIO_OUTPUT_PUSH_PULL,
|
|
.pull = GPIO_PULL_NONE,
|
|
.speed = GPIO_SPEED_HIGH
|
|
};
|
|
gpio_init(&config);
|
|
|
|
bool initial_state = gpio_read(0, TEST_OUTPUT_PIN);
|
|
|
|
TEST_ASSERT_EQUAL(KERNEL_OK, gpio_toggle(0, TEST_OUTPUT_PIN));
|
|
TEST_ASSERT_NOT_EQUAL(initial_state, gpio_read(0, TEST_OUTPUT_PIN));
|
|
}
|
|
|
|
/* ============================================================================
|
|
* Test Runner
|
|
* ============================================================================ */
|
|
int main(void) {
|
|
UNITY_BEGIN();
|
|
|
|
RUN_TEST(test_gpio_init);
|
|
RUN_TEST(test_gpio_write_read);
|
|
RUN_TEST(test_gpio_toggle);
|
|
|
|
return UNITY_END();
|
|
}
|