Some checks failed
Linux Build / Linux cpu (push) Has been cancelled
Linux Build / Linux cpu-clang (push) Has been cancelled
Linux Build / Linux vulkan (push) Has been cancelled
mac-build / macOS CPU (push) Has been cancelled
Nix Build / Nix (cpu) (push) Has been cancelled
Nix Build / Nix (vulkan) (push) Has been cancelled
windows-build / Windows CPU (push) Has been cancelled
35 lines
1,021 B
C++
35 lines
1,021 B
C++
#pragma once
|
|
|
|
#include <cmath>
|
|
#include <sstream>
|
|
#include <stdexcept>
|
|
#include <string>
|
|
|
|
namespace engine::test {
|
|
|
|
inline void require(bool condition, const std::string & message) {
|
|
if (!condition) {
|
|
throw std::runtime_error(message);
|
|
}
|
|
}
|
|
|
|
template <typename T, typename U>
|
|
void require_eq(const T & actual, const U & expected, const std::string & label) {
|
|
if (!(actual == expected)) {
|
|
std::ostringstream oss;
|
|
oss << label << " mismatch: expected=" << expected << " actual=" << actual;
|
|
throw std::runtime_error(oss.str());
|
|
}
|
|
}
|
|
|
|
inline void require_close(float actual, float expected, float tolerance, const std::string & label) {
|
|
const float diff = std::fabs(actual - expected);
|
|
if (diff > tolerance) {
|
|
std::ostringstream oss;
|
|
oss << label << " mismatch: expected=" << expected << " actual=" << actual
|
|
<< " diff=" << diff << " tolerance=" << tolerance;
|
|
throw std::runtime_error(oss.str());
|
|
}
|
|
}
|
|
|
|
} // namespace engine::test
|