Skip to content

Commit

Permalink
Add test case for socket-address
Browse files Browse the repository at this point in the history
  • Loading branch information
ropez committed Feb 28, 2010
1 parent 0462f31 commit a03a44a
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 6 deletions.
7 changes: 1 addition & 6 deletions src/pieces/socket_address.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -140,19 +140,14 @@ bool operator>=(const SocketAddress& op1, const SocketAddress& op2)
}


bool operator!=(const SocketAddress& op1, const SocketAddress& op2);
bool operator<(const SocketAddress& op1, const SocketAddress& op2);
bool operator>(const SocketAddress& op1, const SocketAddress& op2);
bool operator<=(const SocketAddress& op1, const SocketAddress& op2);
bool operator>=(const SocketAddress& op1, const SocketAddress& op2);

DataStream& operator<<(DataStream& ds, const SocketAddress& sa)
{
ds << sa.getInetAddress();
ds << sa.getPort();
return ds;
}


DataStream& operator>>(DataStream& ds, SocketAddress& sa)
{
InetAddress ia;
Expand Down
2 changes: 2 additions & 0 deletions src/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ set(test_SOURCES
test_data_buffer.cpp
test_data_stream.cpp
test_inet_address.cpp
test_socket_address.cpp
test_message.cpp
)

Expand All @@ -31,6 +32,7 @@ set(tests
TestDataStreamReadBytes
TestDataStreamOnBuffer
TestInetAddress
TestSocketAddress
TestMessageType
TestMessageFlags
TestMessageProperties
Expand Down
107 changes: 107 additions & 0 deletions src/test/test_socket_address.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
#include "support.h"
#include <Pieces/SocketAddress>
#include <Pieces/BufferStream>

using pcs::InetAddress;
using pcs::SocketAddress;

class TestSocketAddress : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(TestSocketAddress);
CPPUNIT_TEST(testDefault);
CPPUNIT_TEST(testCreate);
CPPUNIT_TEST(testIsNull);
CPPUNIT_TEST(testModify);
CPPUNIT_TEST(testCopy);
CPPUNIT_TEST(testCompare);
CPPUNIT_TEST(testDataStream);
CPPUNIT_TEST_SUITE_END();

public:
void testDefault() {
SocketAddress sa;
CPPUNIT_ASSERT(sa.getInetAddress().isNull());
CPPUNIT_ASSERT_EQUAL(pcs::port_t(0), sa.getPort());
}

void testCreate() {
SocketAddress sa(std::string("1.2.3.4"), 80);
CPPUNIT_ASSERT_EQUAL(InetAddress("1.2.3.4"), sa.getInetAddress());
CPPUNIT_ASSERT_EQUAL(pcs::port_t(80), sa.getPort());
}

void testIsNull() {
SocketAddress sa;
CPPUNIT_ASSERT(sa.isNull());
sa.setInetAddress(InetAddress());
CPPUNIT_ASSERT(sa.isNull());
sa.setInetAddress(std::string("1.2.3.4"));
CPPUNIT_ASSERT(!sa.isNull());
sa.setInetAddress(InetAddress());
CPPUNIT_ASSERT(sa.isNull());
sa.setPort(80);
CPPUNIT_ASSERT(!sa.isNull());
}

void testModify() {
SocketAddress sa(std::string("1.2.3.4"), 80);
sa.setInetAddress(std::string("4.3.2.1"));
CPPUNIT_ASSERT_EQUAL(InetAddress("4.3.2.1"), sa.getInetAddress());
CPPUNIT_ASSERT_EQUAL(pcs::port_t(80), sa.getPort());
sa.setPort(8080);
CPPUNIT_ASSERT_EQUAL(InetAddress("4.3.2.1"), sa.getInetAddress());
CPPUNIT_ASSERT_EQUAL(pcs::port_t(8080), sa.getPort());
}

void testCopy() {
SocketAddress sa1(std::string("1.2.3.4"), 80);
SocketAddress sa2 = sa1;
CPPUNIT_ASSERT_EQUAL(InetAddress("1.2.3.4"), sa2.getInetAddress());
CPPUNIT_ASSERT_EQUAL(pcs::port_t(80), sa2.getPort());
sa1.setPort(8080);
sa2 = sa1;
CPPUNIT_ASSERT_EQUAL(InetAddress("1.2.3.4"), sa2.getInetAddress());
CPPUNIT_ASSERT_EQUAL(pcs::port_t(8080), sa2.getPort());
sa2 = sa2;
CPPUNIT_ASSERT_EQUAL(InetAddress("1.2.3.4"), sa2.getInetAddress());
CPPUNIT_ASSERT_EQUAL(pcs::port_t(8080), sa2.getPort());
}

void testCompare() {
SocketAddress sa(std::string("1.2.3.4"), 80);
CPPUNIT_ASSERT(sa != SocketAddress());
CPPUNIT_ASSERT(sa == SocketAddress(std::string("1.2.3.4"), 80));
CPPUNIT_ASSERT(sa != SocketAddress(std::string("4.3.2.1"), 80));
CPPUNIT_ASSERT(sa != SocketAddress(std::string("1.2.3.4"), 8080));
CPPUNIT_ASSERT(sa != SocketAddress(std::string("4.3.2.1"), 8080));
sa.setInetAddress(std::string("4.3.2.1"));
CPPUNIT_ASSERT(sa != SocketAddress());
CPPUNIT_ASSERT(sa != SocketAddress(std::string("1.2.3.4"), 80));
CPPUNIT_ASSERT(sa == SocketAddress(std::string("4.3.2.1"), 80));
CPPUNIT_ASSERT(sa != SocketAddress(std::string("1.2.3.4"), 8080));
CPPUNIT_ASSERT(sa != SocketAddress(std::string("4.3.2.1"), 8080));
sa.setPort(8080);
CPPUNIT_ASSERT(sa != SocketAddress());
CPPUNIT_ASSERT(sa != SocketAddress(std::string("1.2.3.4"), 80));
CPPUNIT_ASSERT(sa != SocketAddress(std::string("4.3.2.1"), 80));
CPPUNIT_ASSERT(sa != SocketAddress(std::string("1.2.3.4"), 8080));
CPPUNIT_ASSERT(sa == SocketAddress(std::string("4.3.2.1"), 8080));
sa.setInetAddress(InetAddress());
sa.setPort(0);
CPPUNIT_ASSERT(sa == SocketAddress());
}

void testDataStream() {
pcs::BufferStream ds;
ds << SocketAddress(std::string("1.2.3.4"), 80);
ds << SocketAddress(std::string("4.3.2.1"), 8080);
SocketAddress sa;
ds >> sa;
CPPUNIT_ASSERT_EQUAL(InetAddress("1.2.3.4"), sa.getInetAddress());
CPPUNIT_ASSERT_EQUAL(pcs::port_t(80), sa.getPort());
ds >> sa;
CPPUNIT_ASSERT_EQUAL(InetAddress("4.3.2.1"), sa.getInetAddress());
CPPUNIT_ASSERT_EQUAL(pcs::port_t(8080), sa.getPort());
}
};
CPPUNIT_TEST_SUITE_REGISTRATION(TestSocketAddress);

0 comments on commit a03a44a

Please sign in to comment.