mimic++ v9.2.1
Loading...
Searching...
No Matches
mimicpp::reporting::BasicReporter< successReporter, warningReporter, failReporter > Class Template Reference

A reporter, which creates text messages and reports them via the provided callbacks. More...

#include <BasicReporter.hpp>

Inheritance diagram for mimicpp::reporting::BasicReporter< successReporter, warningReporter, failReporter >:
[legend]
Collaboration diagram for mimicpp::reporting::BasicReporter< successReporter, warningReporter, failReporter >:
[legend]

Public Member Functions

void report_no_matches (CallReport call, std::vector< NoMatchReport > noMatchReports) override
 Expects reports on all non-matching expectations. This is only called when no better options are available.
 
void report_inapplicable_matches (CallReport call, std::vector< ExpectationReport > expectationReports) override
 Handles reports for all inapplicable but otherwise matching expectations. This function is called only when no better options are available.
 
void report_full_match (CallReport call, ExpectationReport expectationReport) noexcept override
 Handles the report for a fully matching expectation.
 
void report_unfulfilled_expectation (const ExpectationReport expectationReport) override
 Handles the report of an unfulfilled expectation.
 
void report_error (StringT const message) override
 Handles general or unspecified errors.
 
void report_unhandled_exception (CallReport const call, ExpectationReport const expectationReport, std::exception_ptr const exception) override
 Handles reports about unhandled exceptions during handle_call.
 

Detailed Description

template<std::invocable< StringT const & > auto successReporter, std::invocable< StringT const & > auto warningReporter, std::invocable< StringT const & > auto failReporter>
class mimicpp::reporting::BasicReporter< successReporter, warningReporter, failReporter >

A reporter, which creates text messages and reports them via the provided callbacks.

Template Parameters
successReporterThe success reporter callback.
warningReporterThe warning reporter callback.
failReporterThe fail reporter callback. This reporter must never return!

Member Function Documentation

◆ report_error()

template<std::invocable< StringT const & > auto successReporter, std::invocable< StringT const & > auto warningReporter, std::invocable< StringT const & > auto failReporter>
void mimicpp::reporting::BasicReporter< successReporter, warningReporter, failReporter >::report_error ( StringT const message)
inlineoverridevirtual

Handles general or unspecified errors.

Parameters
messageThe error message.

This function is called when a non-specific error occurs.

Note
In general, this function is expected to throw an exception rather than return. However, as it may be called for various reasons, implementations should check for existing uncaught exceptions before throwing their own. This can be done using std::uncaught_exceptions().
See also
DefaultReporter::report_error for an example.

Implements mimicpp::reporting::IReporter.

◆ report_full_match()

template<std::invocable< StringT const & > auto successReporter, std::invocable< StringT const & > auto warningReporter, std::invocable< StringT const & > auto failReporter>
void mimicpp::reporting::BasicReporter< successReporter, warningReporter, failReporter >::report_full_match ( CallReport call,
ExpectationReport expectationReport )
inlineoverridevirtualnoexcept

Handles the report for a fully matching expectation.

Parameters
callThe call report.
expectationReportReport of the fully matched expectation.

This function is called when a match has been found. There are no other expectations for the behavior of this function, except for the noexcept guarantee. Implementations should simply return to the caller.

Implements mimicpp::reporting::IReporter.

◆ report_inapplicable_matches()

template<std::invocable< StringT const & > auto successReporter, std::invocable< StringT const & > auto warningReporter, std::invocable< StringT const & > auto failReporter>
void mimicpp::reporting::BasicReporter< successReporter, warningReporter, failReporter >::report_inapplicable_matches ( CallReport call,
std::vector< ExpectationReport > expectationReports )
inlineoverridevirtual

Handles reports for all inapplicable but otherwise matching expectations. This function is called only when no better options are available.

Parameters
callThe call report.
expectationReportsReports of all inapplicable expectations.

This function is called when no applicable match has been found, but the call expectations are actually fulfilled. This occurs when the "times" policy is already saturated (e.g., it was expected once and has already been matched once) or is otherwise not applicable (e.g., a sequence element is not the current element).

Attention
Derived reporter implementations must never return normally and should instead exit the function either by throwing an exception or using a terminating mechanism (e.g., std::abort). Failing to do so will result in undefined behavior.

Implements mimicpp::reporting::IReporter.

◆ report_no_matches()

template<std::invocable< StringT const & > auto successReporter, std::invocable< StringT const & > auto warningReporter, std::invocable< StringT const & > auto failReporter>
void mimicpp::reporting::BasicReporter< successReporter, warningReporter, failReporter >::report_no_matches ( CallReport call,
std::vector< NoMatchReport > noMatchReports )
inlineoverridevirtual

Expects reports on all non-matching expectations. This is only called when no better options are available.

Parameters
callThe call report.
noMatchReportsReports of all none matching expectations.

This function is called when no match has been found and there are no other expectations that are matching but inapplicable. It serves as the fallback reporting mechanism for unmatched calls.

Note
noMatchReports may be empty.
Attention
Derived reporter implementations must never return normally and should instead exit the function either by throwing an exception or using a terminating mechanism (e.g., std::abort). Failing to do so will result in undefined behavior.

Implements mimicpp::reporting::IReporter.

◆ report_unfulfilled_expectation()

template<std::invocable< StringT const & > auto successReporter, std::invocable< StringT const & > auto warningReporter, std::invocable< StringT const & > auto failReporter>
void mimicpp::reporting::BasicReporter< successReporter, warningReporter, failReporter >::report_unfulfilled_expectation ( const ExpectationReport expectationReport)
inlineoverridevirtual

Handles the report of an unfulfilled expectation.

Parameters
expectationReportThe expectation report.

This function is called when an unfulfilled expectation goes out of scope. This occurs when the "times" policy is not satisfied.

Note
In general, this function is expected to not return but throw an exception instead. However, since it is always called when an unfulfilled expectation goes out of scope, implementations shall check whether an uncaught exception already exists (e.g., via std::uncaught_exceptions) before throwing their own exception.
See also
DefaultReporter::report_unfulfilled_expectation for an example.

Implements mimicpp::reporting::IReporter.

◆ report_unhandled_exception()

template<std::invocable< StringT const & > auto successReporter, std::invocable< StringT const & > auto warningReporter, std::invocable< StringT const & > auto failReporter>
void mimicpp::reporting::BasicReporter< successReporter, warningReporter, failReporter >::report_unhandled_exception ( CallReport const call,
ExpectationReport const expectationReport,
std::exception_ptr const exception )
inlineoverridevirtual

Handles reports about unhandled exceptions during handle_call.

Parameters
callThe call report.
expectationReportThe expectation report.
exceptionThe exception.

This function is called when an expectation throws an exception during a matches call. There are no specific requirements for the behavior of this function. Since this function is called inside a catch-block, throwing exceptions will result in a terminate call.

Implements mimicpp::reporting::IReporter.


The documentation for this class was generated from the following file: