Sequoia
|
class template from which all concrete tests should derive. More...
#include <FreeTestCore.hpp>
Public Types | |
using | checker_type = checker< Mode, Extender > |
![]() | |
using | logger_type = test_logger< Mode > |
Public Member Functions | |
basic_test (std::string name) | |
basic_test (std::string name, std::string_view suiteName, const normal_path &srcFile, const project_paths &projPaths, individual_materials_paths materials, active_recovery_files files, const std::optional< std::string > &outputDiscriminator, const std::optional< std::string > &summaryDiscriminator) | |
basic_test (const basic_test &)=delete | |
basic_test & | operator= (const basic_test &)=delete |
void | reset_results () noexcept |
![]() | |
test_base (std::string name) | |
test_base (std::string name, test_mode mode, std::string_view suiteName, const normal_path &srcFile, project_paths projPaths, individual_materials_paths materials, const std::optional< std::string > &outputDiscriminator, const std::optional< std::string > &summaryDiscriminator) | |
test_base (const test_base &)=delete | |
test_base & | operator= (const test_base &)=delete |
const std::string & | name () const noexcept |
std::filesystem::path | working_materials () const |
std::filesystem::path | predictive_materials () const |
std::filesystem::path | auxiliary_materials () const |
const project_paths & | get_project_paths () const noexcept |
const individual_diagnostics_paths & | diagnostics_file_paths () const noexcept |
const test_summary_path & | summary_file_path () const noexcept |
std::string | report (const reporter &rep) const |
![]() | |
checker (const checker &)=delete | |
checker & | operator= (const checker &)=delete |
template<class T , class Advisor = null_advisor, class Self > requires supports_equality_check<Mode, T, Advisor> | |
bool | check (this Self &self, equality_check_t, const reporter &description, const T &obtained, const T &prediction, tutor< Advisor > advisor={}) |
template<class T , class Advisor = null_advisor, class Self > requires supports_simple_equality_check<Mode, T, Advisor> | |
bool | check (this Self &self, simple_equality_check_t, const reporter &description, const T &obtained, const T &prediction, tutor< Advisor > advisor={}) |
template<class T , class U , minimal_reporting_permitted MinimalReporting, class Advisor = null_advisor, class Self > requires supports_best_available_check<MinimalReporting, Mode, T, U, Advisor> | |
bool | check (this Self &self, with_best_available_check_t< MinimalReporting >, const reporter &description, const T &obtained, const U &prediction, tutor< Advisor > advisor={}) |
template<class ValueBasedCustomizer , class T , class U , class Advisor = null_advisor, class Self > requires supports_generalized_equivalence_check<general_equivalence_check_t<ValueBasedCustomizer>, Mode, T, U, Advisor> | |
bool | check (this Self &self, general_equivalence_check_t< ValueBasedCustomizer > checker, const reporter &description, const T &obtained, const U &prediction, tutor< Advisor > advisor={}) |
template<class ValueBasedCustomizer , class T , class U , class Advisor = null_advisor, class Self > requires supports_generalized_equivalence_check<general_weak_equivalence_check_t<ValueBasedCustomizer>, Mode, T, U, Advisor> | |
bool | check (this Self &self, general_weak_equivalence_check_t< ValueBasedCustomizer > checker, const reporter &description, const T &obtained, const U &prediction, tutor< Advisor > advisor={}) |
template<class Compare , class T , class Advisor = null_advisor, class Self > requires potential_comparator_for<Compare, T> | |
bool | check (this Self &self, Compare compare, const reporter &description, const T &obtained, const T &prediction, tutor< Advisor > advisor={}) |
template<class Advisor = null_advisor, class Self > | |
bool | check (this Self &self, const reporter &description, const bool obtained, tutor< Advisor > advisor={}) |
template<class Compare , std::input_or_output_iterator Iter, std::sentinel_for< Iter > Sentinel, std::input_or_output_iterator PredictionIter, std::sentinel_for< PredictionIter > PredictionSentinel, class Advisor = null_advisor, class Self > requires supports_iterator_range_check<Compare, Mode, Iter, PredictionIter, Advisor> | |
bool | check (this Self &self, Compare compare, const reporter &description, Iter first, Sentinel last, PredictionIter predictionFirst, PredictionSentinel predictionLast, tutor< Advisor > advisor={}) |
template<class E , class Fn , invocable_r< std::string, project_paths, std::string > Postprocessor = default_exception_message_postprocessor, class Self > | |
bool | check_exception_thrown (this Self &self, const reporter &description, Fn &&function, Postprocessor postprocessor={}) |
log_summary | summary (std::string_view prefix, const log_summary::duration delta) const |
void | reset_results () noexcept |
bool | has_critical_failures () const noexcept |
Static Public Attributes | |
static constexpr test_mode | mode {Mode} |
![]() | |
static constexpr test_mode | mode {Mode} |
Protected Types | |
using | duration = std::chrono::steady_clock::duration |
Protected Member Functions | |
basic_test (basic_test &&) noexcept=default | |
basic_test & | operator= (basic_test &&) noexcept=default |
log_summary | summarize (duration delta) const |
![]() | |
test_base (test_base &&) noexcept=default | |
test_base & | operator= (test_base &&) noexcept=default |
void | write_instability_analysis_output (const normal_path &srcFile, std::optional< std::size_t > index, const failure_output &output) const |
![]() | |
checker (active_recovery_files recovery) | |
checker (checker &&) noexcept=default | |
checker & | operator= (checker &&) noexcept=default |
std::size_t | checks () const noexcept |
std::size_t | failures () const noexcept |
const uncaught_exception_info & | exceptions_detected_by_sentinel () const noexcept |
sentinel< Mode > | make_sentinel (std::string message) |
std::string_view | top_level_message () const |
const failure_output & | failure_messages () const noexcept |
Friends | |
class | test_vessel |
class template from which all concrete tests should derive.
The design is such that additional checking functionality should be provided by the Extender (which will become variadic once variadic friends are adopted). Other customization - such as the bespoke summarization of basic_performance_test - should be done via inheritance.
The semantics are such that, of the special member functions, only explicit construction from a string_view is publicly available. Destruction and moves are protected; copy contruction / assignment are deleted.