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); }
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); }
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); }
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; } }