Test-Catch
view release on metacpan or search on metacpan
#include <math.h> // this fixes win32 because <cmath> that is included by <catch.hpp> breaks <perl.h> unless previously included <math.h>
#include <vector>
#include <iostream>
#include <catch2/catch_session.hpp>
#include <catch2/internal/catch_string_manip.hpp>
#include <catch2/internal/catch_console_colour.hpp>
#include <catch2/reporters/catch_reporter_registrars.hpp>
#include <catch2/reporters/catch_reporter_streaming_base.hpp>
#include <xsheader.h>
using namespace Catch;
using namespace std;
static Catch::Session session;
struct Printer {
Printer (ostream& _stream, const AssertionStats& _stats)
: stream(_stream), result(_stats.assertionResult), messages(_stats.infoMessages), itMessage(_stats.infoMessages.begin()) {}
void print () {
itMessage = messages.begin();
switch (result.getResultType()) {
case ResultWas::Ok:
case ResultWas::ExplicitSkip:
printOriginalExpression();
printReconstructedExpression();
printRemainingMessages();
break;
case ResultWas::ExpressionFailed:
printOriginalExpression();
printReconstructedExpression();
if (result.isOk()) printIssue(" # TODO");
printRemainingMessages();
break;
case ResultWas::ThrewException:
printIssue("unexpected exception ");
printExpressionWas();
printRemainingMessages();
break;
case ResultWas::FatalErrorCondition:
printIssue("fatal error condition with message:");
printMessage();
printExpressionWas();
printRemainingMessages();
break;
case ResultWas::DidntThrowException:
printIssue("expected exception, got none");
printExpressionWas();
printRemainingMessages();
break;
case ResultWas::Info:
stream << "#info";
printMessage();
printRemainingMessages();
break;
case ResultWas::Warning:
stream << "#warning";
printMessage();
printRemainingMessages();
break;
case ResultWas::ExplicitFailure:
printIssue("explicitly");
printRemainingMessages();
break;
// These cases are here to prevent compiler warnings
case ResultWas::Unknown:
case ResultWas::FailureBit:
( run in 0.552 second using v1.01-cache-2.11-cpan-39bf76dae61 )