fix: RNG 测试修复 — BoolToggleModel PWM 公式 + valve period_ms + registry defaultVal

This commit is contained in:
Huamonarch 2026-05-18 10:31:05 +08:00
parent 0accc6d2b0
commit 5bcbb7bc9a
3 changed files with 5 additions and 4 deletions

View File

@ -8,6 +8,7 @@ struct BoolToggleModel : IModel {
BoolToggleModel(const json& params, float)
: period_ticks(params.value("period_ms", 2000) / 20) {}
bool evaluateBool(size_t t) override {
return (t / period_ticks) % 2 == 0;
int half = period_ticks / 2;
return (t % period_ticks) < static_cast<size_t>(half);
}
};

View File

@ -15,7 +15,7 @@ TEST(registry_load_models_and_get_builtin) {
auto& reg = ModelRegistry::instance();
reg.loadModels(testJsonPath());
IModel* m = reg.getOrCreate("const_100", 0.0f, "builtin_1");
IModel* m = reg.getOrCreate("const_100", 100.0f, "builtin_1");
CHECK(m != nullptr);
CHECK_FLOAT_EQ(m->evaluate(0), 100.0f, 0.001f);
CHECK_FLOAT_EQ(m->evaluate(999), 100.0f, 0.001f);
@ -69,7 +69,7 @@ TEST(registry_find_nonexistent) {
TEST(registry_composite_syntax) {
auto& reg = ModelRegistry::instance();
// const_100 + linear_k1: evaluate(0) = 100 + 0 = 100, evaluate(3) = 100 + 8 = 108
IModel* m = reg.getOrCreate("const_100+linear_k1", 0.0f, "composite_1");
IModel* m = reg.getOrCreate("const_100+linear_k1", 100.0f, "composite_1");
CHECK(m != nullptr);
CHECK_FLOAT_EQ(m->evaluate(0), 100.0f, 0.001f);
CHECK_FLOAT_EQ(m->evaluate(3), 108.0f, 0.001f);

View File

@ -9,7 +9,7 @@ struct ValvePairFixture {
ValvePairModel valve;
ValvePairFixture(int on_delay_ms = 0, int off_delay_ms = 0)
: action(std::make_unique<BoolToggleModel>(json{{"period_ms", 200}}, 0.0f))
: action(std::make_unique<BoolToggleModel>(json{{"period_ms", 2000}}, 0.0f))
, valve(json{{"on_delay_ms", on_delay_ms}, {"off_delay_ms", off_delay_ms}}, 0.0f) {
valve.action = action.get();
}