diff options
author | Marcin Zelent <zelent.marcin@protonmail.com> | 2017-12-12 14:24:47 +0100 |
---|---|---|
committer | Marcin Zelent <zelent.marcin@protonmail.com> | 2017-12-12 14:24:47 +0100 |
commit | e4e7dbf553bfa17a39830e67d14d3715946beab3 (patch) | |
tree | bf6c34aaeecb938f9ea11612d214a887ceb5d7ca /PollutometerWebApi/AqiCalculator.cs | |
parent | 54d1019413958e0ba24b85007c1f5f97ca19a0b3 (diff) |
Added unit tests and fixed some bugs.
Diffstat (limited to 'PollutometerWebApi/AqiCalculator.cs')
-rw-r--r-- | PollutometerWebApi/AqiCalculator.cs | 188 |
1 files changed, 94 insertions, 94 deletions
diff --git a/PollutometerWebApi/AqiCalculator.cs b/PollutometerWebApi/AqiCalculator.cs index e00d792..58f6194 100644 --- a/PollutometerWebApi/AqiCalculator.cs +++ b/PollutometerWebApi/AqiCalculator.cs @@ -1,102 +1,102 @@ -using PollutometerWebApi.Models; - -namespace PollutometerWebApi -{ - public static class AqiCalculator - { - public static Aqi CalculateAqi(Reading reading) - { - double[,,] breakpoints = - { - { - {0, 4.4}, - {4.5, 9.4}, - {9.5, 12.4}, - {12.5, 15.4}, - {15.5, 30.4}, - {30.5, 40.4}, - {40.5, 50.4} - }, - { - {0.000, 0.034}, - {0.035, 0.144}, - {0.145, 0.224}, - {0.225, 0.304}, - {0.305, 0.604}, - {0.605, 0.804}, - {0.805, 1.004} - }, - { - {0, 0.05}, - {0.08, 0.10}, - {0.15, 0.20}, - {0.25, 0.31}, - {0.65, 1.24}, - {1.25, 1.64}, - {1.65, 2.04} - }, - { - {0, 50}, - {51, 100}, - {101, 150}, - {151, 200}, - {201, 300}, - {301, 400}, - {401, 500} - } - }; - +using PollutometerWebApi.Models;
+
+namespace PollutometerWebApi
+{
+ public static class AqiCalculator
+ {
+ public static Aqi CalculateAqi(Reading reading)
+ {
+ double[,,] breakpoints =
+ {
+ {
+ {0, 4.4},
+ {4.5, 9.4},
+ {9.5, 12.4},
+ {12.5, 15.4},
+ {15.5, 30.4},
+ {30.5, 40.4},
+ {40.5, 50.4}
+ },
+ {
+ {0.000, 0.034},
+ {0.035, 0.144},
+ {0.145, 0.224},
+ {0.225, 0.304},
+ {0.305, 0.604},
+ {0.605, 0.804},
+ {0.805, 1.004}
+ },
+ {
+ {0, 0.05},
+ {0.08, 0.10},
+ {0.15, 0.20},
+ {0.25, 0.31},
+ {0.65, 1.24},
+ {1.25, 1.64},
+ {1.65, 2.04}
+ },
+ {
+ {0, 50},
+ {51, 100},
+ {101, 150},
+ {151, 200},
+ {201, 300},
+ {301, 400},
+ {401, 500}
+ }
+ };
+
double i, c = 0, cLow = 0, cHigh = 0, iLow = 0, iHigh = 0;
- Aqi aqi = new Aqi(); - + Aqi aqi = new Aqi();
+
for (int x = 0; x < 4; x++)
- { - switch (x) - { - case 0: - c = reading.Co; - break; - case 1: - c = reading.So; - break; - case 2: - c = reading.No; - break; - } - - for (int y = 0; y < 7; y++) - { - if (c >= breakpoints[x, y, 0] && c <= breakpoints[x, y, 1]) - { - cLow = breakpoints[x, y, 0]; - cHigh = breakpoints[x, y, 1]; - iLow = breakpoints[3, y, 0]; - iHigh = breakpoints[3, y, 1]; - break; - } + {
+ switch (x)
+ {
+ case 0:
+ c = reading.Co;
+ break;
+ case 1:
+ c = reading.So;
+ break;
+ case 2:
+ c = reading.No;
+ break;
+ }
+
+ for (int y = 0; y < 7; y++)
+ {
+ if (c >= breakpoints[x, y, 0] && c <= breakpoints[x, y, 1])
+ {
+ cLow = breakpoints[x, y, 0];
+ cHigh = breakpoints[x, y, 1];
+ iLow = breakpoints[3, y, 0];
+ iHigh = breakpoints[3, y, 1];
+ break;
+ }
}
i = (iHigh - iLow) / (cHigh - cLow) * (c - cLow) + iLow;
- if (i > aqi.Value) + if (i > aqi.Value)
{
- aqi.Value = i; - switch (x) - { - case 0: - aqi.GasName = "CO"; - break; - case 1: - aqi.GasName = "SO"; - break; - case 2: - aqi.GasName = "NO"; - break; - } + aqi.Value = i;
+ switch (x)
+ {
+ case 0:
+ aqi.GasName = "CO";
+ break;
+ case 1:
+ aqi.GasName = "SO";
+ break;
+ case 2:
+ aqi.GasName = "NO";
+ break;
+ }
}
- } - - return aqi; - } - } -} + }
+
+ return aqi;
+ }
+ }
+}
|