| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | 
							- /*
 
-  *  Created by Martin Hořeňovský on 03/04/2017.
 
-  *
 
-  * 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 TWOBLUECUBES_CATCH_MATCHERS_GENERIC_HPP_INCLUDED
 
- #define TWOBLUECUBES_CATCH_MATCHERS_GENERIC_HPP_INCLUDED
 
- #include "catch_common.h"
 
- #include "catch_matchers.h"
 
- #include <functional>
 
- #include <string>
 
- namespace Catch {
 
- namespace Matchers {
 
- namespace Generic {
 
- namespace Detail {
 
-     std::string finalizeDescription(const std::string& desc);
 
- }
 
- template <typename T>
 
- class PredicateMatcher : public MatcherBase<T> {
 
-     std::function<bool(T const&)> m_predicate;
 
-     std::string m_description;
 
- public:
 
-     PredicateMatcher(std::function<bool(T const&)> const& elem, std::string const& descr)
 
-         :m_predicate(std::move(elem)),
 
-         m_description(Detail::finalizeDescription(descr))
 
-     {}
 
-     bool match( T const& item ) const override {
 
-         return m_predicate(item);
 
-     }
 
-     std::string describe() const override {
 
-         return m_description;
 
-     }
 
- };
 
- } // namespace Generic
 
-     // The following functions create the actual matcher objects.
 
-     // The user has to explicitly specify type to the function, because
 
-     // inferring std::function<bool(T const&)> is hard (but possible) and
 
-     // requires a lot of TMP.
 
-     template<typename T>
 
-     Generic::PredicateMatcher<T> Predicate(std::function<bool(T const&)> const& predicate, std::string const& description = "") {
 
-         return Generic::PredicateMatcher<T>(predicate, description);
 
-     }
 
- } // namespace Matchers
 
- } // namespace Catch
 
- #endif // TWOBLUECUBES_CATCH_MATCHERS_GENERIC_HPP_INCLUDED
 
 
  |