// $Id$
//
// Copyright (C) 2006
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
-// Stefan Bund <stefan.bund@fokus.fraunhofer.de>
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
+// Stefan Bund <g0dil@berlios.de>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
#include "ClientSocketHandle.hh"
#include "AddressingPolicy.hh"
-#include <boost/test/auto_unit_test.hpp>
+#include "../Utils/auto_unit_test.hh"
#include <boost/test/test_tools.hpp>
#define prefix_
namespace {
- namespace sl = senf;
-
class MySocketHandle
- : public sl::ClientSocketHandle<sl::test::SomeProtocol::Policy>
+ : public senf::ClientSocketHandle<senf::test::SomeSocketProtocol::Policy>
{
public:
MySocketHandle()
- : sl::ClientSocketHandle<sl::test::SomeProtocol::Policy>(
- std::auto_ptr<sl::SocketProtocol>(new sl::test::SomeProtocol()))
+ : senf::ClientSocketHandle<senf::test::SomeSocketProtocol::Policy>(
+ std::auto_ptr<senf::SocketBody>(
+ new senf::ProtocolSocketBody<senf::test::SomeSocketProtocol>(false)))
{}
};
+
}
BOOST_AUTO_UNIT_TEST(clientSocketHandle)
// conversion to other socket handles
{
- typedef sl::MakeSocketPolicy<
- sl::test::SomeFramingPolicy,
- sl::test::SomeReadPolicy,
- sl::test::SomeWritePolicy
+ typedef senf::MakeSocketPolicy<
+ senf::test::SomeFramingPolicy,
+ senf::test::SomeReadPolicy,
+ senf::test::SomeWritePolicy
>::policy OtherSocketPolicy;
- typedef sl::SocketHandle<OtherSocketPolicy> OtherSocketHandle;
+ typedef senf::SocketHandle<OtherSocketPolicy> OtherSocketHandle;
BOOST_CHECKPOINT("Copy-constructing socket handle");
OtherSocketHandle osh (myh);
BOOST_CHECKPOINT("Assigning socket handle");
osh = myh;
- typedef sl::ClientSocketHandle<sl::test::SomeProtocol::Policy> SomeSocketHandle;
+ typedef senf::ClientSocketHandle<senf::test::SomeSocketProtocol::Policy> SomeSocketHandle;
BOOST_CHECKPOINT("static_casting socket handle");
SomeSocketHandle ssh =
- sl::static_socket_cast<SomeSocketHandle>(osh);
- BOOST_CHECK_NO_THROW( sl::dynamic_socket_cast<SomeSocketHandle>(osh) );
- typedef sl::ClientSocketHandle<sl::MakeSocketPolicy<
+ senf::static_socket_cast<SomeSocketHandle>(osh);
+ BOOST_CHECK_NO_THROW( senf::dynamic_socket_cast<SomeSocketHandle>(osh) );
+ typedef senf::ClientSocketHandle<senf::MakeSocketPolicy<
OtherSocketPolicy,
- sl::NoAddressingPolicy
+ senf::NoAddressingPolicy
>::policy> SomeOtherSocketHandle;
- BOOST_CHECK_THROW( sl::dynamic_socket_cast<SomeOtherSocketHandle>(osh),
+ BOOST_CHECK_THROW( senf::dynamic_socket_cast<SomeOtherSocketHandle>(osh),
std::bad_cast );
}
BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.read(), "TEST-READ" ) );
{
std::string buf("FOO-BAR");
- BOOST_CHECK_NO_THROW( myh.read(buf) );
+ BOOST_CHECK_NO_THROW( myh.read(buf,0) );
BOOST_CHECK_EQUAL( buf, "TEST-READ" );
}
{
char buf[11];
::strcpy(buf,"0123456789");
- BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.read(buf,10), 9u ) );
+ BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.read(buf,buf+10), buf+9 ) );
BOOST_CHECK_EQUAL( buf, "TEST-READ9" );
}
{
std::string buf("FOO-BAR");
unsigned addr;
- BOOST_CHECK_NO_THROW( myh.readfrom(buf,addr) );
+ BOOST_CHECK_NO_THROW( myh.readfrom(buf,addr,0) );
BOOST_CHECK_EQUAL( buf, "TEST-READ" );
}
{
char buf[11];
unsigned addr;
::strcpy(buf,"0123456789");
- BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.readfrom(buf,10,addr), 9u ) );
+ BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.readfrom(buf,buf+10,addr), buf+9 ) );
BOOST_CHECK_EQUAL( buf, "TEST-READ9" );
}
- BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.write("TEST-WRITE"), 10u ) );
- BOOST_CHECK_THROW( myh.write("TEST"),senf::SystemException );
- BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.write("TEST-WRITE9",10), 10u ) );
- BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.writeto(0,"TEST-WRITE"), 10u ) );
- BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.writeto(0,"TEST-WRITE9",10), 10u ) );
+ {
+ std::string s ("TEST-WRITE");
+ BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.write(s)-s.begin(), 10 ) );
+ s = "TEST";
+ // This simulates a closed file in this test policy. However, we
+ // have changed the semantics so this will not work anymore.
+ // BOOST_CHECK_THROW( myh.write(s),senf::SystemException );
+ char const * const s1 = "TEST-WRITE9";
+ BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.write(s1,s1+10), s1+10u ) );
+ s = "TEST-WRITE";
+ BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.writeto(0,s)-s.begin(), 10 ) );
+ BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.writeto(0,s1,s1+10), s1+10 ) );
+ }
BOOST_CHECK_NO_THROW( myh.connect(0) );
BOOST_CHECK_NO_THROW( myh.bind(0) );
BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.peer(), 1u ) );
BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.local(), 2u ) );
-
- BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.rcvbuf(), 0u ) );
- BOOST_CHECK_NO_THROW( myh.rcvbuf(1) );
- BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.sndbuf(), 0u ) );
- BOOST_CHECK_NO_THROW( myh.sndbuf(1) );
}
///////////////////////////////cc.e////////////////////////////////////////
// c-file-style: "senf"
// indent-tabs-mode: nil
// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// comment-column: 40
// End: