fix: RNG 测试修复 — BoolToggleModel PWM 公式 + valve period_ms + registry defaultVal
This commit is contained in:
parent
0accc6d2b0
commit
5bcbb7bc9a
@ -8,6 +8,7 @@ struct BoolToggleModel : IModel {
|
|||||||
BoolToggleModel(const json& params, float)
|
BoolToggleModel(const json& params, float)
|
||||||
: period_ticks(params.value("period_ms", 2000) / 20) {}
|
: period_ticks(params.value("period_ms", 2000) / 20) {}
|
||||||
bool evaluateBool(size_t t) override {
|
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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -15,7 +15,7 @@ TEST(registry_load_models_and_get_builtin) {
|
|||||||
auto& reg = ModelRegistry::instance();
|
auto& reg = ModelRegistry::instance();
|
||||||
reg.loadModels(testJsonPath());
|
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(m != nullptr);
|
||||||
CHECK_FLOAT_EQ(m->evaluate(0), 100.0f, 0.001f);
|
CHECK_FLOAT_EQ(m->evaluate(0), 100.0f, 0.001f);
|
||||||
CHECK_FLOAT_EQ(m->evaluate(999), 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) {
|
TEST(registry_composite_syntax) {
|
||||||
auto& reg = ModelRegistry::instance();
|
auto& reg = ModelRegistry::instance();
|
||||||
// const_100 + linear_k1: evaluate(0) = 100 + 0 = 100, evaluate(3) = 100 + 8 = 108
|
// 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(m != nullptr);
|
||||||
CHECK_FLOAT_EQ(m->evaluate(0), 100.0f, 0.001f);
|
CHECK_FLOAT_EQ(m->evaluate(0), 100.0f, 0.001f);
|
||||||
CHECK_FLOAT_EQ(m->evaluate(3), 108.0f, 0.001f);
|
CHECK_FLOAT_EQ(m->evaluate(3), 108.0f, 0.001f);
|
||||||
|
|||||||
@ -9,7 +9,7 @@ struct ValvePairFixture {
|
|||||||
ValvePairModel valve;
|
ValvePairModel valve;
|
||||||
|
|
||||||
ValvePairFixture(int on_delay_ms = 0, int off_delay_ms = 0)
|
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(json{{"on_delay_ms", on_delay_ms}, {"off_delay_ms", off_delay_ms}}, 0.0f) {
|
||||||
valve.action = action.get();
|
valve.action = action.get();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user