eis/TestProject/RNG/test/test_drift.cc

29 lines
869 B
C++
Raw Normal View History

#include "test_harness.h"
#include <TestProject/RNG/model/DriftModel.h>
using json = nlohmann::json;
TEST(drift_basic) {
DriftModel m(json{{"drift_rate", 0.1f}}, 0.0f);
CHECK_FLOAT_EQ(m.evaluate(0), 0.0f, 0.001f);
CHECK_FLOAT_EQ(m.evaluate(10), 1.0f, 0.001f);
}
TEST(drift_default_rate_is_zero) {
DriftModel m(json::object(), 42.0f);
CHECK_FLOAT_EQ(m.evaluate(0), 42.0f, 0.001f);
CHECK_FLOAT_EQ(m.evaluate(1000), 42.0f, 0.001f);
}
TEST(drift_negative_rate) {
DriftModel m(json{{"drift_rate", -0.5f}}, 100.0f);
CHECK_FLOAT_EQ(m.evaluate(10), 95.0f, 0.001f);
}
TEST(drift_with_period) {
// period_ms=100 → 5 ticks per period
DriftModel m(json{{"drift_rate", 1.0f}, {"period_ms", 100}}, 0.0f);
CHECK_FLOAT_EQ(m.evaluate(0), 0.0f, 0.001f);
CHECK_FLOAT_EQ(m.evaluate(4), 4.0f, 0.001f);
CHECK_FLOAT_EQ(m.evaluate(5), 0.0f, 0.001f); // wraps
}