wxSocketBase *socket = srv.Accept();
if ( socket )
+ {
(*m_accept)(*socket);
+ delete socket;
+ }
return NULL;
}
virtual void setUp();
virtual void tearDown();
- CPPUNIT_TEST_SUITE(socketStream);
- // Base class stream tests the socketStream supports.
- CPPUNIT_TEST(Input_GetC);
-
- // This one fails because wxSocketInputStream::Eof() is not implemented
- // correctly
- //CPPUNIT_TEST(Input_Read);
+ // repeat all socket tests several times with different socket flags, so we
+ // define this macro which is used several times in the test suite
+ //
+ // there must be some more elegant way to do this but I didn't find it...
+#define ALL_SOCKET_TESTS() \
+ CPPUNIT_TEST(Input_GetC); \
+ CPPUNIT_TEST(Input_Eof); \
+ CPPUNIT_TEST(Input_Read); \
+ CPPUNIT_TEST(Input_LastRead); \
+ CPPUNIT_TEST(Input_CanRead); \
+ CPPUNIT_TEST(Input_Peek); \
+ CPPUNIT_TEST(Input_Ungetch); \
+ \
+ CPPUNIT_TEST(Output_PutC); \
+ CPPUNIT_TEST(Output_Write); \
+ CPPUNIT_TEST(Output_LastWrite)
- // The other ones untested yet
+ CPPUNIT_TEST_SUITE(socketStream);
+ ALL_SOCKET_TESTS();
+ // some tests don't pass with NOWAIT flag but this is probably not a
+ // bug (TODO: check this)
#if 0
- CPPUNIT_TEST(Input_Eof);
- CPPUNIT_TEST(Input_LastRead);
- CPPUNIT_TEST(Input_CanRead);
- CPPUNIT_TEST(Input_Peek);
- CPPUNIT_TEST(Input_Ungetch);
-
- CPPUNIT_TEST(Output_PutC);
- CPPUNIT_TEST(Output_Write);
- CPPUNIT_TEST(Output_LastWrite);
+ CPPUNIT_TEST( PseudoTest_SetNoWait );
+ ALL_SOCKET_TESTS();
#endif
+ CPPUNIT_TEST( PseudoTest_SetWaitAll );
+ ALL_SOCKET_TESTS();
CPPUNIT_TEST_SUITE_END();
private:
;
}
+ void PseudoTest_SetNoWait() { ms_flags = wxSOCKET_NOWAIT; }
+ void PseudoTest_SetWaitAll() { ms_flags = wxSOCKET_WAITALL; }
+
wxSocketClient *m_readSocket,
*m_writeSocket;
wxThread *m_writeThread,
*m_readThread;
+
+ static wxSocketFlags ms_flags;
};
+wxSocketFlags socketStream::ms_flags = wxSOCKET_NONE;
+
socketStream::socketStream()
{
m_readSocket =
CPPUNIT_ASSERT_EQUAL( wxCOND_NO_ERROR, gs_cond.Wait() );
}
- m_readSocket = new wxSocketClient;
- m_readSocket->SetTimeout(3);
+ m_readSocket = new wxSocketClient(ms_flags);
CPPUNIT_ASSERT( m_readSocket->Connect(LocalAddress(TEST_PORT_READ)) );
- m_writeSocket = new wxSocketClient;
- m_writeSocket->SetTimeout(3);
+ m_writeSocket = new wxSocketClient(ms_flags);
CPPUNIT_ASSERT( m_writeSocket->Connect(LocalAddress(TEST_PORT_WRITE)) );
}