Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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));
        }