From 5bcbb7bc9aa79c44ac906ce9dbd4d257f27f0af8 Mon Sep 17 00:00:00 2001 From: Huamonarch Date: Mon, 18 May 2026 10:31:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20RNG=20=E6=B5=8B=E8=AF=95=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=20=E2=80=94=20BoolToggleModel=20PWM=20=E5=85=AC?= =?UTF-8?q?=E5=BC=8F=20+=20valve=20period=5Fms=20+=20registry=20defaultVal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TestProject/RNG/model/BoolToggleModel.h | 3 ++- TestProject/RNG/test/test_registry.cc | 4 ++-- TestProject/RNG/test/test_valve_pair.cc | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/TestProject/RNG/model/BoolToggleModel.h b/TestProject/RNG/model/BoolToggleModel.h index 217cc4f..60f2dc6 100644 --- a/TestProject/RNG/model/BoolToggleModel.h +++ b/TestProject/RNG/model/BoolToggleModel.h @@ -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(half); } }; diff --git a/TestProject/RNG/test/test_registry.cc b/TestProject/RNG/test/test_registry.cc index c287748..468240f 100644 --- a/TestProject/RNG/test/test_registry.cc +++ b/TestProject/RNG/test/test_registry.cc @@ -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); diff --git a/TestProject/RNG/test/test_valve_pair.cc b/TestProject/RNG/test/test_valve_pair.cc index 39c5363..fb206f5 100644 --- a/TestProject/RNG/test/test_valve_pair.cc +++ b/TestProject/RNG/test/test_valve_pair.cc @@ -9,7 +9,7 @@ struct ValvePairFixture { ValvePairModel valve; ValvePairFixture(int on_delay_ms = 0, int off_delay_ms = 0) - : action(std::make_unique(json{{"period_ms", 200}}, 0.0f)) + : action(std::make_unique(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(); }