Files
2026-06-09 12:42:15 +08:00

52 lines
1.5 KiB
C++

#pragma once
#include <cmath>
#include <cstdint>
#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
namespace test_support {
inline void require_true(const bool condition, const std::string& message) {
if (!condition) {
std::cerr << "FAILED: " << message << '\n';
std::exit(1);
}
}
template <typename T, typename U>
void require_equal(const T& actual, const U& expected, const std::string& message) {
if (!(actual == expected)) {
std::cerr << "FAILED: " << message << '\n'
<< " actual: " << actual << '\n'
<< " expected: " << expected << '\n';
std::exit(1);
}
}
inline void require_float_close(const float actual,
const float expected,
const std::string& message) {
if (std::fabs(actual - expected) > 0.0001F) {
std::cerr << "FAILED: " << message << '\n'
<< " actual: " << actual << '\n'
<< " expected: " << expected << '\n';
std::exit(1);
}
}
inline void require_bytes_equal(const std::vector<std::uint8_t>& actual,
const std::vector<std::uint8_t>& expected,
const std::string& message) {
if (actual != expected) {
std::cerr << "FAILED: " << message << '\n'
<< " actual size: " << actual.size() << '\n'
<< " expected size: " << expected.size() << '\n';
std::exit(1);
}
}
} // 命名空间 test_support