public void EmptyInput_EmptyOutput_Test()
        {
            string result      = null;
            var    parseResult = DiagramForecastParser.Parse(result);

            Assert.IsNull(parseResult);

            result      = string.Empty;
            parseResult = DiagramForecastParser.Parse(result);

            Assert.IsNull(parseResult);
        }
示例#2
0
        public async Task <ActionResult> Data()
        {
            var httpClient = new HttpClient();
            var uri        = GetGfsDataUrl(2017, "Jun", 1, 10, 0, 9, 50.5, 30.5);

            var result = await httpClient.GetStringAsync(uri);

            var data       = DiagramForecastParser.Parse(result);
            var jsonResult = new JsonResult
            {
                JsonRequestBehavior = JsonRequestBehavior.AllowGet,
                Data          = data,
                MaxJsonLength = int.MaxValue
            };

            return(jsonResult);
        }
        public async Task <List <MeteoStateModel> > Get(DateTime time, CoordinatePoint point, int hoursInterval)
        {
            try
            {
                var dataContext = new ForecastDataContext();

                var id = ForecastModel.GenerateId(point, time);

                var    forecastData = dataContext.Forecast.Where(forecast => forecast.Id.Equals(id, StringComparison.InvariantCulture));
                string resultString;

                if (await forecastData.AnyAsync())
                {
                    resultString = (await forecastData.SingleAsync()).Value;
                }
                else
                {
                    var httpClient = new HttpClient();
                    var uri        = GetGfsDataUrl(time, point, hoursInterval);
                    resultString = await httpClient.GetStringAsync(uri);

                    var forecastModel = new ForecastModel
                    {
                        Id       = id,
                        LoadTime = DateTime.UtcNow,
                        Time     = time,
                        Point    = point,
                        Value    = resultString
                    };

                    dataContext.Forecast.Add(forecastModel);
                    await dataContext.SaveChangesAsync();
                }

                return(DiagramForecastParser.Parse(resultString));
            }
            catch (Exception ex)
            {
            }
            return(null);
        }
        public void ValueInput_CorrectOutput_Test()
        {
            var result = DiagramForecastParser.Parse(ReturnValue6hours);

            Assert.IsNotNull(result);

            Assert.AreEqual(result.Count, 2);

            var firstHourData = result.First();

            Assert.AreEqual(firstHourData.ForecastModel, "GFS");
            Assert.AreEqual(firstHourData.Coordinates, new CoordinatePoint {
                Latitude = 50.5, Longitude = 30.5
            });
            Assert.AreEqual(firstHourData.DateTime, new DateTime(2017, 6, 1, 6, 0, 0));
            Assert.AreEqual(firstHourData.Cape, 69);
            Assert.AreEqual(firstHourData.CIN, -1);
            Assert.AreEqual(firstHourData.Helic, 99999);
            Assert.AreEqual(firstHourData.PW, 18);

            Assert.AreEqual(firstHourData.MeteoData.Count(), 31);

            var firstGridLine = firstHourData.MeteoData.First();

            Assert.AreEqual(firstGridLine.Altitude, 27.1272);
            Assert.AreEqual(firstGridLine.Pressure, 10000);
            Assert.AreEqual(firstGridLine.Temperature, 18.0);
            Assert.AreEqual(firstGridLine.DewPoint, 11.0);
            Assert.AreEqual(firstGridLine.WindDirection, 276);
            Assert.AreEqual(firstGridLine.WindSpeed, 6.6878);

            var lastGridLine = firstHourData.MeteoData.Last();

            Assert.AreEqual(lastGridLine.Altitude, 14758.7208);
            Assert.AreEqual(lastGridLine.Pressure, 10);
            Assert.AreEqual(lastGridLine.Temperature, -8.3);
            Assert.AreEqual(lastGridLine.DewPoint, 9999.9);
            Assert.AreEqual(lastGridLine.WindDirection, 102);
            Assert.AreEqual(lastGridLine.WindSpeed, 19.0344);
        }