From cb873b2c6ec180a09e18df60b77a56d7583a9062 Mon Sep 17 00:00:00 2001 From: sbund <sbund@wiback.org> Date: Thu, 31 Aug 2006 15:39:18 +0000 Subject: [PATCH] static cast unit testing --- Socket/ClientSocketHandle.test.cc | 7 +++++-- Socket/ProtocolClientSocketHandle.test.cc | 10 ++++++++++ Socket/ProtocolServerSocketHandle.test.cc | 11 +++++++++++ Socket/ServerSocketHandle.test.cc | 7 +++++-- Socket/SocketPolicy.hh | 16 ++++++++++++++++ 5 files changed, 47 insertions(+), 4 deletions(-) diff --git a/Socket/ClientSocketHandle.test.cc b/Socket/ClientSocketHandle.test.cc index 389f30ec8..69505645e 100644 --- a/Socket/ClientSocketHandle.test.cc +++ b/Socket/ClientSocketHandle.test.cc @@ -64,8 +64,11 @@ BOOST_AUTO_UNIT_TEST(clientSocketHandle) >::policy OtherSocketPolicy; typedef sl::SocketHandle<OtherSocketPolicy> OtherSocketHandle; - OtherSocketHandle ssh (myh); - ssh = myh; + OtherSocketHandle osh (myh); + osh = myh; + typedef sl::ClientSocketHandle<sl::test::SomeProtocol::Policy> SomeSocketHandle; + SomeSocketHandle ssh = + sl::static_socket_cast<SomeSocketHandle>(osh); } // reading and writing diff --git a/Socket/ProtocolClientSocketHandle.test.cc b/Socket/ProtocolClientSocketHandle.test.cc index 7c73b9046..be924cec3 100644 --- a/Socket/ProtocolClientSocketHandle.test.cc +++ b/Socket/ProtocolClientSocketHandle.test.cc @@ -48,8 +48,18 @@ BOOST_AUTO_UNIT_TEST(protocolClientSocketHandle) typedef satcom::lib::ProtocolClientSocketHandle<MyProtocol> MySocketHandle; { + typedef satcom::lib::MakeSocketPolicy< + satcom::lib::test::SomeFramingPolicy, + satcom::lib::test::SomeReadPolicy, + satcom::lib::test::SomeWritePolicy + >::policy OtherSocketPolicy; + typedef satcom::lib::SocketHandle<OtherSocketPolicy> OtherSocketHandle; + MySocketHandle h; h.protocol(); + + OtherSocketHandle osh (h); + h = satcom::lib::static_socket_cast<MySocketHandle>(osh); } { diff --git a/Socket/ProtocolServerSocketHandle.test.cc b/Socket/ProtocolServerSocketHandle.test.cc index 98408955b..eb56abc11 100644 --- a/Socket/ProtocolServerSocketHandle.test.cc +++ b/Socket/ProtocolServerSocketHandle.test.cc @@ -49,7 +49,18 @@ BOOST_AUTO_UNIT_TEST(protocolServerSocketHandle) typedef satcom::lib::ProtocolServerSocketHandle<MyProtocol> MySocketHandle; { + typedef satcom::lib::MakeSocketPolicy< + satcom::lib::test::SomeFramingPolicy, + satcom::lib::test::SomeReadPolicy, + satcom::lib::test::SomeWritePolicy + >::policy OtherSocketPolicy; + typedef satcom::lib::SocketHandle<OtherSocketPolicy> OtherSocketHandle; + MySocketHandle h; + h.protocol(); + + OtherSocketHandle osh (h); + h = satcom::lib::static_socket_cast<MySocketHandle>(osh); MySocketHandle::ClientSocketHandle client = h.accept(); BOOST_CHECK_EQUAL( client.fd(), -1 ); diff --git a/Socket/ServerSocketHandle.test.cc b/Socket/ServerSocketHandle.test.cc index 73909ac9c..579f35c78 100644 --- a/Socket/ServerSocketHandle.test.cc +++ b/Socket/ServerSocketHandle.test.cc @@ -61,8 +61,11 @@ BOOST_AUTO_UNIT_TEST(serverSocketHandle) typedef sl::SocketHandle<OtherSocketPolicy> OtherSocketHandle; MySocketHandle myh; - OtherSocketHandle ssh (myh); - ssh = myh; + OtherSocketHandle osh (myh); + osh = myh; + + typedef sl::ServerSocketHandle<sl::test::SomeProtocol::Policy> SomeSocketHandle; + SomeSocketHandle ssh = sl::static_socket_cast<SomeSocketHandle>(osh); BOOST_CHECK_NO_THROW( myh.bind(0) ); BOOST_CHECK_EQUAL( myh.local(), 2u ); diff --git a/Socket/SocketPolicy.hh b/Socket/SocketPolicy.hh index 74de6f3c0..07c2739fb 100644 --- a/Socket/SocketPolicy.hh +++ b/Socket/SocketPolicy.hh @@ -38,6 +38,22 @@ namespace lib { (ReadPolicy) \ (WritePolicy) \ (BufferingPolicy) + + // The implementation file will for each Policy declared above + // define the following (SomePolicy is one of the above): + // + // struct SomePolicyBase; + // typedef UndefinedSomePolicy; + // template SomePolicyIs< SocketPolicy, Axis > + // template IfSomePolicyIs< SocketPolicy, Axis > + // template IfSomePolicyIsNot< SocketPolicy, Axis > + // + // Additionally the following are defined: + // + // class SocketPolicyBase + // template SocketPolicy< ..policies.. > + // template MakeSocketPolicy< ..args.. > + // template SocketPolicyIsBaseOf< Base, Derived > }} -- GitLab