Skip to content

Commit

Permalink
Revert "not in setup"
Browse files Browse the repository at this point in the history
This reverts commit 78daabd.
  • Loading branch information
YannLocatelli committed Mar 4, 2024
1 parent 78daabd commit 17030fa
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 172 deletions.
163 changes: 60 additions & 103 deletions drivers/CoreDAC/tests/CoreDAC_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,44 @@ using ::testing::SaveArgPointee;
class CoreDACTest : public ::testing::Test
{
protected:
// void SetUp() override {}
void SetUp() override
{
dac.registerDMACallbacks(on_half_transfer_callback.AsStdFunction(),
on_complete_transfer_callback.AsStdFunction());

EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_MSPINIT_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&mspinit_callback), Return(HAL_StatusTypeDef::HAL_OK)));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_MSPDEINIT_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&mspdeinit_callback), Return(HAL_StatusTypeDef::HAL_OK)));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_CH1_HALF_COMPLETE_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&dma_half_transfer_callback), Return(HAL_StatusTypeDef::HAL_OK)));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_CH1_COMPLETE_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&dma_complete_transfer_callback), Return(HAL_StatusTypeDef::HAL_OK)));

EXPECT_CALL(halmock, HAL_DAC_Init);
EXPECT_CALL(haltimermock, linkDACTimer);
EXPECT_CALL(halmock, HAL_DAC_ConfigChannel)
.WillOnce(DoAll(SaveArgPointee<1>(&dac_config), Return(HAL_StatusTypeDef::HAL_OK)));

dac.initialize();
}
// void TearDown() override {}

mock::CoreSTM32Hal halmock;
mock::STM32HalTimer haltimermock;

CoreDAC dac {halmock, haltimermock};

MockFunction<void()> on_half_transfer_callback;
MockFunction<void()> on_complete_transfer_callback;

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

DAC_ChannelConfTypeDef dac_config {};

std::function<void(DAC_HandleTypeDef *)> dma_half_transfer_callback = [](DAC_HandleTypeDef *) {};
std::function<void(DAC_HandleTypeDef *)> dma_complete_transfer_callback = [](DAC_HandleTypeDef *) {};
};

TEST_F(CoreDACTest, initializationDefault)
Expand Down Expand Up @@ -66,72 +97,38 @@ TEST_F(CoreDACTest, initialize)
dac.initialize();
}

TEST_F(CoreDACTest, initializeMspInitDeinit)
TEST_F(CoreDACTest, initializeMspInit)
{
std::function<void(DAC_HandleTypeDef *)> mspinit_callback = [](DAC_HandleTypeDef *) {};
std::function<void(DAC_HandleTypeDef *)> mspdeinit_callback = [](DAC_HandleTypeDef *) {};

{
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_MSPINIT_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&mspinit_callback), Return(HAL_StatusTypeDef::HAL_OK)));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_MSPDEINIT_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&mspdeinit_callback), Return(HAL_StatusTypeDef::HAL_OK)));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_CH1_HALF_COMPLETE_CB_ID, _));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_CH1_COMPLETE_CB_ID, _));
EXPECT_CALL(halmock, HAL_DAC_Init);
EXPECT_CALL(haltimermock, linkDACTimer);
EXPECT_CALL(halmock, HAL_DAC_ConfigChannel);

dac.initialize();
}
EXPECT_CALL(halmock, HAL_RCC_DMA1_CLK_ENABLE);
EXPECT_CALL(halmock, HAL_NVIC_SetPriority);
EXPECT_CALL(halmock, HAL_NVIC_EnableIRQ);
EXPECT_CALL(halmock, HAL_DMA_Init);

{
EXPECT_CALL(halmock, HAL_RCC_DMA1_CLK_ENABLE);
EXPECT_CALL(halmock, HAL_NVIC_SetPriority);
EXPECT_CALL(halmock, HAL_NVIC_EnableIRQ);
EXPECT_CALL(halmock, HAL_DMA_Init);
EXPECT_CALL(halmock, HAL_RCC_DAC_CLK_ENABLE);
EXPECT_CALL(halmock, HAL_RCC_DAC_CLK_ENABLE);

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

{
EXPECT_CALL(halmock, HAL_DMA_DeInit);
EXPECT_CALL(halmock, HAL_RCC_DAC_CLK_DISABLE);
mspdeinit_callback(&dac.getHandle());
} // MSP Deinit
TEST_F(CoreDACTest, initializeMspDeinit)
{
EXPECT_CALL(halmock, HAL_DMA_DeInit);
EXPECT_CALL(halmock, HAL_RCC_DAC_CLK_DISABLE);
mspdeinit_callback(&dac.getHandle());
}

TEST_F(CoreDACTest, initializeMspInitDMAConfig)
{
std::function<void(DAC_HandleTypeDef *)> mspinit_callback = [](DAC_HandleTypeDef *) {};

{
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_MSPINIT_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&mspinit_callback), Return(HAL_StatusTypeDef::HAL_OK)));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_MSPDEINIT_CB_ID, _));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_CH1_HALF_COMPLETE_CB_ID, _));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_CH1_COMPLETE_CB_ID, _));
EXPECT_CALL(halmock, HAL_DAC_Init);
EXPECT_CALL(haltimermock, linkDACTimer);
EXPECT_CALL(halmock, HAL_DAC_ConfigChannel);

dac.initialize();
}

auto dma_handle = DMA_HandleTypeDef {};

{
EXPECT_CALL(halmock, HAL_RCC_DMA1_CLK_ENABLE);
EXPECT_CALL(halmock, HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, _, _));
EXPECT_CALL(halmock, HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn));
EXPECT_CALL(halmock, HAL_DMA_Init)
.WillOnce(DoAll(SaveArgPointee<0>(&dma_handle), Return(HAL_StatusTypeDef::HAL_OK)));
EXPECT_CALL(halmock, HAL_RCC_DMA1_CLK_ENABLE);
EXPECT_CALL(halmock, HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, _, _));
EXPECT_CALL(halmock, HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn));
EXPECT_CALL(halmock, HAL_DMA_Init)
.WillOnce(DoAll(SaveArgPointee<0>(&dma_handle), Return(HAL_StatusTypeDef::HAL_OK)));

EXPECT_CALL(halmock, HAL_RCC_DAC_CLK_ENABLE);
EXPECT_CALL(halmock, HAL_RCC_DAC_CLK_ENABLE);

mspinit_callback(&dac.getHandle());
} // MSP Init - DMA Specific
mspinit_callback(&dac.getHandle());

EXPECT_NE(&dma_handle, nullptr);
EXPECT_EQ(dma_handle.Instance, DMA1_Stream5);
Expand All @@ -142,60 +139,20 @@ TEST_F(CoreDACTest, initializeMspInitDMAConfig)

TEST_F(CoreDACTest, initializeConfig)
{
DAC_ChannelConfTypeDef dac_config {};

{
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_MSPINIT_CB_ID, _));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_MSPDEINIT_CB_ID, _));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_CH1_HALF_COMPLETE_CB_ID, _));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_CH1_COMPLETE_CB_ID, _));
EXPECT_CALL(halmock, HAL_DAC_Init);
EXPECT_CALL(haltimermock, linkDACTimer);
EXPECT_CALL(halmock, HAL_DAC_ConfigChannel)
.WillOnce(DoAll(SaveArgPointee<1>(&dac_config), Return(HAL_StatusTypeDef::HAL_OK)));

dac.initialize();
}

// necessary to reach the full voltage range in DAC output
EXPECT_EQ(dac_config.DAC_OutputBuffer, DAC_OUTPUTBUFFER_ENABLE);
}

TEST_F(CoreDACTest, initializeDmaHalfCompleteTransferCallback)
TEST_F(CoreDACTest, initializeDmaHalfTransferCallback)
{
MockFunction<void()> on_half_transfer_callback;
MockFunction<void()> on_complete_transfer_callback;

std::function<void(DAC_HandleTypeDef *)> dma_half_transfer_callback = [](DAC_HandleTypeDef *) {};
std::function<void(DAC_HandleTypeDef *)> dma_complete_transfer_callback = [](DAC_HandleTypeDef *) {};

{
dac.registerDMACallbacks(on_half_transfer_callback.AsStdFunction(),
on_complete_transfer_callback.AsStdFunction());

EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_MSPINIT_CB_ID, _));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_MSPDEINIT_CB_ID, _));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_CH1_HALF_COMPLETE_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&dma_half_transfer_callback), Return(HAL_StatusTypeDef::HAL_OK)));
EXPECT_CALL(halmock, HAL_DAC_RegisterCallback(_, HAL_DAC_CH1_COMPLETE_CB_ID, _))
.WillOnce(DoAll(SaveArg<2>(&dma_complete_transfer_callback), Return(HAL_StatusTypeDef::HAL_OK)));

EXPECT_CALL(halmock, HAL_DAC_Init);
EXPECT_CALL(haltimermock, linkDACTimer);
EXPECT_CALL(halmock, HAL_DAC_ConfigChannel);

dac.initialize();
}

{
EXPECT_CALL(on_half_transfer_callback, Call);
dma_half_transfer_callback(&dac.getHandle());
} // DMA half transfer
EXPECT_CALL(on_half_transfer_callback, Call);
dma_half_transfer_callback(&dac.getHandle());
}

{
EXPECT_CALL(on_complete_transfer_callback, Call);
dma_complete_transfer_callback(&dac.getHandle());
} // DMA complete transfer
TEST_F(CoreDACTest, initializeDmaCompleteTransferCallback)
{
EXPECT_CALL(on_complete_transfer_callback, Call);
dma_complete_transfer_callback(&dac.getHandle());
}

TEST_F(CoreDACTest, terminate)
Expand Down
118 changes: 49 additions & 69 deletions drivers/CoreDAC/tests/CoreSTM32HalBasicTimer_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,35 @@ using ::testing::SaveArgPointee;
class CoreSTM32HalBasicTimerTest : public ::testing::Test
{
protected:
// void SetUp() override {}
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 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 @@ -64,69 +87,42 @@ TEST_F(CoreSTM32HalBasicTimerTest, initialize)
basic_timer.initialize();
}

TEST_F(CoreSTM32HalBasicTimerTest, initializeMspInitDeinit)
TEST_F(CoreSTM32HalBasicTimerTest, initializeMspInit)
{
std::function<void(TIM_HandleTypeDef *)> mspinit_callback = [](TIM_HandleTypeDef *) {};
std::function<void(TIM_HandleTypeDef *)> mspdeinit_callback = [](TIM_HandleTypeDef *) {};

{
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);
auto *basic_timer_instance = basic_timer.getHandle().Instance;

basic_timer.initialize();
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());
}

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

{
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
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_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
mspdeinit_callback(&basic_timer.getHandle());
}

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 @@ -161,22 +157,6 @@ 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 17030fa

Please sign in to comment.