micro-test-plus
4.1.1
µTest++ Testing Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
deferred-reporter.cpp
Go to the documentation of this file.
1
/*
2
* This file is part of the µOS++ project (https://micro-os-plus.github.io/).
3
* Copyright (c) 2021-2026 Liviu Ionescu. All rights reserved.
4
*
5
* Permission to use, copy, modify, and/or distribute this software for any
6
* purpose is hereby granted, under the terms of the MIT license.
7
*
8
* If a copy of the license was not distributed with this file, it can be
9
* obtained from https://opensource.org/licenses/mit.
10
*
11
* Major parts of the code are inspired from v1.1.8 of the Boost UT project,
12
* released under the terms of the Boost Version 1.0 Software License,
13
* which can be obtained from https://www.boost.org/LICENSE_1_0.txt.
14
*/
15
16
// ----------------------------------------------------------------------------
17
36
37
// ----------------------------------------------------------------------------
38
39
#if __has_include(<micro-os-plus/project-config.h>)
40
#include <micro-os-plus/project-config.h>
41
#elif __has_include(<micro-os-plus/config.h>)
42
#pragma message \
43
"micro-os-plus/config.h is deprecated, rename to micro-os-plus/project-config.h and include it instead of micro-os-plus/config.h"
44
#include <micro-os-plus/config.h>
45
#endif
// __has_include(<micro-os-plus/project-config.h>)
46
47
#if __has_include(<micro-os-plus/micro-test-plus-defines.h>)
48
#include <micro-os-plus/micro-test-plus-defines.h>
49
#endif
// __has_include(<micro-os-plus/micro-test-plus-defines.h>)
50
51
#if defined(MICRO_OS_PLUS_TRACE)
52
#include <micro-os-plus/diag/trace.h>
53
#endif
// MICRO_OS_PLUS_TRACE
54
55
#include "
micro-os-plus/micro-test-plus/deferred-reporter.h
"
56
#include "
micro-os-plus/micro-test-plus/test.h
"
57
58
// ----------------------------------------------------------------------------
59
60
#if defined(__GNUC__)
61
#pragma GCC diagnostic ignored "-Waggregate-return"
62
#if defined(__clang__)
63
#pragma clang diagnostic ignored "-Wc++98-compat"
64
#pragma clang diagnostic ignored "-Wexit-time-destructors"
65
#pragma clang diagnostic ignored "-Wglobal-constructors"
66
#endif
67
#endif
68
69
// ============================================================================
70
71
namespace
micro_os_plus::micro_test_plus
72
{
73
// --------------------------------------------------------------------------
74
namespace
detail
75
{
83
deferred_reporter_base::deferred_reporter_base
(
84
bool
value
,
const
reflection::source_location
& location,
85
subtest
&
subtest
)
86
:
value_
{
value
},
location_
{ location },
subtest_
{
subtest
}
87
{
88
// The index starts at 0, must be incremented before the first check is
89
// reported, to ensure that the first check is reported as check #1.
90
subtest_
.increment_subtest_index ();
91
}
92
111
deferred_reporter_base::~deferred_reporter_base
()
112
{
113
#if defined(MICRO_OS_PLUS_TRACE) \
114
&& defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
115
trace::printf (
"%s\n"
, __PRETTY_FUNCTION__);
116
#endif
// MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED
117
118
auto
& expression_str =
subtest_
.reporter ().expression ().str ();
119
120
if
(
value_
) [[likely]]
121
{
122
subtest_
.reporter ().pass (
deferred_output_
, expression_str,
123
subtest_
);
124
subtest_
.totals ().increment_successful_checks ();
125
}
126
else
127
{
128
subtest_
.reporter ().fail (
abort_
,
deferred_output_
, expression_str,
129
has_expression_
,
location_
,
subtest_
);
130
subtest_
.totals ().increment_failed_checks ();
131
}
132
133
if
(
abort_
&& !
value_
) [[unlikely]]
134
{
135
subtest_
.reporter ().write_buffer_to_stdout ();
136
subtest_
.reporter ().flush ();
137
subtest_
.abort (
location_
);
138
}
139
}
140
}
// namespace detail
141
142
// ==========================================================================
143
}
// namespace micro_os_plus::micro_test_plus
144
145
// ----------------------------------------------------------------------------
micro_os_plus::micro_test_plus::detail::deferred_reporter_base::location_
const reflection::source_location location_
Stores the source location associated with the report.
Definition
deferred-reporter.h:187
micro_os_plus::micro_test_plus::detail::deferred_reporter_base::value
bool value() const
Retrieves the result value.
Definition
deferred-reporter-inlines.h:87
micro_os_plus::micro_test_plus::detail::deferred_reporter_base::deferred_output_
std::string deferred_output_
String to collect the expectation message passed via operator<<().
Definition
deferred-reporter.h:193
micro_os_plus::micro_test_plus::detail::deferred_reporter_base::~deferred_reporter_base
~deferred_reporter_base()
Destructor for the deferred reporter base.
Definition
deferred-reporter.cpp:111
micro_os_plus::micro_test_plus::detail::deferred_reporter_base::has_expression_
bool has_expression_
Indicates whether the reporter has an associated expression.
Definition
deferred-reporter.h:182
micro_os_plus::micro_test_plus::detail::deferred_reporter_base::abort_
bool abort_
Indicates whether the reporting should abort further processing.
Definition
deferred-reporter.h:177
micro_os_plus::micro_test_plus::detail::deferred_reporter_base::subtest_
subtest & subtest_
Reference to the test case invoking this report.
Definition
deferred-reporter.h:198
micro_os_plus::micro_test_plus::detail::deferred_reporter_base::deferred_reporter_base
deferred_reporter_base(bool value, const reflection::source_location &location, subtest &subtest)
Constructs a deferred reporter base.
Definition
deferred-reporter.cpp:83
micro_os_plus::micro_test_plus::detail::deferred_reporter_base::value_
bool value_
Stores the result value of the report.
Definition
deferred-reporter.h:171
micro_os_plus::micro_test_plus::reflection::source_location
Local implementation of source location information for diagnostics.
Definition
reflection.h:138
micro_os_plus::micro_test_plus::subtest
A named, runnable test case that lives inside a suite.
Definition
test.h:542
deferred-reporter.h
C++ header file with declarations for the µTest++ deferred reporter.
micro_os_plus::micro_test_plus::detail
Internal implementation details for the µTest++ framework.
Definition
deferred-reporter.h:79
micro_os_plus::micro_test_plus
Primary namespace for the µTest++ testing framework.
test.h
C++ header file with declarations for the µTest++ test suite.
src
deferred-reporter.cpp
Generated by
1.17.0