srctree

Robin Linden parent 785999c7 126f7627
etest: Simplify test assertion code

inlinesplit
etest/etest.cpp added: 31, removed: 41, total 0
@@ -87,33 +87,35 @@ void disabled_test(std::string, std::function<void()>) noexcept {
}
 
void expect(bool b, std::optional<std::string_view> log_message, etest::source_location const &loc) noexcept {
if (!b) {
++assertion_failures;
// Check if we're using the real source_location by checking for line == 0.
if (loc.line() != 0) {
test_log << " expectation failure at " << loc.file_name() << "(" << loc.line() << ":" << loc.column()
<< ")\n";
}
if (b) {
return;
}
 
if (log_message) {
test_log << *log_message << "\n\n";
}
++assertion_failures;
// Check if we're using the real source_location by checking for line == 0.
if (loc.line() != 0) {
test_log << " expectation failure at " << loc.file_name() << "(" << loc.line() << ":" << loc.column() << ")\n";
}
 
if (log_message) {
test_log << *log_message << "\n\n";
}
}
 
void require(bool b, std::optional<std::string_view> log_message, etest::source_location const &loc) {
if (!b) {
if (loc.line() != 0) {
test_log << " requirement failure at " << loc.file_name() << "(" << loc.line() << ":" << loc.column()
<< ")\n";
}
 
if (log_message) {
test_log << *log_message << "\n\n";
}
 
throw test_failure{};
if (b) {
return;
}
 
if (loc.line() != 0) {
test_log << " requirement failure at " << loc.file_name() << "(" << loc.line() << ":" << loc.column() << ")\n";
}
 
if (log_message) {
test_log << *log_message << "\n\n";
}
 
throw test_failure{};
}
 
} // namespace etest
 
etest/etest.h added: 31, removed: 41, total 0
@@ -42,15 +42,9 @@ void expect_eq(T const &a,
U const &b,
std::optional<std::string_view> log_message = std::nullopt,
etest::source_location const &loc = etest::source_location::current()) noexcept {
if (a != b) {
if (log_message) {
expect(false, std::move(log_message), loc);
} else {
std::stringstream ss;
ss << a << " !=\n" << b;
expect(false, std::move(ss).str(), loc);
}
}
std::stringstream ss;
ss << a << " !=\n" << b;
expect(a == b, log_message ? std::move(log_message) : std::move(ss).str(), loc);
}
 
template<typename T, typename U>
@@ -67,15 +61,9 @@ void require_eq(T const &a,
U const &b,
std::optional<std::string_view> log_message = std::nullopt,
etest::source_location const &loc = etest::source_location::current()) {
if (a != b) {
if (log_message) {
require(false, std::move(log_message), loc);
} else {
std::stringstream ss;
ss << a << " !=\n" << b;
require(false, std::move(ss).str(), loc);
}
}
std::stringstream ss;
ss << a << " !=\n" << b;
require(a == b, log_message ? std::move(log_message) : std::move(ss).str(), loc);
}
 
template<typename T, typename U>