MCPcopy Create free account
hub / github.com/Bareflank/hypervisor / tests

Function tests

lib/tests/include/basic_queue_t/behavior.cpp:44–119  ·  view source on GitHub ↗

<!-- description --> @brief Used to execute the actual checks. We put the checks in this function so that we can validate the tests both at compile-time and at run-time. If a bsl::ut_check fails, the tests will either fail fast at run-time, or will produce a compile-time error. <!-- inputs/outputs --> @return Always returns bsl::exit_success.

Source from the content-addressed store, hash-verified

42 /// @return Always returns bsl::exit_success.
43 ///
44 [[nodiscard]] constexpr auto
45 tests() noexcept -> bsl::exit_code
46 {
47 constexpr auto queue_size{3_umx};
48
49 bsl::ut_scenario{"initial state"} = [&]() noexcept {
50 bsl::ut_given{} = [&]() noexcept {
51 lib::basic_queue_t<bool, queue_size.get()> mut_queue{};
52 bsl::ut_when{} = [&]() noexcept {
53 bsl::ut_then{} = [&]() noexcept {
54 bsl::ut_check(mut_queue.empty());
55 bsl::ut_check(mut_queue.size() == queue_size);
56 };
57 };
58 };
59 };
60
61 bsl::ut_scenario{"push until full"} = [&]() noexcept {
62 bsl::ut_given{} = [&]() noexcept {
63 lib::basic_queue_t<bool, queue_size.get()> mut_queue{};
64 bsl::ut_when{} = [&]() noexcept {
65 bsl::ut_required_step(mut_queue.push(true));
66 bsl::ut_required_step(mut_queue.push(true));
67 bsl::ut_then{} = [&]() noexcept {
68 bsl::ut_check(!mut_queue.push(true));
69 bsl::ut_check(!mut_queue.empty());
70 };
71 };
72 };
73 };
74
75 bsl::ut_scenario{"pop until empty"} = [&]() noexcept {
76 bsl::ut_given{} = [&]() noexcept {
77 lib::basic_queue_t<bool, queue_size.get()> mut_queue{};
78 bool mut_val{};
79 bsl::ut_when{} = [&]() noexcept {
80 bsl::ut_required_step(mut_queue.push(true));
81 bsl::ut_required_step(mut_queue.push(true));
82 bsl::ut_then{} = [&]() noexcept {
83 mut_val = {};
84 bsl::ut_check(mut_queue.pop(mut_val));
85 bsl::ut_check(!mut_queue.empty());
86 bsl::ut_check(mut_val);
87
88 mut_val = {};
89 bsl::ut_check(mut_queue.pop(mut_val));
90 bsl::ut_check(mut_queue.empty());
91 bsl::ut_check(mut_val);
92
93 mut_val = {};
94 bsl::ut_check(!mut_queue.pop(mut_val));
95 bsl::ut_check(mut_queue.empty());
96 bsl::ut_check(!mut_val);
97 };
98 };
99 };
100 };
101

Callers 2

mainFunction · 0.70
mainFunction · 0.50

Calls 5

ut_checkFunction · 0.85
pushMethod · 0.80
popMethod · 0.80
emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected