Skip to content

Commit

Permalink
not in setup
Browse files Browse the repository at this point in the history
  • Loading branch information
YannLocatelli committed Mar 4, 2024
1 parent 6973048 commit 1138cd7
Showing 1 changed file with 69 additions and 49 deletions.
118 changes: 69 additions & 49 deletions drivers/CoreDAC/tests/CoreSTM32HalBasicTimer_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,35 +23,12 @@ using ::testing::SaveArgPointee;
class CoreSTM32HalBasicTimerTest : public ::testing::Test
{
protected:
void SetUp() override
{
basic_timer.registerCallback(callback.AsStdFunction());

EXPECT_CALL(halmock, HAL_TIM_RegisterCallback(_, HAL_TIM_BASE_MSPINIT_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&mspinit_callback), Return(HAL_StatusTypeDef::HAL_OK)));
EXPECT_CALL(halmock, HAL_TIM_RegisterCallback(_, HAL_TIM_BASE_MSPDEINIT_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&mspdeinit_callback), Return(HAL_StatusTypeDef::HAL_OK)));
EXPECT_CALL(halmock, HAL_TIM_RegisterCallback(_, HAL_TIM_PERIOD_ELAPSED_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&period_elapsed_callback), Return(HAL_StatusTypeDef::HAL_OK)));

EXPECT_CALL(halmock, HAL_TIM_Base_Init);
EXPECT_CALL(halmock, HAL_TIMEx_MasterConfigSynchronization)
.WillOnce(DoAll(SaveArgPointee<1>(&basic_timer_master_config), Return(HAL_StatusTypeDef::HAL_OK)));

basic_timer.initialize();
}
// void SetUp() override {}
// void TearDown() override {}

mock::CoreSTM32Hal halmock;

CoreSTM32HalBasicTimer basic_timer {halmock};
TIM_MasterConfigTypeDef basic_timer_master_config {};

MockFunction<void()> callback;

std::function<void(TIM_HandleTypeDef *)> mspinit_callback = [](TIM_HandleTypeDef *) {};
std::function<void(TIM_HandleTypeDef *)> mspdeinit_callback = [](TIM_HandleTypeDef *) {};
std::function<void(TIM_HandleTypeDef *)> period_elapsed_callback = [](TIM_HandleTypeDef *) {};
};

TEST_F(CoreSTM32HalBasicTimerTest, initializationDefault)
Expand Down Expand Up @@ -88,42 +65,69 @@ TEST_F(CoreSTM32HalBasicTimerTest, initialize)
basic_timer.initialize();
}

TEST_F(CoreSTM32HalBasicTimerTest, initializeMspInit)
TEST_F(CoreSTM32HalBasicTimerTest, initializeMspInitDeinit)
{
auto *basic_timer_instance = basic_timer.getHandle().Instance;
std::function<void(TIM_HandleTypeDef *)> mspinit_callback = [](TIM_HandleTypeDef *) {};
std::function<void(TIM_HandleTypeDef *)> mspdeinit_callback = [](TIM_HandleTypeDef *) {};

if (basic_timer_instance == TIM6) {
EXPECT_CALL(halmock, HAL_RCC_TIM6_CLK_ENABLE);
EXPECT_CALL(halmock, HAL_NVIC_SetPriority(TIM6_DAC_IRQn, _, _));
EXPECT_CALL(halmock, HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn));
} else if (basic_timer_instance == TIM7) {
EXPECT_CALL(halmock, HAL_RCC_TIM7_CLK_ENABLE);
EXPECT_CALL(halmock, HAL_NVIC_SetPriority(TIM7_IRQn, _, _));
EXPECT_CALL(halmock, HAL_NVIC_EnableIRQ(TIM7_IRQn));
} else {
FAIL(); // Only timers 6 and 7 can be used as Basic Timer
}
{
EXPECT_CALL(halmock, HAL_TIM_RegisterCallback(_, HAL_TIM_BASE_MSPINIT_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&mspinit_callback), Return(HAL_StatusTypeDef::HAL_OK)));
EXPECT_CALL(halmock, HAL_TIM_RegisterCallback(_, HAL_TIM_BASE_MSPDEINIT_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&mspdeinit_callback), Return(HAL_StatusTypeDef::HAL_OK)));
EXPECT_CALL(halmock, HAL_TIM_RegisterCallback(_, HAL_TIM_PERIOD_ELAPSED_CB_ID, _));
EXPECT_CALL(halmock, HAL_TIM_Base_Init);
EXPECT_CALL(halmock, HAL_TIMEx_MasterConfigSynchronization);

