X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FSocketHandle.test.cc;h=0b354aec70139e083fdad0a356aad74a7ec5faaa;hb=bd9f9d3fd6fbcff0112a7bf48ab9284da9576b11;hp=c1ac392dba2ffec9fc6dc836ae90bde89c491401;hpb=31d85cd6b8e03c5ecc924ca8892906be1bab702f;p=senf.git diff --git a/Socket/SocketHandle.test.cc b/Socket/SocketHandle.test.cc index c1ac392..0b354ae 100644 --- a/Socket/SocketHandle.test.cc +++ b/Socket/SocketHandle.test.cc @@ -1,9 +1,9 @@ // $Id$ // // Copyright (C) 2006 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Stefan Bund +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Stefan Bund // // 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 @@ -20,7 +20,8 @@ // 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" @@ -30,22 +31,22 @@ #include "SocketProtocol.test.hh" #include "AddressingPolicy.hh" -#include +#include "../Utils/auto_unit_test.hh" #include #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// namespace { - namespace sl = senf; class MySocketHandle - : public sl::SocketHandle + : public senf::SocketHandle { public: MySocketHandle() - : sl::SocketHandle( - std::auto_ptr(new sl::test::SomeProtocol()),false) + : senf::SocketHandle( + std::auto_ptr( + new senf::ProtocolSocketBody(false, 0))) {} }; @@ -53,47 +54,60 @@ namespace { : public senf::FileHandle { public: - FDHandle() - : senf::FileHandle(std::auto_ptr( - new senf::FileBody())) {} + FDHandle() : senf::FileHandle(std::auto_ptr(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 OtherSocketHandle; - - MySocketHandle myh; - OtherSocketHandle osh (myh); - osh = myh; - - typedef sl::SocketHandle SomeSocketHandle; - SomeSocketHandle ssh = senf::static_socket_cast(osh); - - BOOST_CHECK_NO_THROW( senf::dynamic_socket_cast(osh) ); - - typedef sl::SocketHandle< sl::MakeSocketPolicy< - OtherSocketPolicy, - senf::NoAddressingPolicy - >::policy> SomeOtherSocketHandle; - - BOOST_CHECK_THROW( senf::dynamic_socket_cast(osh), - std::bad_cast ); - BOOST_CHECK_THROW( senf::dynamic_socket_cast( - senf::FileHandle(FDHandle())), - std::bad_cast ); - - BOOST_CHECK_EQUAL( myh.dumpState(), - "file.handle: -1\n" - "file.refcount: 3\n" - "handle: senf::SocketHandle >\n" - "socket.policy: senf::SocketPolicy\n" - "socket.protocol: senf::test::SomeProtocol\n" - "socket.server: false\n" ); + typedef senf::SocketHandle OtherSocketHandle; + + typedef senf::MakeSocketPolicy< + senf::test::SomeCommunicationPolicy, + senf::test::SomeAddressingPolicy + >::policy AnotherSocketPolicy; + typedef senf::SocketHandle AnotherSocketHandle; + + { + MySocketHandle myh; + OtherSocketHandle osh (myh); + osh = myh; + + typedef senf::SocketHandle SomeSocketHandle; + SomeSocketHandle ssh = senf::static_socket_cast(osh); + + SENF_CHECK_NO_THROW( senf::dynamic_socket_cast(osh) ); + SENF_CHECK_NO_THROW( senf::dynamic_socket_cast(osh) ); + + typedef senf::SocketHandle< senf::MakeSocketPolicy< + OtherSocketPolicy, + senf::NoAddressingPolicy + >::policy> SomeOtherSocketHandle; + + BOOST_CHECK_THROW( senf::dynamic_socket_cast(osh), + std::bad_cast ); + BOOST_CHECK_THROW( senf::dynamic_socket_cast( + senf::FileHandle(FDHandle())), + std::bad_cast ); + + BOOST_CHECK_EQUAL( myh.dumpState(), + "file.handle: 0\n" + "file.refcount: 3\n" + "handle: senf::SocketHandle >\n" + "socket.protocol: senf::test::SomeSocketProtocol\n" + "socket.protocol.policy: senf::SocketPolicy\n" + "socket.server: false\n" ); + + SENF_CHECK_NO_THROW( myh.facet() ); + } + + // Ensure, the destructor is called and calls the correct close() implementation + BOOST_CHECK_EQUAL( senf::test::SomeSocketProtocol::closeCount(), 1u ); } ///////////////////////////////cc.e//////////////////////////////////////// @@ -107,4 +121,5 @@ BOOST_AUTO_UNIT_TEST(socketHandle) // indent-tabs-mode: nil // ispell-local-dictionary: "american" // compile-command: "scons -u test" +// comment-column: 40 // End: