コード例 #1
0
        public static string ConvertWeatherToString(SiteWeatherForecast weather)
        {
            string result  = String.Empty;
            var    source  = weather.Source;
            var    time    = DateTime.Now;
            var    line    = string.Concat(Enumerable.Repeat("-", 20));
            double counter = 0;

            if (weather.Forecast == null)
            {
                result += line + "\n\n";
                result += $"Failed to get data from {source}.\nError message: {weather.ErrorMessage}\n\n";
                result += line + "\n\n";
                return(result);
            }

            result += "\n" + line + $"\nSource: {source}\n\n";

            foreach (var day in weather.Forecast)
            {
                result += $"Data: {time.AddDays(counter).ToString("g")}\nCelsius temperature: {ProcessData(day.CelsiusTemperature, "°C")}\n" +
                          $"Fahrenheit temperature: {ProcessData(day.FahrenheitTemperature, "°F")}\nHumidity: {ProcessData(day.Humidity, "%")}\n" +
                          $"Cloud cover: {ProcessData(day.CloudCover, "%")}\nWind speed: {ProcessData(day.WindSpeed, "m/s")} \n" +
                          $"Wind direction: {ProcessData(day.WindDirection, "°")}\n";
                counter++;
            }

            result += line + "\n";

            return(result);
        }
コード例 #2
0
        public void ConvertWeatherToStringUnsuccefsulTest()
        {
            var    forecast = new SiteWeatherForecast("SomeSite", "Sate is down.");
            string result   = "--------------------\n\nFailed to get data from SomeSite.\nError message: Sate is down.\n\n--------------------\n\n";

            Assert.AreEqual(Tool.ConvertWeatherToString(forecast), result);
        }
コード例 #3
0
        public void ConvertWeatherToStringSuccefsulTest()
        {
            var day = new List <CityWeatherForecast>()
            {
                new CityWeatherForecast("10", "20", "80", "90", "5")
            };

            var    forecast = new SiteWeatherForecast("SomeSite", "No errors", day);
            string result   = $"\n--------------------\nSource: SomeSite\n\nData: {DateTime.Now.ToString("g")}\nCelsius temperature: 10°C\nFahrenheit temperature: 50°F" +
                              "\nHumidity: 80%\nCloud cover: 20%\nWind speed: 5m/s \nWind direction: 90°\n--------------------\n";

            Assert.AreEqual(Tool.ConvertWeatherToString(forecast), result);
        }
コード例 #4
0
        private void ChangeCurrentForecasts()
        {
            var currentForecast = new SiteWeatherForecast(displayer.SourceName, "Unexpected bug");
            var flag            = false;

            if (!conenctedSites.Exists(x => x == displayer.SourceName))
            {
                currentForecast = new SiteWeatherForecast(displayer.SourceName, "This site is off");
            }
            else if (forecasts.Exists(x => x.Source == displayer.SourceName && x.ErrorMessage == "Site is down"))
            {
                currentForecast = forecasts.Find(x => x.Source == displayer.SourceName);
            }
            else if (forecasts.Exists(x => x.Source == displayer.SourceName && x.ErrorMessage == "No errors"))
            {
                currentForecast = forecasts.Find(x => x.Source == displayer.SourceName);
                flag            = true;
            }
            else if (forecasts.Exists(x => x.Source == displayer.SourceName))
            {
                currentForecast = forecasts.Find(x => x.Source == displayer.SourceName);
            }
            else
            {
                currentForecast = new SiteWeatherForecast("Not Stated", "Not updated");
            }

            if (flag)
            {
                for (int i = 0; i < 7; i++)
                {
                    if (i == 0)
                    {
                        var forecast = currentForecast.Forecast[i];

                        currentForecasts[i].CelsiusTemperature    = forecast.CelsiusTemperature;
                        currentForecasts[i].FahrenheitTemperature = forecast.FahrenheitTemperature;
                        currentForecasts[i].CloudCover            = forecast.CloudCover;
                        currentForecasts[i].Humidity      = forecast.Humidity;
                        currentForecasts[i].WindDirection = forecast.WindDirection;
                        currentForecasts[i].WindSpeed     = forecast.WindSpeed;
                    }
                    else
                    {
                        currentForecasts[i].CelsiusTemperature = currentForecasts[i].FahrenheitTemperature = currentForecasts[i].CloudCover
                                                                                                                 = currentForecasts[i].Humidity = currentForecasts[i].WindDirection = currentForecasts[i].WindSpeed = "Not updated";
                    }
                }
            }
            else if (currentForecast.Forecast == null)
            {
                for (int i = 0; i < 7; i++)
                {
                    currentForecasts[i].CelsiusTemperature = currentForecasts[i].FahrenheitTemperature = currentForecasts[i].CloudCover
                                                                                                             = currentForecasts[i].Humidity = currentForecasts[i].WindDirection = currentForecasts[i].WindSpeed = currentForecast.ErrorMessage;
                }

                return;
            }

            for (int i = 0; i < currentForecast.Forecast.Count; i++)
            {
                var forecast = currentForecast.Forecast[i];

                currentForecasts[i].CelsiusTemperature    = forecast.CelsiusTemperature;
                currentForecasts[i].FahrenheitTemperature = forecast.FahrenheitTemperature;
                currentForecasts[i].CloudCover            = forecast.CloudCover;
                currentForecasts[i].Humidity      = forecast.Humidity;
                currentForecasts[i].WindDirection = forecast.WindDirection;
                currentForecasts[i].WindSpeed     = forecast.WindSpeed;
            }
        }