mspinit_callback(&basic_timer.getHandle());
}
basic_timer.initialize();
}

TEST_F(CoreSTM32HalBasicTimerTest, initializeMspDeinit)
{
auto *basic_timer_instance = basic_timer.getHandle().Instance;

if (basic_timer_instance == TIM6) {
EXPECT_CALL(halmock, HAL_RCC_TIM6_CLK_DISABLE);
} else if (basic_timer_instance == TIM7) {
EXPECT_CALL(halmock, HAL_RCC_TIM7_CLK_DISABLE);
} else {
FAIL(); // Only timers 6 and 7 can be used as Basic Timer
}
{
if (basic_timer_instance == TIM6) {
EXPECT_CALL(halmock, HAL_RCC_TIM6_CLK_ENABLE);
EXPECT_CALL(halmock, HAL_NVIC_SetPriority(TIM6_DAC_IRQn, _, _));
EXPECT_CALL(halmock, HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn));
} else if (basic_timer_instance == TIM7) {
EXPECT_CALL(halmock, HAL_RCC_TIM7_CLK_ENABLE);
EXPECT_CALL(halmock, HAL_NVIC_SetPriority(TIM7_IRQn, _, _));
EXPECT_CALL(halmock, HAL_NVIC_EnableIRQ(TIM7_IRQn));
} else {
FAIL(); // Only timers 6 and 7 can be used as Basic Timer
}

mspinit_callback(&basic_timer.getHandle());
} // MSP Init

mspdeinit_callback(&basic_timer.getHandle());
{
if (basic_timer_instance == TIM6) {
EXPECT_CALL(halmock, HAL_RCC_TIM6_CLK_DISABLE);
} else if (basic_timer_instance == TIM7) {
EXPECT_CALL(halmock, HAL_RCC_TIM7_CLK_DISABLE);
} else {
FAIL(); // Only timers 6 and 7 can be used as Basic Timer
}

mspdeinit_callback(&basic_timer.getHandle());
} // MSP Deinit
}

TEST_F(CoreSTM32HalBasicTimerTest, initializeConfig)
{
TIM_MasterConfigTypeDef basic_timer_master_config {};

{
EXPECT_CALL(halmock, HAL_TIM_RegisterCallback(_, HAL_TIM_BASE_MSPINIT_CB_ID, _));
EXPECT_CALL(halmock, HAL_TIM_RegisterCallback(_, HAL_TIM_BASE_MSPDEINIT_CB_ID, _));
EXPECT_CALL(halmock, HAL_TIM_RegisterCallback(_, HAL_TIM_PERIOD_ELAPSED_CB_ID, _));
EXPECT_CALL(halmock, HAL_TIM_Base_Init);
EXPECT_CALL(halmock, HAL_TIMEx_MasterConfigSynchronization)
.WillOnce(DoAll(SaveArgPointee<1>(&basic_timer_master_config), Return(HAL_StatusTypeDef::HAL_OK)));

basic_timer.initialize();
}

auto timer_handle = basic_timer.getHandle();

auto CK_INT = 54'000'000;
Expand Down Expand Up @@ -158,6 +162,22 @@ TEST_F(CoreSTM32HalBasicTimerTest, initializeConfig)

TEST_F(CoreSTM32HalBasicTimerTest, initializePeriodElapsedCallback)
{
MockFunction<void()> callback;
std::function<void(TIM_HandleTypeDef *)> period_elapsed_callback = [](TIM_HandleTypeDef *) {};

{
basic_timer.registerCallback(callback.AsStdFunction());

EXPECT_CALL(halmock, HAL_TIM_RegisterCallback(_, HAL_TIM_BASE_MSPINIT_CB_ID, _));
EXPECT_CALL(halmock, HAL_TIM_RegisterCallback(_, HAL_TIM_BASE_MSPDEINIT_CB_ID, _));
EXPECT_CALL(halmock, HAL_TIM_RegisterCallback(_, HAL_TIM_PERIOD_ELAPSED_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&period_elapsed_callback), Return(HAL_StatusTypeDef::HAL_OK)));
EXPECT_CALL(halmock, HAL_TIM_Base_Init);
EXPECT_CALL(halmock, HAL_TIMEx_MasterConfigSynchronization);

basic_timer.initialize();
}

EXPECT_CALL(callback, Call);
period_elapsed_callback(&basic_timer.getHandle());
}
Expand Down

0 comments on commit 1138cd7

Please sign in to comment.