Skip to content

Commit

Permalink
Add matcher: Not()
Browse files Browse the repository at this point in the history
  • Loading branch information
webmaster128 committed Aug 12, 2015
1 parent 1952015 commit 312b94e
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions include/internal/catch_matchers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,23 @@ namespace Matchers {
};

namespace Generic {
template<typename ExpressionT>
struct Not : public MatcherImpl<Not<ExpressionT>, ExpressionT>
{
Not( Matcher<ExpressionT> const& matcher ) : m_matcher(matcher.clone()) {}
Not( Not const& other ) : m_matcher( other.m_matcher ) {}

virtual bool match( ExpressionT const& expr ) const CATCH_OVERRIDE
{
return !m_matcher->match( expr );
}

virtual std::string toString() const CATCH_OVERRIDE {
return "not " + m_matcher->toString();
}

Ptr< Matcher<ExpressionT> > m_matcher;
};

template<typename ExpressionT>
class AllOf : public MatcherImpl<AllOf<ExpressionT>, ExpressionT> {
Expand Down Expand Up @@ -204,6 +221,11 @@ namespace Matchers {

// The following functions create the actual matcher objects.
// This allows the types to be inferred
template<typename ExpressionT>
inline Impl::Generic::Not<ExpressionT> Not( Impl::Matcher<ExpressionT> const& m ) {
return Impl::Generic::Not<ExpressionT>( m );
}

template<typename ExpressionT>
inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<ExpressionT> const& m1,
Impl::Matcher<ExpressionT> const& m2 ) {
Expand Down

0 comments on commit 312b94e

Please sign in to comment.