#include <catch2/catch_test_macros.hpp>
#include <catch2/reporters/catch_reporter_streaming_base.hpp>
#include <catch2/catch_test_case_info.hpp>
#include <catch2/reporters/catch_reporter_registrars.hpp>
#include <catch2/generators/catch_generators.hpp>
#include <iostream>
using
Catch::TestCaseInfo;
using
Catch::TestCaseStats;
class
PartialReporter :
public
Catch::StreamingReporterBase {
public
:
using
StreamingReporterBase::StreamingReporterBase;
~PartialReporter() override;
static
std::string getDescription() {
return
"Special reporter for testing TestCasePartialStarting/Ended events"
;
}
void
testCaseStarting(TestCaseInfo
const
& testInfo) override {
std::cout <<
"TestCaseStarting: "
<< testInfo.name <<
'\n'
;
}
void
testCasePartialStarting(TestCaseInfo
const
& testInfo, uint64_t partNumber) override {
std::cout <<
"TestCaseStartingPartial: "
<< testInfo.name <<
'#'
<< partNumber <<
'\n'
;
}
void
testCasePartialEnded(TestCaseStats
const
& testCaseStats, uint64_t partNumber) override {
std::cout <<
"TestCasePartialEnded: "
<< testCaseStats.testInfo->name <<
'#'
<< partNumber <<
'\n'
;
}
void
testCaseEnded(TestCaseStats
const
& testCaseStats) override {
std::cout <<
"TestCaseEnded: "
<< testCaseStats.testInfo->name <<
'\n'
;
}
};
PartialReporter::~PartialReporter() =
default
;
CATCH_REGISTER_REPORTER(
"partial"
, PartialReporter)
TEST_CASE(
"section"
) {
SECTION(
"A"
) {}
SECTION(
"B"
) {}
SECTION(
"C"
) {}
SECTION(
"D"
) {}
}
TEST_CASE(
"generator"
) {
auto
_ = GENERATE(1, 2, 3, 4);
(
void
)_;
}