I should have sent this file : ), the other is too hairy.
#include <cppunit/CompilerOutputter.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/extensions/HelperMacros.h>
#include "../include/base/socket/socket.h"
#include <string.h>
#include <errno.h>
#include <arpa/inet.h>
#include <iostream>
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 );