Iros
 
Loading...
Searching...
No Matches
test_case.h
Go to the documentation of this file.
1#pragma once
2
4#include "di/util/prelude.h"
5
6namespace dius::test {
7using TestCaseFunction = void (*)();
8
9class TestCase {
10public:
13 : m_suite_name(di::move(suite_name)), m_case_name(di::move(case_name)), m_function(function) {}
14
15 constexpr auto suite_name() const -> di::TransparentStringView { return m_suite_name; }
16 constexpr auto case_name() const -> di::TransparentStringView { return m_case_name; }
17
18 constexpr void execute() const { m_function(); }
19
20private:
21 constexpr friend auto operator==(TestCase const& a, TestCase const& b) -> bool {
22 return di::make_tuple(a.suite_name(), a.case_name()) == di::make_tuple(b.suite_name(), b.case_name());
23 }
24
25 constexpr friend auto operator<=>(TestCase const& a, TestCase const& b) -> di::strong_ordering {
26 return di::make_tuple(a.suite_name(), a.case_name()) <=> di::make_tuple(b.suite_name(), b.case_name());
27 }
28
29 di::TransparentStringView m_suite_name;
30 di::TransparentStringView m_case_name;
31 TestCaseFunction m_function;
32};
33}
constexpr auto suite_name() const -> di::TransparentStringView
Definition test_case.h:15
constexpr void execute() const
Definition test_case.h:18
constexpr friend auto operator==(TestCase const &a, TestCase const &b) -> bool
Definition test_case.h:21
constexpr TestCase(di::TransparentStringView suite_name, di::TransparentStringView case_name, TestCaseFunction function)
Definition test_case.h:11
constexpr friend auto operator<=>(TestCase const &a, TestCase const &b) -> di::strong_ordering
Definition test_case.h:25
constexpr auto case_name() const -> di::TransparentStringView
Definition test_case.h:16
string::StringViewImpl< string::TransparentEncoding > TransparentStringView
Definition string_view.h:13
Definition as_bool.h:8
Definition zstring_parser.h:9
constexpr auto make_tuple(Args &&... args)
Definition make_tuple.h:9
Definition test_case.h:6
void(*)() TestCaseFunction
Definition test_case.h:7