#include #include #include #include #include "../include/base/socket/socket.h" #include #include #include #include using namespace std; class TestSocket : public CppUnit::TestFixture { Socket *obj; CPPUNIT_TEST_SUITE( TestSocket ); CPPUNIT_TEST( testAccept ); // blocks! it shouldn't, thought... CPPUNIT_TEST_SUITE_END( ); public: void setUp ( ) { obj = new Socket; } void tearDown ( ) { delete obj; } void testAccept ( ) { cout << "\nIn TestSocket::testAccept()\n"; int optvalReuseAddr = 1; char host[] = "localhost"; int port = 6543; MYSERVER_SOCKADDRIN sockA; int sockALen = sizeof ( sockaddr_in ); MYSERVER_SOCKADDRIN sockIn = { 0 }; ((sockaddr_in*) (&sockIn))->sin_family = AF_INET; ((sockaddr_in*) (&sockIn))->sin_addr.s_addr = inet_addr ( "127.0.0.1" ); ((sockaddr_in*) (&sockIn))->sin_port = htons ( port ); int sockInLen = sizeof ( sockaddr_in ); CPPUNIT_ASSERT( obj->socket ( AF_INET, SOCK_STREAM, ( getprotobyname ( "tcp" ) )->p_proto ) != -1 ); CPPUNIT_ASSERT( obj->setsockopt ( SOL_SOCKET, SO_REUSEADDR, (const char*) &optvalReuseAddr, sizeof(optvalReuseAddr) ) != -1 ); CPPUNIT_ASSERT( obj->bind ( &sockIn, sockInLen ) != -1 ); CPPUNIT_ASSERT( obj->listen ( 1 ) != -1 ); CPPUNIT_ASSERT( obj->setNonBlocking ( 1 ) == 0 ); CPPUNIT_ASSERT( int(obj->accept ( &sockA, &sockALen ).getHandle()) != -1 ); CPPUNIT_ASSERT( obj->close ( ) != -1 ); } }; CPPUNIT_TEST_SUITE_REGISTRATION( TestSocket );