Small cleanup for PredicateMatcher

Removed the `generic` nested namespace, so PredicateMatcher now
lives in `Catch::Matchers` namespace, just like other matchers.
Also cleaned up and doxygenized comments on the `Predicate` factory
function for `PredicateMatcher`.
This commit is contained in:
Martin Hořeňovský 2020-03-27 10:57:09 +01:00
parent ab0ca2f566
commit 5c9367d4f1
No known key found for this signature in database
GPG Key ID: DE48307B8B0D381A
2 changed files with 9 additions and 11 deletions

View File

@ -1,6 +1,6 @@
#include <catch2/matchers/catch_matchers_predicate.hpp>
std::string Catch::Matchers::Generic::Detail::finalizeDescription(const std::string& desc) {
std::string Catch::Matchers::Detail::finalizeDescription(const std::string& desc) {
if (desc.empty()) {
return "matches undescribed predicate";
} else {

View File

@ -16,11 +16,10 @@
namespace Catch {
namespace Matchers {
namespace Generic {
namespace Detail {
std::string finalizeDescription(const std::string& desc);
}
} // namespace Detail
template <typename T, typename Predicate>
class PredicateMatcher final : public MatcherBase<T> {
@ -42,17 +41,16 @@ public:
}
};
} // 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.
/**
* Creates a matcher that calls delegates `match` to the provided predicate.
*
* The user has to explicitly specify the argument type to the matcher
*/
template<typename T, typename Pred>
Generic::PredicateMatcher<T, Pred> Predicate(Pred&& predicate, std::string const& description = "") {
PredicateMatcher<T, Pred> Predicate(Pred&& predicate, std::string const& description = "") {
static_assert(is_callable<Pred(T)>::value, "Predicate not callable with argument T");
static_assert(std::is_same<bool, FunctionReturnType<Pred, T>>::value, "Predicate does not return bool");
return Generic::PredicateMatcher<T, Pred>(std::forward<Pred>(predicate), description);
return PredicateMatcher<T, Pred>(std::forward<Pred>(predicate), description);
}
} // namespace Matchers