public void GetWeatherTest() { // Чистим файлы с погодными данными List<string> weatherLogList = new List<string>(); weatherLogList.Add("../../Test_Data/GetWeatherTest/yahoo.txt"); weatherLogList.Add("../../Test_Data/GetWeatherTest/yandex.txt"); foreach (string logfile in weatherLogList) using (StreamWriter writer = new StreamWriter(logfile)) { writer.Write(""); } // Список городов для сбора погодных данных List<City> citylist = new List<City>(); Dictionary<string, string> idlist = new Dictionary<string, string>(); // Челябинск idlist["Yahoo"] = "1997422"; idlist["Yandex"] = "28642"; City city1 = new City("Челябинск", idlist); citylist.Add(city1); // Москва idlist["Yahoo"] = "2122265"; idlist["Yandex"] = "27612"; City city2 = new City("Москва", idlist); citylist.Add(city2); // Собираем погодные данные для списка городов LittleLogger logger = new LittleLogger("../../Test_Data/GetWeatherTest/log.txt"); WeatherService wService = new WeatherService(logger); WeatherReader wReader = new WeatherReader(logger); foreach (City city in citylist) { // Погода с Yahoo! Weather wService.WeatherData = wReader.getYahooWeather(city); using (StreamWriter writer = new StreamWriter(weatherLogList[0], true)) { writer.WriteLine(city.Name + ':'); foreach (var item in wService.WeatherData) writer.WriteLine("{0}: {1}", item.Key, item.Value); writer.WriteLine(); } // Погода с Яндекс Погода wService.WeatherData = wReader.getYandexWeather(city); using (StreamWriter writer = new StreamWriter(weatherLogList[1], true)) { writer.WriteLine(city.Name + ':'); foreach (var item in wService.WeatherData) writer.WriteLine("{0}: {1}", item.Key, item.Value); writer.WriteLine(); } } }
// Метод для получения погодных данных с Yandex Погода // для города targetCity public Dictionary<string, string> getYandexWeather(City targetCity) { // Используя API Яндекс Погода, // делаем запрос на погодный сервис методом GET, // http://export.yandex.ru/weather-ng/forecasts/city.xml // где city - ID города. // Получаем ответ в виде XML. // Парсим XML строку, чтобы найти дату, температуру, // атм. давление, влажность воздуха, хар. ветра, облачность WeatherService wService = new WeatherService(Logger); XElement root = XElement.Parse( wService.Request("http://export.yandex.ru/weather-ng/forecasts/" + targetCity.IDList["Yandex"] + ".xml")); try { wService.WeatherData = new Dictionary<string, string>(); // Дата wService.WeatherData.Add("Date", root.Elements().ElementAt(0).Elements().ElementAt(3).Value.Insert(10, " ")); // Температура wService.WeatherData.Add("Temperature", root.Elements().ElementAt(0).Elements().ElementAt(4).Value + 'C'); // Атмосферное давление wService.WeatherData.Add("Pressure", root.Elements().ElementAt(0).Elements().ElementAt(24).Value + "мм. рт. столба"); // Влажность воздуха wService.WeatherData.Add("Wetness", root.Elements().ElementAt(0).Elements().ElementAt(23).Value + '%'); // Ветер wService.WeatherData.Add("Wind", "Направление: " + root.Elements().ElementAt(0).Elements().ElementAt(21).Value + " | " + root.Elements().ElementAt(0).Elements().ElementAt(22).Value + "м/c"); // Облачность wService.WeatherData.Add("Clouds", root.Elements().ElementAt(0).Elements().ElementAt(9).Value); } catch (Exception exception) { // Делаем запись в лог файл Logger.WriteLog(System.DateTime.Now.ToString() + " " + exception.TargetSite.ToString() + " " + exception.Message); } return wService.WeatherData; }
// Метод для получения погодных данных с Yahoo! Weather // для города targetCity public Dictionary<string, string> getYahooWeather(City targetCity) { // Используя API Yahoo! Weather (https://developer.yahoo.com/weather/), // делаем запрос на погодный сервис методом GET, // где w - ID города, u - единицы измерения. // Получаем ответ в виде XML. // Парсим XML строку, чтобы найти дату, температуру, // атм. давление, влажность воздуха, хар. ветра, облачность WeatherService wService = new WeatherService(Logger); XElement root = XElement.Parse( wService.Request("http://weather.yahooapis.com/forecastrss?w=" + targetCity.IDList["Yahoo"] + "&u=c")); try { wService.WeatherData = new Dictionary<string, string>(); // Дата wService.WeatherData.Add("Date", root.Elements().ElementAt(0).Elements("item").Elements().ElementAt(5).Attribute("date").Value); // Температура wService.WeatherData.Add("Temperature", root.Elements().ElementAt(0).Elements("item").Elements().ElementAt(5).Attribute("temp").Value + "C"); // Атмосферное давление wService.WeatherData.Add("Pressure", root.Elements().ElementAt(0).Elements().ElementAt(9).Attribute("pressure").Value + "millibars"); // Влажность воздуха wService.WeatherData.Add("Wetness", root.Elements().ElementAt(0).Elements().ElementAt(9).Attribute("humidity").Value + '%'); // Ветер wService.WeatherData.Add("Wind", "Direction: " + root.Elements().ElementAt(0).Elements().ElementAt(8).Attribute("direction").Value + "deegres. | " + root.Elements().ElementAt(0).Elements().ElementAt(8).Attribute("speed").Value + "km/h"); // Облачность wService.WeatherData.Add("Clouds", root.Elements().ElementAt(0).Elements("item").Elements().ElementAt(5).Attribute("text").Value); } catch (Exception exception) { // Делаем запись в лог файл Logger.WriteLog(System.DateTime.Now.ToString() + " " + exception.TargetSite.ToString() + " " + exception.Message); } return wService.WeatherData; }
public void WeatherBotTest() { // Строки подключения к БД List<string> cnctstrlist = new List<string>(); //Создаем подключение к БД и чистим таблицы БД EntityConnectionStringBuilder ConnectionString = new EntityConnectionStringBuilder(); ConnectionString.ProviderConnectionString = @"data source=../../Test_Data/WeatherBotTest/YahooWeatherDB.sqlite"; ConnectionString.Provider = @"System.Data.SQLite"; ConnectionString.Metadata = @"res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl"; cnctstrlist.Add(ConnectionString.ToString()); LittleLogger logger = new LittleLogger("../../Test_Data/WeatherBotTest/log.txt"); WeatherWriter wWriter = new WeatherWriter(logger); wWriter.ClearData(ConnectionString.ToString()); ConnectionString.ProviderConnectionString = @"data source=../../Test_Data/WeatherBotTest/YandexWeatherDB.sqlite"; cnctstrlist.Add(ConnectionString.ToString()); wWriter.ClearData(ConnectionString.ToString()); // Формируем список городов для мониторинга // погодных данных List<City> CityList = new List<City>(); Dictionary<string, string> idlist = new Dictionary<string, string>(); // Челябинск idlist["Yahoo"] = "1997422"; idlist["Yandex"] = "28642"; City city1 = new City("Челябинск", idlist); CityList.Add(city1); // Москва idlist["Yahoo"] = "2122265"; idlist["Yandex"] = "27612"; City city2 = new City("Москва", idlist); CityList.Add(city2); // Самара idlist["Yahoo"] = "2077746"; idlist["Yandex"] = "28807"; City city3 = new City("Самара", idlist); CityList.Add(city3); // Интервал сбора погодных данных int timeout = 0; // Создаем погодного бота для одноразовго сбора погодных данных WeatherBot wBot = new WeatherBot(CityList, timeout, logger, cnctstrlist); wBot.Start(); }
public void CityInitTest() { Dictionary<string, string> idlist1 = new Dictionary<string, string>(); Dictionary<string, string> idlist2 = new Dictionary<string, string>(); // Челябинск idlist1["Yahoo"] = "1997422"; idlist1["Yandex"] = "28642"; City city1 = new City("Челябинск", idlist1); // Москва idlist2["Yahoo"] = "2122265"; idlist2["Yandex"] = "27612"; City city2 = new City("Москва", idlist2); // Сравниваем ожидаемые и фактические значения Assert.AreEqual("Челябинск", city1.Name); Assert.AreEqual("Москва", city2.Name); CollectionAssert.AreEqual(idlist1, city1.IDList); CollectionAssert.AreEqual(idlist2, city2.IDList); }