Iros
 
Loading...
Searching...
No Matches
test_manager.h
Go to the documentation of this file.
1#pragma once
2
3#include "di/cli/prelude.h"
5
6namespace dius::test {
7class TestManager {
8public:
9 static auto the() -> TestManager&;
10
12
13 struct Args {
14 bool list_simple { false };
17 bool help { false };
18
19 constexpr static auto get_cli_parser() {
20 return di::cli_parser<Args>("dius_test"_sv, "Dius Test Runner"_sv)
21 .help()
22 .option<&Args::list_simple>('L', "list-simple"_tsv,
23 "Output a simple machine readable list of test cases"_sv)
24 .option<&Args::suite_name>('s', "suite"_tsv, "Specifc test suite to run"_sv)
25 .option<&Args::case_name>('t', "test-case"_tsv, "Specific case to run in the format ([suite:]case)"_sv);
26 }
27 };
28
29 auto run_tests(Args& args) -> di::Result<void>;
30
31 auto is_test_application() const -> bool { return !m_test_cases.empty(); }
33
34private:
35 TestManager() = default;
36
37 void print_failure_message();
38 void print_success_message();
39
40 void run_current_test();
41 void execute_remaining_tests();
42 void final_report();
43
44 di::Vector<TestCase> m_test_cases;
45 usize m_current_test_index { 0 };
46 usize m_fail_count { 0 };
47 usize m_success_count { 0 };
48};
49}
Definition vector_forward_declaration.h:8
Definition optional_forward_declaration.h:5
Definition test_case.h:9
Definition test_manager.h:7
void handle_assertion_failure()
Definition test_manager.cpp:34
static auto the() -> TestManager &
Definition test_manager.cpp:11
auto is_test_application() const -> bool
Definition test_manager.h:31
void register_test_case(TestCase)
Definition test_manager.cpp:16
auto run_tests(Args &args) -> di::Result< void >
Definition test_manager.cpp:75
size_t usize
Definition integers.h:33
Expected< T, Error > Result
Definition result.h:8
constexpr auto cli_parser(StringView app_name, StringView description)
Definition parser.h:331
Definition test_case.h:6
Definition test_manager.h:13
di::Optional< di::TransparentStringView > suite_name
Definition test_manager.h:15
bool list_simple
Definition test_manager.h:14
di::Optional< di::TransparentStringView > case_name
Definition test_manager.h:16
static constexpr auto get_cli_parser()
Definition test_manager.h:19
bool help
Definition test_manager.h:17
Definition getopt.h:12