// $Id$
//
-// Copyright (C) 2006
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
-// Stefan Bund <stefan.bund@fokus.fraunhofer.de>
+// Copyright (C) 2006
+// 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
// Free Software Foundation, Inc.,
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-// Unit tests
+/** \file
+ \brief SocketHandle unit tests */
//#include "SocketHandle.test.hh"
//#include "SocketHandle.test.ih"
#include "SocketProtocol.test.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_
///////////////////////////////cc.p////////////////////////////////////////
namespace {
- namespace sl = satcom::lib;
class MySocketHandle
- : public sl::SocketHandle<sl::test::SomeProtocol::Policy>
+ : public senf::SocketHandle<senf::test::SomeSocketProtocol::Policy>
{
public:
MySocketHandle()
- : sl::SocketHandle<sl::test::SomeProtocol::Policy>(
- std::auto_ptr<sl::SocketProtocol>(new sl::test::SomeProtocol()),false)
+ : senf::SocketHandle<senf::test::SomeSocketProtocol::Policy>(
+ std::auto_ptr<senf::SocketBody>(
+ new senf::ProtocolSocketBody<senf::test::SomeSocketProtocol>(false, 0)))
{}
};
class FDHandle
- : public satcom::lib::FileHandle
+ : public senf::FileHandle
{
public:
- FDHandle()
- : satcom::lib::FileHandle(std::auto_ptr<satcom::lib::FileBody>(
- new satcom::lib::FileBody())) {}
+ FDHandle() : senf::FileHandle(std::auto_ptr<senf::FileBody>(new senf::FileBody())) {}
};
+
}
BOOST_AUTO_UNIT_TEST(socketHandle)
{
- typedef sl::MakeSocketPolicy<
- sl::test::SomeCommunicationPolicy,
- sl::test::SomeReadPolicy
+ typedef senf::MakeSocketPolicy<
+ senf::test::SomeCommunicationPolicy,
+ senf::test::SomeReadPolicy
>::policy OtherSocketPolicy;
- typedef sl::SocketHandle<OtherSocketPolicy> OtherSocketHandle;
-
- MySocketHandle myh;
- OtherSocketHandle osh (myh);
- osh = myh;
-
- typedef sl::SocketHandle<sl::test::SomeProtocol::Policy> SomeSocketHandle;
- SomeSocketHandle ssh = satcom::lib::static_socket_cast<SomeSocketHandle>(osh);
-
- BOOST_CHECK_NO_THROW( satcom::lib::dynamic_socket_cast<SomeSocketHandle>(osh) );
-
- typedef sl::SocketHandle< sl::MakeSocketPolicy<
- OtherSocketPolicy,
- satcom::lib::NoAddressingPolicy
- >::policy> SomeOtherSocketHandle;
-
- BOOST_CHECK_THROW( satcom::lib::dynamic_socket_cast<SomeOtherSocketHandle>(osh),
- std::bad_cast );
- BOOST_CHECK_THROW( satcom::lib::dynamic_socket_cast<SomeSocketHandle>(
- satcom::lib::FileHandle(FDHandle())),
- std::bad_cast );
-
- BOOST_CHECK_EQUAL( myh.dumpState(),
- "handle: satcom::lib::SocketHandle<satcom::lib::SocketPolicy<satcom::lib::test::SomeAddressingPolicy, satcom::lib::test::SomeFramingPolicy, satcom::lib::test::SomeCommunicationPolicy, satcom::lib::test::SomeReadPolicy, satcom::lib::test::SomeWritePolicy, satcom::lib::test::SomeBufferingPolicy> >\n"
- "file.handle: -1\n"
- "file.refcount: 3\n"
- "socket.policy: satcom::lib::SocketPolicy<satcom::lib::test::SomeAddressingPolicy, satcom::lib::test::SomeFramingPolicy, satcom::lib::test::SomeCommunicationPolicy, satcom::lib::test::SomeReadPolicy, satcom::lib::test::SomeWritePolicy, satcom::lib::test::SomeBufferingPolicy>\n"
- "socket.protocol: satcom::lib::test::SomeProtocol\n"
- "socket.server: false\n" );
+ typedef senf::SocketHandle<OtherSocketPolicy> OtherSocketHandle;
+
+ typedef senf::MakeSocketPolicy<
+ senf::test::SomeCommunicationPolicy,
+ senf::test::SomeAddressingPolicy
+ >::policy AnotherSocketPolicy;
+ typedef senf::SocketHandle<AnotherSocketPolicy> AnotherSocketHandle;
+ {
+ MySocketHandle myh;
+ OtherSocketHandle osh (myh);
+ osh = myh;
+
+ typedef senf::SocketHandle<senf::test::SomeSocketProtocol::Policy> SomeSocketHandle;
+ SomeSocketHandle ssh = senf::static_socket_cast<SomeSocketHandle>(osh);
+
+ SENF_CHECK_NO_THROW( senf::dynamic_socket_cast<SomeSocketHandle>(osh) );
+ SENF_CHECK_NO_THROW( senf::dynamic_socket_cast<AnotherSocketHandle>(osh) );
+
+ typedef senf::SocketHandle< senf::MakeSocketPolicy<
+ OtherSocketPolicy,
+ senf::NoAddressingPolicy
+ >::policy> SomeOtherSocketHandle;
+
+ BOOST_CHECK_THROW( senf::dynamic_socket_cast<SomeOtherSocketHandle>(osh),
+ std::bad_cast );
+ BOOST_CHECK_THROW( senf::dynamic_socket_cast<SomeSocketHandle>(
+ senf::FileHandle(FDHandle())),
+ std::bad_cast );
+
+ BOOST_CHECK_EQUAL( myh.dumpState(),
+ "file.handle: 0\n"
+ "file.refcount: 3\n"
+ "handle: senf::SocketHandle<senf::SocketPolicy<senf::test::SomeAddressingPolicy, senf::test::SomeFramingPolicy, senf::test::SomeCommunicationPolicy, senf::test::SomeReadPolicy, senf::test::SomeWritePolicy> >\n"
+ "socket.protocol: senf::test::SomeSocketProtocol\n"
+ "socket.protocol.policy: senf::SocketPolicy<senf::test::SomeAddressingPolicy, senf::test::SomeFramingPolicy, senf::test::SomeCommunicationPolicy, senf::test::SomeReadPolicy, senf::test::SomeWritePolicy>\n"
+ "socket.server: false\n" );
+
+ SENF_CHECK_NO_THROW( myh.facet<senf::test::SomeSocketProtocol>() );
+ }
+
+ // Ensure, the destructor is called and calls the correct close() implementation
+ BOOST_CHECK_EQUAL( senf::test::SomeSocketProtocol::closeCount(), 1u );
}
///////////////////////////////cc.e////////////////////////////////////////
\f
// Local Variables:
// mode: c++
-// c-file-style: "satcom"
+// fill-column: 100
+// c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// comment-column: 40
// End: