3 #include "MiniCppUnit.hxx"
17 #define TEST_CHAR UCHAR_MAX
18 #define TEST_BYTE UCAHR_MAX
19 #define TEST_STRING "Test-String(ÄÖÜäöü?ß&%$§!+#~*')"
20 #define TEST_SHORT SHRT_MAX
21 #define TEST_INT INT_MAX
22 #define TEST_FLOAT FLT_MAX
23 #define TEST_DOUBLE DBL_MAX
26 class socketUnitTests :
public TestFixture<socketUnitTests>
29 TEST_FIXTURE( socketUnitTests )
30 , currentMode_(undefined),
31 server_socket_( PORT ) ,
32 client_socket_(
"localhost" , PORT )
35 TEST_CASE( openConnection );
37 TEST_CASE( receiveStorage );
38 TEST_CASE( sendStorage );
40 TEST_CASE( closeConnection );
46 server_socket_.set_blocking(
false);
47 server_socket_.accept();
48 currentMode_ = server;
51 if (e.
what() ==
"tcpip::Socket::accept() Unable to create listening socket: Address already in use"){
52 currentMode_ = client;
54 FAIL(
"Server socket accept() failed!" );
58 if (currentMode_ == server)
60 server_socket_.set_blocking(
true);
61 std::cout << Assert::yellow() <<
"Listening on port " << PORT <<
". Please start another instance of this program on host.\n" << Assert::normal();
62 server_socket_.accept();
64 if (currentMode_ == client){
66 client_socket_.connect();
69 FAIL(
"Client socket.connect() failed!" );
74 void closeConnection()
77 if (currentMode_ == client) client_socket_.close();
80 FAIL(
"Client socket close() failed!" );
84 if (currentMode_ == server) server_socket_.close();
87 FAIL(
"Server socket close() failed!" );
93 if (currentMode_ == client)
return;
98 server_socket_.receiveExact(received_message);
100 ASSERT_EQUALS( static_cast<int>(TEST_CHAR),
101 static_cast<int>(received_message.
readChar()) );
102 ASSERT_EQUALS( TEST_STRING, received_message.
readString() );
103 ASSERT_EQUALS( TEST_SHORT, received_message.
readShort() );
104 ASSERT_EQUALS( TEST_INT, received_message.
readInt() );
105 ASSERT_EQUALS( TEST_FLOAT, received_message.
readFloat() );
106 ASSERT_EQUALS( TEST_DOUBLE, received_message.
readDouble() );
109 FAIL(
"Server socket receiveExact() failed!" );
115 if (currentMode_ == server)
return;
127 client_socket_.sendExact(send_message);
130 FAIL(
"Client socket sendExact() failed!" );
136 enum mode{undefined = -1, client, server};
143 REGISTER_FIXTURE( socketUnitTests );
virtual double readDouble()
virtual unsigned char readChar()
virtual void writeInt(int)
virtual void writeChar(unsigned char)
virtual void writeShort(int)
virtual std::string readString()
virtual void writeFloat(float)
virtual void writeString(const std::string &s)
virtual const char * what() const
virtual float readFloat()
virtual void writeDouble(double)