Как проверить непрерывные / связанные изменения, используя каркас googletest/googlemock?

Я пытаюсь проверить класс Foo на предмет возврата статуса его метода с помощью googletest/googlemock. Насколько я понимаю, для каждого вызова метода counter() значение m_counter должно увеличиваться на единицу, однако я всегда получаю один или один и тот же результат, т.е. m_counter никогда не достигает предела. Означает ли это, что все данные очищаются для каждого вызова? Может кто-нибудь сказать, помогите мне, как проверить смежные / связанные изменения с помощью Google Test? Это выглядит каждый звонок counter() это собственная история (не связанная), даже если объект такой же?

class Foo
{
public:
    Foo()            { m_counter = 0;}
    void counter()   { m_counter++;  }
    int getCounter() { return  m_counter;}
    int status()     { return (m_counter>=5)?0:1;}
private:
    int m_counter; 
};

TEST_F(TestFoo, TestStatus_1)
{
    Foo fooP;
    fooP.counter();
    ASSERT_TRUE(fooP.status() == 0);
    std::cout<<fooP.getCounter()<<std::endl;  //should be 1
    fooP.counter();
    ASSERT_TRUE(fooP.status() == 0);
    std::cout<<fooP.getCounter()<<std::endl;  //should be 2
    fooP.counter();
    ASSERT_TRUE(fooP.status() == 0);
    std::cout<<fooP.getCounter()<<std::endl;  //should be 3
    fooP.counter();
    ASSERT_TRUE(fooP.status() == 0);
    std::cout<<fooP.getCounter()<<std::endl;  //should be 4
    fooP.counter();
    ASSERT_TRUE(fooP.status() == 0);
    std::cout<<fooP.getCounter()<<std::endl;  //should be 5
    fooP.counter();
    ASSERT_TRUE(fooP.status() == 1);
    std::cout<<fooP.getCounter()<<std::endl;  //should be 6

}

1 ответ

Ошибка в коде:

int status()     { return (m_counter>=5)?0:1;}

должно быть:

int status()     { return (m_counter<=5)?0:1;}
Другие вопросы по тегам