
Hi, I'm trying to take a first touch with Boost.Test and Turtle. I have some objects for network communication with async notifications. class ServerHandler : public MessageEventHandler { public: ServerHandler() { // Register the messages I want to manage this->RegisterMsg(E_MSG_METHOD_CONNECT, Poco::delegate(this, &ServerHandler::OnMsgMethodConnect)); } // Messages Handlers virtual void OnMsgMethodConnect(const void* pSender, TArgs& args) { cout << "ServerHandler receive E_MSG_METHOD_CONNECT" << endl; MSG_METHOD_CONNECT& msg = RetrieveMessage<MSG_METHOD_CONNECT>(args.msg); }; }; This class is an observer which handle the notification through the OnMsgMethodConnect method. The test body I wrote is: // declare a 'mockServerHandler' class implementing 'ServerHandler' MOCK_BASE_CLASS( mockServerHandler, ServerHandler ) { MOCK_METHOD( OnMsgMethodConnect, 2 ); }; BOOST_AUTO_TEST_SUITE(NetMessageDispatcherTest) BOOST_AUTO_TEST_CASE(Test1) { mockServerHandler mockSvr; SessionFactory* sf = new SessionFactory( &mockSvr ); IMessageFactory* mf = new PBMessageFactory(); NetMessageDispatcher* server = new NetMessageDispatcher(sf, mf, NULL, E_DISP_SERVER); NetMessageDispatcher* client = new NetMessageDispatcher(sf, mf, NULL, E_DISP_CLIENT); BOOST_CHECK( server->Init("LOCALHOST", "TestServer") == 0 ); BOOST_CHECK( server->Connect(8000, "127.0.0.1") == 0 ); BOOST_CHECK( client->Init("LOCALHOST", "TestClient") == 0 ); BOOST_CHECK( client->Connect(8000, "127.0.0.1") == 0 ); MOCK_EXPECT( mockSvr.OnMsgMethodConnect ).once().with(????) } BOOST_AUTO_TEST_SUITE_END() Now, I have to test if into the ServerHandler::OnMsgMethodConnect() the argument args.msg (which is a message class) has the correct values. EG. if (msg.station_type() == EStationType::ST_CLIENT) => OK Which is the correct way to do it? Regards, Daniele.