// $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 SocketPolicy unit tests */
-//#include "SocketPolicy.test.hh"
+#include "SocketPolicy.test.hh"
//#include "SocketPolicy.test.ih"
// Custom includes
-#include "SocketPolicy.hh"
-#include "SocketPolicy.test.hh"
-
-#include <boost/test/auto_unit_test.hpp>
-#include <boost/test/test_tools.hpp>
#include <boost/mpl/assert.hpp>
#include <boost/concept_check.hpp>
#include <boost/utility.hpp> // enable_if
+#include "SocketPolicy.hh"
+
+#include "../Utils/auto_unit_test.hh"
+#include <boost/test/test_tools.hpp>
+
#define prefix_
///////////////////////////////cc.p////////////////////////////////////////
struct WritablePolicy : public WritePolicyBase {};
struct UnwritablePolicy : public WritePolicyBase {};
-
- struct SocketBufferingPolicy : public BufferingPolicyBase {};
- template <class Policy>
+ template <class SPolicy>
struct ConvertibleValue
{
ConvertibleValue() {}
ConvertibleValue(ConvertibleValue const & other) {}
template <class OtherPolicy>
- ConvertibleValue(ConvertibleValue<OtherPolicy> const & other,
- typename boost::enable_if< SocketPolicyIsBaseOf<Policy,OtherPolicy> >::type * = 0)
+ ConvertibleValue(ConvertibleValue<OtherPolicy> const & other,
+ typename boost::enable_if< SocketPolicyIsBaseOf<SPolicy,OtherPolicy> >::type * = 0)
{}
ConvertibleValue const & operator=(ConvertibleValue const & other)
{ return *this; }
template <class OtherPolicy>
- typename boost::enable_if< SocketPolicyIsBaseOf<Policy,OtherPolicy>,
- ConvertibleValue >::type const &
+ typename boost::enable_if< SocketPolicyIsBaseOf<SPolicy,OtherPolicy>,
+ ConvertibleValue >::type const &
operator=(ConvertibleValue<OtherPolicy> const & other)
{ return *this; }
};
BOOST_AUTO_UNIT_TEST(socketPolicy)
{
- // All these checks are really compile-time checks ...
+ // Most of these checks are really compile-time checks ...
typedef MakeSocketPolicy<
UnixAddressingPolicy,
UnspecifiedFramingPolicy,
ConnectedCommunicationPolicy,
ReadablePolicy,
- UnspecifiedWritePolicy,
- UnspecifiedBufferingPolicy> Policy2;
-
+ UnspecifiedWritePolicy> Policy2;
+
BOOST_MPL_ASSERT(( boost::is_same<Policy1,Policy2> ));
typedef MakeSocketPolicy<
UnspecifiedFramingPolicy,
UnspecifiedCommunicationPolicy,
ReadablePolicy,
- UnspecifiedWritePolicy,
- UnspecifiedBufferingPolicy> Policy4;
+ UnspecifiedWritePolicy> Policy4;
BOOST_MPL_ASSERT(( boost::is_same<Policy3,Policy4> ));
BOOST_MPL_ASSERT_NOT(( boost::is_same<Policy1, Policy3> ));
// The following should fail at compile time
// BOOST_MPL_ASSERT(( SocketPolicyIsBaseOf<Policy1,Policy3> ));
-
- ConvertibleValue<Policy1> p1;
- ConvertibleValue<Policy3> p3(p1);
- p3 = p1;
- // The following should fail at compile time
- // p1 = p3;
+ {
+ ConvertibleValue<Policy1> p1;
+ ConvertibleValue<Policy3> p3(p1);
+
+ p3 = p1;
+ // The following should fail at compile time
+ // p1 = p3;
+ }
+
+ {
+ Policy1 p1;
+ Policy3 p3;
+
+ BOOST_CHECK_THROW( Policy1::checkBaseOf(p3), std::bad_cast );
+ SENF_CHECK_NO_THROW( Policy3::checkBaseOf(p1) );
+ }
}
///////////////////////////////cc.e////////////////////////////////////////
\f
// Local Variables:
// mode: c++
+// fill-column: 100
// c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// comment-column: 40
// End: