Create a gist now

Instantly share code, notes, and snippets.

anonymous /unittest_and_cpp
Created Oct 2, 2013

What would you like to do?
class ComplexClass : public YetAnotherComplexClass
{
public:
// function we want to sense through
void func();
};
bool complexCode( float val ) { return val > 0.5f; }
void functionToTest( SomeObject* obj, float val )
{
if (complexCode( val ))
obj->func();
}
// классический путь решения это добавить virtual к сигнатуре функции базового класса
// далее мы делаем тестовый класс который переопределяет эту функцию чтобы слушать через нее
class ComplexClass : public YetAnotherComplexClass
{
public:
virtual void func();
};
class TestComplexClass : public ComplexClass
{
public:
TestComplexClass(): funcCalled_( false )
// override as many functions as necessary to be able to create a sensing object
virtual void func() { funcCalled_ = true; }
bool funcCalled_;
};
TEST( functionToTest )
{
TestComplexClass testObj;
functionToTest( &testObj, 0.2f );
CHECK( testObj.funcCalled_ == false );
functionToTest( &testObj, 0.5001f );
CHECK( testObj.funcCalled_ == true );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment