Я начинаю использовать CppUTest для некоторых встроенных проектов C. Теперь я имею дело с издеваемыми вызовами в систему. После того, как научились передавать типы typicall C, в Ex:CppUtest: как вернуть пользовательскую структуру из mocked function
Пример, который работает должным образом:
Mock файл часть кода:
uint32_t LL_TIM_GetPrescaler(TIM_TypeDef * TIMx){
mock().actualCall("LL_TIM_GetPrescaler");
return mock().unsignedIntReturnValue();
}
Тестовый файл часть код, связанный с этим издевательством:
TEST (HAL_AS393,HAL_AS393x_Init_test)
{
...
mock().expectOneCall("LL_TIM_GetPrescaler").andReturnValue(TEST_PRESCALER_VALUE);
//being TEST_PRESCALER_VALUE an int initialized variable before
...
}
У меня нет проблем при понимании этого.
Но теперь я пытаюсь передать структуру из теста на макет вызова с нужным списком полей, которые я хочу, чтобы макет посылал функции вызова (тестового производственного кода). Случай проверяет функцию с помощью некоторых системных вызовов. И эта вещь, как:
Куска коды тестируемый:
//struct type definition
typedef struct
{
bool_t WAKE_FLAG;
bool_t DATA_READ_FLAG;
}HAL_AS393X_Status;
//function under test
RFIDDrvStatus RFID_DRV_GetStatus(void)
{
HAL_AS393X_Status HAL_Status;
...
HAL_Status=HAL_AS393x_GetStatus();
...
}
Теперь идея - в тестовом файле, используя макет -:
TEST(RFID_Drv,RFID_DRV_GetStatus_test)
{
HAL_AS393X_Status FAKE_HAL_STATUS;
FAKE_HAL_STATUS.WAKE_FLAG=TRUE;
FAKE_HAL_STATUS.DATA_READ_FLAG=TRUE;
...
mock().expectOneCall("HAL_AS393x_GetStatus").andReturnValue(FAKE_HAL_STATUS);
...
}
Мой вопрос в том, как я могу построить mock.actualCall этого mock.expectOneCall ("HAL_AS393x_GetStatus") в ord er сказать, что он должен возвращать структуру определенного типа (HAL_AS393X_Status)? Я serching информацию для делать что-то вроде этого, если это возможно, или, если он существует:
mock().actualCall("HAL_AS393x_GetData");
return mock().XXXReturnValue();`
Что издеваться синтаксис должен быть только на XXX месте?
Просто уточнить: Ваш вопрос «как вернуть обычай структура в издеваемую функцию? " Если да, пожалуйста, отредактируйте заголовок, это не ясно. В названии говорится, что вы хотите передать аргумент макету, тело говорит, что вы хотите вернуть пользовательский тип из макета. Это хороший вопрос, это будет потрясающе, если вы можете сделать это немного яснее. –
Думаю, что да. Я построил структуру, поля которой заполняются значениями (на стороне тестирования), а затем мне нужно сказать, что макет вызова вернет структуру с этими значениями. Идея, которую я имею, или то, что я хотел бы найти, - это если есть какой-то способ сделать то же самое, что я поставил выше, в пример, в первую очередь, но нарисуйте structs вместо integer, char или bool, type и т. Д. –
Ok тогда. Попробуйте мой ответ, дайте мне знать результаты. –