summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorHank Liou <Hank.Liou@quantatw.com>2019-03-29 20:15:42 +0800
committerPatrick Venture <venture@google.com>2019-05-28 20:11:54 +0000
commit375f7098c232d38adcaab99b2f3ee561ded8c256 (patch)
tree231fdce4facbd958cdf4fa76c6bc633c6ad352c5 /test
parentded0ab5662212155e5d209343375e34ce9d34cdb (diff)
downloadphosphor-pid-control-375f7098c232d38adcaab99b2f3ee561ded8c256.tar.gz
phosphor-pid-control-375f7098c232d38adcaab99b2f3ee561ded8c256.zip
Add stepwise parser
The json parser cannot read stepwise setting from config. This change adds support to stepwise type of pid. Change-Id: I650c5bd6a0040bf25630e33b3bd36abf388f0cd8 Signed-off-by: Hank Liou <Hank.Liou@quantatw.com>
Diffstat (limited to 'test')
-rw-r--r--test/pid_json_unittest.cpp85
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
OpenPOWER on IntegriCloud