public void TestCoAqiExpectedCategories() { Tuple <int, int> result = CoAqi.CalculateAQIAndCategory(0); Assert.AreEqual(0, result.Item1); // 0 to 4.4 should be green for (double d = 0; d <= 4.4; d += 0.1) { result = CoAqi.CalculateAQIAndCategory(d); Assert.AreEqual(1, result.Item2); } // 4.5 to 9.4 should be yellow for (double d = 4.5; d <= 9.4; d += 0.1) { result = CoAqi.CalculateAQIAndCategory(d); Assert.AreEqual(2, result.Item2); } // 9.5 to 12.4 should be orange for (double d = 9.5; d <= 12.4; d += 0.1) { result = CoAqi.CalculateAQIAndCategory(d); Assert.AreEqual(3, result.Item2); } // 12.5 to 15.4 should be red for (double d = 12.5; d <= 15.4; d += 0.1) { result = CoAqi.CalculateAQIAndCategory(d); Assert.AreEqual(4, result.Item2); } // 15.5 to 30.4 should be purple for (double d = 15.5; d <= 30.4; d += 0.1) { result = CoAqi.CalculateAQIAndCategory(d); Assert.AreEqual(5, result.Item2); } // 30.5 to 50.4 should be maroon for (double d = 30.5; d <= 50.4; d += 0.1) { result = CoAqi.CalculateAQIAndCategory(d); Assert.AreEqual(6, result.Item2); } }
public IHttpActionResult AddStationDataPointSet([FromBody] DataPoint[] dataSet) { DateTime start = DateTime.Now; if (dataSet.Length == 0) { return(NotFound()); } foreach (DataPoint dataPoint in dataSet) { if (dataPoint.Category == 0 && dataPoint.AQI == 0 || dataPoint.AQI < 0) { Tuple <int, int> result = null; switch (dataPoint.Parameter.Name) { case "PM2.5": result = Pm25Aqi.CalculateAQIAndCategory(dataPoint.Value); dataPoint.AQI = result.Item1; dataPoint.Category = result.Item2; break; case "PM10": result = Pm10Aqi.CalculateAQIAndCategory(dataPoint.Value); dataPoint.AQI = result.Item1; dataPoint.Category = result.Item2; break; case "CO": result = CoAqi.CalculateAQIAndCategory(dataPoint.Value); dataPoint.AQI = result.Item1; dataPoint.Category = result.Item2; break; case "NO2": result = No2Aqi.CalculateAQIAndCategory(dataPoint.Value); dataPoint.AQI = result.Item1; dataPoint.Category = result.Item2; break; case "OZONE": result = OzoneAqi.CalculateAQIAndCategory(dataPoint.Value); dataPoint.AQI = result.Item1; dataPoint.Category = result.Item2; break; case "SO2": result = So2Aqi.CalculateAQIAndCategory(dataPoint.Value); dataPoint.AQI = result.Item1; dataPoint.Category = result.Item2; break; } } } IEnumerable <DataPoint> response = _stationRepo.SetDataPointsFromStation(dataSet); DateTime end = DateTime.Now; if (response == null) { return(NotFound()); } return(Ok(response)); }