X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FClientSocketHandle.test.cc;h=7ffbc6b9e926b54bba2cfd0a4ca7f3ff094bcff4;hb=fd3a0e8ac95d1158e9ea661ddf9187b67c70169f;hp=e82c57da687180c692e2633e649ee999e5a59a62;hpb=c52cd7d87dbb525c1267aad27391b8b7365dbb57;p=senf.git diff --git a/Socket/ClientSocketHandle.test.cc b/Socket/ClientSocketHandle.test.cc index e82c57d..7ffbc6b 100644 --- a/Socket/ClientSocketHandle.test.cc +++ b/Socket/ClientSocketHandle.test.cc @@ -1,9 +1,9 @@ // $Id$ // -// Copyright (C) 2006 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Stefan Bund +// Copyright (C) 2006 +// 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 ClientSocketHandle unit tests */ //#include "ClientSocketHandle.test.hh" //#include "ClientSocketHandle.test.ih" @@ -31,7 +32,7 @@ #include "ClientSocketHandle.hh" #include "AddressingPolicy.hh" -#include +#include "../Utils/auto_unit_test.hh" #include #define prefix_ @@ -39,17 +40,17 @@ namespace { - namespace sl = satcom::lib; - class MySocketHandle - : public sl::ClientSocketHandle + : public senf::ClientSocketHandle { public: MySocketHandle() - : sl::ClientSocketHandle( - std::auto_ptr(new sl::test::SomeProtocol())) + : senf::ClientSocketHandle( + std::auto_ptr( + new senf::ProtocolSocketBody(false))) {} }; + } BOOST_AUTO_UNIT_TEST(clientSocketHandle) @@ -59,74 +60,77 @@ 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 OtherSocketHandle; - + typedef senf::SocketHandle OtherSocketHandle; + BOOST_CHECKPOINT("Copy-constructing socket handle"); OtherSocketHandle osh (myh); BOOST_CHECKPOINT("Assigning socket handle"); osh = myh; - typedef sl::ClientSocketHandle SomeSocketHandle; + typedef senf::ClientSocketHandle SomeSocketHandle; BOOST_CHECKPOINT("static_casting socket handle"); - SomeSocketHandle ssh = - sl::static_socket_cast(osh); - BOOST_CHECK_NO_THROW( sl::dynamic_socket_cast(osh) ); - typedef sl::ClientSocketHandle(osh); + SENF_CHECK_NO_THROW( senf::dynamic_socket_cast(osh) ); + typedef senf::ClientSocketHandle::policy> SomeOtherSocketHandle; - BOOST_CHECK_THROW( sl::dynamic_socket_cast(osh), + BOOST_CHECK_THROW( senf::dynamic_socket_cast(osh), std::bad_cast ); } // reading and writing - BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.read(), "TEST-READ" ) ); + SENF_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.read(), "TEST-READ" ) ); { std::string buf("FOO-BAR"); - BOOST_CHECK_NO_THROW( myh.read(buf) ); + SENF_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 ) ); + SENF_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.read(buf,buf+10), buf+9 ) ); BOOST_CHECK_EQUAL( buf, "TEST-READ9" ); } - BOOST_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.readfrom().first, "TEST-READ" ) ); + SENF_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.readfrom().first, "TEST-READ" ) ); { std::string buf("FOO-BAR"); unsigned addr; - BOOST_CHECK_NO_THROW( myh.readfrom(buf,addr) ); + SENF_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 ) ); + SENF_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"),satcom::lib::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 ) ); - - 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) ); + { + std::string s ("TEST-WRITE"); + SENF_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"; + SENF_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.write(s1,s1+10), s1+10u ) ); + s = "TEST-WRITE"; + SENF_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.writeto(0,s)-s.begin(), 10 ) ); + SENF_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.writeto(0,s1,s1+10), s1+10 ) ); + } + + SENF_CHECK_NO_THROW( myh.connect(0) ); + SENF_CHECK_NO_THROW( myh.bind(0) ); + SENF_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.peer(), 1u ) ); + SENF_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.local(), 2u ) ); } ///////////////////////////////cc.e//////////////////////////////////////// @@ -135,5 +139,10 @@ BOOST_AUTO_UNIT_TEST(clientSocketHandle) // 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: