Tuesday 15 March 2011

c++ - Simplify GTest case with repeated sequence of operations -



c++ - Simplify GTest case with repeated sequence of operations -

i need test whether sequence of operations repeatedly invoked mycontroller different values. below code related that, how can simplify repeated block calls same operations different values?

class mycontrollertest : public ::testing::test { protected: mycontrollertest() : m_mycontroller(m_databroker, m_eventbroker) { } testing::mockdatabroker m_databroker; testing::mockeventbroker m_eventbroker; mycontroller m_mycontroller; }; test_f(mycontrollertest, configuresequence) { { insequence dummy; expect_call(m_databroker, prepare()); expect_call(m_databroker, setitem(data::id, sp::item_1)); expect_call(m_databroker, end()); expect_call(m_eventbroker, dispatchevent(events::add, _)); m_mycontroller.event(events::added); expect_call(m_databroker, prepare()); expect_call(m_databroker, setitem(data::id, sp::item_2)); expect_call(m_databroker, end()); expect_call(m_eventbroker, dispatchevent(events::add, _)); m_mycontroller.event(events::added); expect_call(m_databroker, prepare()); expect_call(m_databroker, setitem(data::id, event::sp::item_3)); expect_call(m_databroker, end()); expect_call(m_eventbroker, dispatchevent(events::add, _)); m_mycontroller.event(events::added); expect_call(m_databroker, prepare()); expect_call(m_databroker, setitem(data::id, event::sp::item_4)); expect_call(m_databroker, end()); expect_call(m_eventbroker, dispatchevent(events::add, _)); m_mycontroller.event(events::added); expect_call(m_databroker, prepare()); expect_call(m_databroker, setitem(data::id, event::sp::item_5)); expect_call(m_databroker, end()); expect_call(m_eventbroker, dispatchevent(events::add, _)); m_mycontroller.event(events::added); m_mycontroller.start(); } }

a for loop sufficient

const vector<...> items = {event::sp::item_1, event::sp::item_2, ...}; (const auto& item : items) { expect_call(m_databroker, prepare()); expect_call(m_databroker, setitem(data::id, sp::item_1)); expect_call(m_databroker, end()); expect_call(m_eventbroker, dispatchevent(events::add, _)); m_mycontroller.event(events::added); } m_mycontroller.start();

there's nil special expect_call macros. underlying function calls on mock object m_databroker.

c++ googletest

No comments:

Post a Comment