diff options
Diffstat (limited to 'test/pid_json_unittest.cpp')
-rw-r--r-- | test/pid_json_unittest.cpp | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/test/pid_json_unittest.cpp b/test/pid_json_unittest.cpp index 9d33789..2bd7d35 100644 --- a/test/pid_json_unittest.cpp +++ b/test/pid_json_unittest.cpp @@ -115,3 +115,88 @@ TEST(ZoneFromJson, oneZoneOnePidWithHysteresis) EXPECT_DOUBLE_EQ(zoneConfig[1].minThermalOutput, 3000.0); } + +TEST(ZoneFromJson, oneZoneOneStepwiseWithHysteresis) +{ + // Parse a valid configuration with one zone and one PID and the PID uses + // Hysteresis parameters. + + std::map<int64_t, conf::PIDConf> pidConfig; + std::map<int64_t, struct conf::ZoneConfig> zoneConfig; + + auto j2 = R"( + { + "zones" : [{ + "id": 1, + "minThermalOutput": 3000.0, + "failsafePercent": 75.0, + "pids": [{ + "name": "temp1", + "type": "stepwise", + "inputs": ["temp1"], + "setpoint": 30.0, + "pid": { + "samplePeriod": 0.1, + "positiveHysteresis": 1.0, + "negativeHysteresis": 1.0, + "isCeiling": false, + "reading": { + "0": 45, + "1": 46, + "2": 47, + "3": 48, + "4": 49, + "5": 50, + "6": 51, + "7": 52, + "8": 53, + "9": 54, + "10": 55, + "11": 56, + "12": 57, + "13": 58, + "14": 59, + "15": 60, + "16": 61, + "17": 62, + "18": 63, + "19": 64 + }, + "output": { + "0": 5000, + "1": 2400, + "2": 2600, + "3": 2800, + "4": 3000, + "5": 3200, + "6": 3400, + "7": 3600, + "8": 3800, + "9": 4000, + "10": 4200, + "11": 4400, + "12": 4600, + "13": 4800, + "14": 5000, + "15": 5200, + "16": 5400, + "17": 5600, + "18": 5800, + "19": 6000 + } + } + }] + }] + } + )"_json; + + std::tie(pidConfig, zoneConfig) = buildPIDsFromJson(j2); + EXPECT_EQ(pidConfig.size(), 1); + EXPECT_EQ(zoneConfig.size(), 1); + + EXPECT_EQ(pidConfig[1]["temp1"].type, "stepwise"); + EXPECT_DOUBLE_EQ(pidConfig[1]["temp1"].stepwiseInfo.positiveHysteresis, + 1.0); + + EXPECT_DOUBLE_EQ(zoneConfig[1].minThermalOutput, 3000.0); +}
\ No newline at end of file |