Тестирование функции C с помощью Google Test - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь использовать Google Test для проверки кода на C, но у меня проблемы.Я не очень понимаю, как проверить код.Я пробовал что-то, но я не знаю, нормально ли это или нет.Может кто-нибудь объяснить мне, если все в порядке, что я сделал и как я могу проверить часть переключателя?

Это тест, который я написал:

    TEST_F(MPS_Tests, Wai_for_discharging_of_several_rails) {


        MPS__tenPowerUpTrigger enTrigger = MPS__enGetPowerUpTrigger();
        EXPECT_EQ(enPowerUpTriggerFstp, enTrigger);
        MPS__vOnEnterStateAcPu1();
        EXPECT_EQ(MPS__enGetInternalState(enAC), enStateAcPu1);
        EXPECT_EQ(MPS__u16GetSmEvent(enAC), enStateAcPu1);

Это проверенный код:

MPS__tenPowerUpTrigger MPS__enGetPowerUpTrigger(void)
{
    /* TODO: rework after startup trigger is considerd by design */
    return enPowerUpTriggerFstp;
}

/* Wait for discharging of several rails */
void MPS__vOnEnterStateAcPu1(void)
{
    MPS__tenPowerUpTrigger enTrigger = MPS__enGetPowerUpTrigger();
    MPS__vSetInternalState(enAC, enStateAcPu1);

    switch (enTrigger)
    {
    case enPowerUpTriggerFstp:
        MPS__vSetWait(enAC, u16Time_AC1ASU_t4);
        break;
    case enPowerUpTriggerWakeUp:
        MPS__vSetWait(enAC, MPS_TIMER_NOWAIT);
        break;
    case enPowerUpTriggerReset:
        MPS__vSetWait(enAC, u16Time_AC1CSU_t2);
        break;
    default:
        /* error handling */
        break;
    }
}

Спасибо!

1 Ответ

0 голосов
/ 10 июля 2019

Простой способ охватить все опции в switch состоит в том, чтобы изменить MPS__enGetPowerUpTrigger на что-то вроде этого:

MPS__tenPowerUpTrigger MPS__enGetPowerUpTrigger(void)
{
    const MPS__tenPowerUpTrigger return_values[3] = { 
      enPowerUpTriggerFstp,
      enPowerUpTriggerWakeUp,
      enPowerUpTriggerReset
    };
    static int idx = 0;

    MPS__tenPowerUpTrigger return_value = return_values[idx];
    idx += 1;
    if (idx >= 3) idx = 0;
    return return_value;
}

... а затем позвонить MPS__vOnEnterStateAcPu1 3 раза?

...