mirror of
https://github.com/mat007/turtle.git
synced 2026-06-22 12:13:43 +00:00
Refactoring
git-svn-id: https://svn.code.sf.net/p/turtle/code/trunk@171 860be788-9bd5-4423-9f1e-828f051e677b
This commit is contained in:
parent
f3173c7770
commit
0377bccad2
2 changed files with 26 additions and 34 deletions
|
|
@ -11,6 +11,9 @@
|
||||||
|
|
||||||
#include "config.hpp"
|
#include "config.hpp"
|
||||||
#include <boost/spirit/home/phoenix/bind/bind_function.hpp>
|
#include <boost/spirit/home/phoenix/bind/bind_function.hpp>
|
||||||
|
#include <boost/spirit/home/phoenix/statement/throw.hpp>
|
||||||
|
#include <boost/spirit/home/phoenix/operator/self.hpp>
|
||||||
|
#include <boost/spirit/home/phoenix/core/nothing.hpp>
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
#include <boost/ref.hpp>
|
#include <boost/ref.hpp>
|
||||||
|
|
@ -40,7 +43,7 @@ namespace detail
|
||||||
template< typename Y >
|
template< typename Y >
|
||||||
void returns( const boost::reference_wrapper< Y >& r )
|
void returns( const boost::reference_wrapper< Y >& r )
|
||||||
{
|
{
|
||||||
f_ = boost::phoenix::val( r );
|
f_ = *boost::phoenix::val( r.get_pointer() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void calls( const functor_type& f )
|
void calls( const functor_type& f )
|
||||||
|
|
@ -53,7 +56,7 @@ namespace detail
|
||||||
template< typename Exception >
|
template< typename Exception >
|
||||||
void throws( Exception e )
|
void throws( Exception e )
|
||||||
{
|
{
|
||||||
f_ = boost::phoenix::bind( &throw_exception< Exception >, e );
|
f_ = boost::phoenix::throw_( e );
|
||||||
}
|
}
|
||||||
|
|
||||||
const functor_type& functor() const
|
const functor_type& functor() const
|
||||||
|
|
@ -62,13 +65,6 @@ namespace detail
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
template< typename Exception >
|
|
||||||
static Result throw_exception( const Exception& e )
|
|
||||||
{
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
|
|
||||||
boost::shared_ptr< result_type > r_;
|
boost::shared_ptr< result_type > r_;
|
||||||
functor_type f_;
|
functor_type f_;
|
||||||
};
|
};
|
||||||
|
|
@ -100,7 +96,7 @@ namespace detail
|
||||||
template< typename Exception >
|
template< typename Exception >
|
||||||
void throws( Exception e )
|
void throws( Exception e )
|
||||||
{
|
{
|
||||||
f_ = boost::phoenix::bind( &throw_exception< Exception >, e );
|
f_ = boost::phoenix::throw_( e );
|
||||||
}
|
}
|
||||||
|
|
||||||
const functor_type& functor() const
|
const functor_type& functor() const
|
||||||
|
|
@ -109,12 +105,6 @@ namespace detail
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
template< typename Exception >
|
|
||||||
static Result* throw_exception( const Exception& e )
|
|
||||||
{
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
|
|
||||||
functor_type f_;
|
functor_type f_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -126,7 +116,7 @@ namespace detail
|
||||||
|
|
||||||
public:
|
public:
|
||||||
action()
|
action()
|
||||||
: f_( boost::phoenix::bind( ¬hing ) )
|
: f_( boost::phoenix::nothing )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void calls( const functor_type& f )
|
void calls( const functor_type& f )
|
||||||
|
|
@ -139,7 +129,7 @@ namespace detail
|
||||||
template< typename Exception >
|
template< typename Exception >
|
||||||
void throws( Exception e )
|
void throws( Exception e )
|
||||||
{
|
{
|
||||||
f_ = boost::phoenix::bind( &throw_exception< Exception >, e );
|
f_ = boost::phoenix::throw_( e );
|
||||||
}
|
}
|
||||||
|
|
||||||
const functor_type& functor() const
|
const functor_type& functor() const
|
||||||
|
|
@ -148,15 +138,6 @@ namespace detail
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void nothing()
|
|
||||||
{}
|
|
||||||
|
|
||||||
template< typename Exception >
|
|
||||||
static void throw_exception( const Exception& e )
|
|
||||||
{
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
|
|
||||||
functor_type f_;
|
functor_type f_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -192,7 +173,7 @@ namespace detail
|
||||||
template< typename Exception >
|
template< typename Exception >
|
||||||
void throws( Exception e )
|
void throws( Exception e )
|
||||||
{
|
{
|
||||||
f_ = boost::phoenix::bind( &throw_exception< Exception >, e );
|
f_ = boost::phoenix::throw_( e );
|
||||||
r_.reset();
|
r_.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -221,12 +202,6 @@ namespace detail
|
||||||
f_ = boost::phoenix::val( boost::ref( r_ ) );
|
f_ = boost::phoenix::val( boost::ref( r_ ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Exception >
|
|
||||||
static std::auto_ptr< Result > throw_exception( const Exception& e )
|
|
||||||
{
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
|
|
||||||
mutable std::auto_ptr< Result > r_;
|
mutable std::auto_ptr< Result > r_;
|
||||||
functor_type f_;
|
functor_type f_;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
#include <turtle/mock.hpp>
|
#include <turtle/mock.hpp>
|
||||||
|
|
||||||
#include <boost/noncopyable.hpp>
|
#include <boost/noncopyable.hpp>
|
||||||
|
#include <boost/optional.hpp>
|
||||||
#include <boost/ref.hpp>
|
#include <boost/ref.hpp>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
|
|
@ -293,3 +294,19 @@ BOOST_AUTO_TEST_CASE( failed_sequence_in_mocked_destructor_does_not_throw )
|
||||||
m.my_method();
|
m.my_method();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
MOCK_CLASS( boost_optional )
|
||||||
|
{
|
||||||
|
MOCK_METHOD_EXT( method, 0, boost::optional< my_observer& >(), method )
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE( boost_optional_on_base_class_reference_as_return_type )
|
||||||
|
{
|
||||||
|
boost_optional b;
|
||||||
|
my_mock_observer o;
|
||||||
|
MOCK_EXPECT( b, method ).once().returns( boost::ref( o ) );
|
||||||
|
b.method();
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue