Cleaning up/documenting C unit testing infrastructure
This commit is contained in:
parent
92c6ff2baa
commit
5e7279edc6
3 changed files with 285 additions and 27 deletions
|
@ -39,21 +39,23 @@ static uint8_t expectedSuccess;
|
|||
static uint32_t expectedCrc;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
DEFINE_MOCK_RET(uint32_t, __get_PRIMASK, mock) {
|
||||
RETURN_MOCK_PREDEF(__get_PRIMASK, mock);
|
||||
}
|
||||
uint32_t effective_primask = 0;
|
||||
|
||||
DEFINE_MOCK_VAR(uint32_t, __set_PRIMASK, mock, lastprimask);
|
||||
DEFINE_MOCK(__set_PRIMASK, mock, uint32_t primask) {
|
||||
MOCK_STORE(__set_PRIMASK, mock, lastprimask, primask);
|
||||
effective_primask = primask;
|
||||
LEAVE_MOCK;
|
||||
}
|
||||
|
||||
DEFINE_MOCK_VAR(crcslot_t *, __disable_irq, mock, compare);
|
||||
DEFINE_MOCK_RET(uint32_t, __get_PRIMASK, mock) {
|
||||
RETURN_MOCK(__get_PRIMASK, mock, effective_primask);
|
||||
}
|
||||
|
||||
DEFINE_MOCK_VAR(crcslot_t *, __disable_irq, mock, firstslot_required);
|
||||
DEFINE_MOCK(__disable_irq, mock) {
|
||||
if(!MOCK_VAR(__disable_irq, mock, callcount)) {
|
||||
EXPECT_EQ(crcStatus.firstSlot, MOCK_VAR(__disable_irq, mock, compare));
|
||||
if(MOCK_CALLCOUNT(__disable_irq, mock) < 2) {
|
||||
EXPECT_EQ(crcStatus.firstSlot, MOCK_VAR(__disable_irq, mock, firstslot_required));
|
||||
}
|
||||
effective_primask = 1;
|
||||
LEAVE_MOCK;
|
||||
}
|
||||
|
||||
|
@ -90,22 +92,19 @@ DEFINE_MOCK(LL_DMA_SetDataLength, mock, DMA_TypeDef *dma, uint32_t stream, uint3
|
|||
LEAVE_MOCK;
|
||||
}
|
||||
|
||||
DEFINE_MOCK(LL_DMA_EnableStream, mock, DMA_TypeDef *dma, uint32_t stream)
|
||||
{
|
||||
DEFINE_MOCK(LL_DMA_EnableStream, mock, DMA_TypeDef *dma, uint32_t stream) {
|
||||
EXPECT_EQ(expectedDma, dma);
|
||||
EXPECT_EQ(expectedStream, stream);
|
||||
LEAVE_MOCK;
|
||||
}
|
||||
|
||||
DEFINE_MOCK(LL_DMA_DisableStream, mock, DMA_TypeDef *dma, uint32_t stream)
|
||||
{
|
||||
DEFINE_MOCK(LL_DMA_DisableStream, mock, DMA_TypeDef *dma, uint32_t stream) {
|
||||
EXPECT_EQ(expectedDma, dma);
|
||||
EXPECT_EQ(expectedStream, stream);
|
||||
LEAVE_MOCK;
|
||||
}
|
||||
|
||||
DEFINE_MOCK(Crc_StartNextTask, mock, struct crcstatus_t *status)
|
||||
{
|
||||
DEFINE_MOCK(Crc_StartNextTask, mock, struct crcstatus_t *status) {
|
||||
EXPECT_EQ(status, &crcStatus);
|
||||
LEAVE_MOCK
|
||||
}
|
||||
|
@ -149,19 +148,20 @@ TEST(CrcScheduler, InitStatus)
|
|||
|
||||
TEST(CrcScheduler, AttachTask_single)
|
||||
{
|
||||
ACTIVATE_MOCK_RV(__get_PRIMASK, mock, 1);
|
||||
ACTIVATE_MOCK(__set_PRIMASK, mock);
|
||||
ACTIVATE_MOCK(__disable_irq, mock);
|
||||
MOCK_STORE(__disable_irq, mock, compare, nullptr);
|
||||
DMA1 = &dma1;
|
||||
DMA2 = &dma2;
|
||||
effective_primask = 0;
|
||||
Crc_InitStatus(&crcStatus, &fakeCrc, DMA2, LL_DMA_STREAM_4);
|
||||
ACTIVATE_MOCK_RV(__get_PRIMASK, mock, 0);
|
||||
ACTIVATE_MOCK(__set_PRIMASK, mock);
|
||||
ACTIVATE_MOCK(__disable_irq, mock);
|
||||
MOCK_STORE(__disable_irq, mock, firstslot_required, nullptr);
|
||||
|
||||
Crc_AttachTasks(&crcStatus, &slot1, tasks1, 2);
|
||||
|
||||
EXPECT_EQ(MOCK_VAR(__get_PRIMASK, mock, callcount), 1);
|
||||
EXPECT_EQ(MOCK_VAR(__set_PRIMASK, mock, callcount), 1);
|
||||
EXPECT_EQ(MOCK_VAR(__disable_irq, mock, callcount), 1);
|
||||
EXPECT_EQ(MOCK_CALLCOUNT(__get_PRIMASK, mock), 1);
|
||||
EXPECT_EQ(MOCK_CALLCOUNT(__set_PRIMASK, mock), 1);
|
||||
EXPECT_EQ(MOCK_CALLCOUNT(__disable_irq, mock), 1);
|
||||
EXPECT_EQ(crcStatus.firstSlot, &slot1);
|
||||
EXPECT_EQ(slot1.next, nullptr);
|
||||
EXPECT_EQ(slot1.count, 2);
|
||||
|
@ -174,18 +174,18 @@ TEST(CrcScheduler, AttachTask_multiple)
|
|||
ACTIVATE_MOCK_RV(__get_PRIMASK, mock, 1);
|
||||
ACTIVATE_MOCK(__set_PRIMASK, mock);
|
||||
ACTIVATE_MOCK(__disable_irq, mock);
|
||||
MOCK_STORE(__disable_irq, mock, compare, nullptr);
|
||||
MOCK_STORE(__disable_irq, mock, firstslot_required, nullptr);
|
||||
DMA1 = &dma1;
|
||||
DMA2 = &dma2;
|
||||
Crc_InitStatus(&crcStatus, NULL, DMA2, LL_DMA_STREAM_4);
|
||||
|
||||
Crc_AttachTasks(&crcStatus, &slot1, tasks1, 2);
|
||||
MOCK_STORE(__disable_irq, mock, compare, &slot1);
|
||||
MOCK_STORE(__disable_irq, mock, firstslot_required, &slot1);
|
||||
Crc_AttachTasks(&crcStatus, &slot2, tasks2, 2);
|
||||
|
||||
EXPECT_EQ(__get_PRIMASK_mock_callcount, 2);
|
||||
EXPECT_EQ(__set_PRIMASK_mock_callcount, 2);
|
||||
EXPECT_EQ(__disable_irq_mock_callcount, 2);
|
||||
EXPECT_EQ(MOCK_CALLCOUNT(__get_PRIMASK, mock), 2);
|
||||
EXPECT_EQ(MOCK_CALLCOUNT(__set_PRIMASK, mock), 2);
|
||||
EXPECT_EQ(MOCK_CALLCOUNT(__disable_irq, mock), 2);
|
||||
EXPECT_EQ(crcStatus.firstSlot, &slot2);
|
||||
EXPECT_EQ(slot2.next, &slot1);
|
||||
EXPECT_EQ(slot1.next, nullptr);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue