// Copyright Joakim Karlsson & Kim Gräsman 2010-2012. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef IGLOO_ISGREATERTHANOREQUALTOCONSTRAINT_H #define IGLOO_ISGREATERTHANOREQUALTOCONSTRAINT_H #include "./expressions/expression.h" namespace snowhouse { template< typename ExpectedType > struct IsGreaterThanOrEqualToConstraint : Expression < IsGreaterThanOrEqualToConstraint > { IsGreaterThanOrEqualToConstraint(const ExpectedType& expected) : m_expected(expected) { } template bool operator()(const ActualType& actual) const { return (actual >= m_expected); } ExpectedType m_expected; }; template< typename ExpectedType > inline IsGreaterThanOrEqualToConstraint IsGreaterThanOrEqualTo(const ExpectedType& expected) { return IsGreaterThanOrEqualToConstraint(expected); } inline IsGreaterThanOrEqualToConstraint IsGreaterThanOrEqualTo(const char* expected) { return IsGreaterThanOrEqualToConstraint(expected); } template< typename ExpectedType > struct Stringizer < IsGreaterThanOrEqualToConstraint< ExpectedType > > { static std::string ToString(const IsGreaterThanOrEqualToConstraint& constraint) { std::ostringstream builder; builder << "greater than or equal to " << snowhouse::Stringize(constraint.m_expected); return builder.str(); } }; } #endif