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)
|
||||
: 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);
|
||||
}
|
||||
};
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user