public void HttpGetRequestTest() { LittleLogger logger = new LittleLogger("../../Test_Data/HttpGetRequestTest/log.txt"); WeatherService wService = new WeatherService(logger); // Результат запроса string str1 = wService.Request("http://yandex.ru/"); string str2 = wService.Request("http://news.yandex.ru/"); // Сохраним результат запроса в файл using (StreamWriter writer = new StreamWriter("../../Test_Data/HttpGetRequestTest/request_1.htm")) { writer.Write(str1); } using (StreamWriter writer = new StreamWriter("../../Test_Data/HttpGetRequestTest/request_2.htm")) { writer.Write(str2); } // Содержат ли результат запроса заданные элементы StringAssert.Contains(str1, "https://disk.yandex.ru/"); StringAssert.Contains(str2, "Яндекс.Новости: Главные новости"); }
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(); } } }
// Метод для получения погодных данных с 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; }
// Метод для получения погодных данных с 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; }
public void SaveWeatherToDBTest_1() { //Создаем подключение к БД и чистим таблицы БД EntityConnectionStringBuilder ConnectionString = new EntityConnectionStringBuilder(); ConnectionString.ProviderConnectionString = @"data source=../../Test_Data/SaveWeatherToDBTest_1/testDB.sqlite"; ConnectionString.Provider = @"System.Data.SQLite"; ConnectionString.Metadata = @"res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl"; LittleLogger logger = new LittleLogger("../../Test_Data/SaveWeatherToDBTest_1/log.txt"); WeatherWriter wWriter = new WeatherWriter(logger); wWriter.ClearData(ConnectionString.ToString()); // Формируем погодные данные для записи в таблицы БД WeatherService wService = new WeatherService(logger); wService.WeatherData.Add("Date", "Tue, 17 Jun 2014 12:29 pm MSK"); wService.WeatherData.Add("Temperature", "17C"); wService.WeatherData.Add("Pressure", "982.05millibars"); wService.WeatherData.Add("Wetness", "52%"); wService.WeatherData.Add("Wind", "Direction: 210deegres. | 25.75km/h"); wService.WeatherData.Add("Clouds", "Mostly Cloudy"); // Сохраняем погодные данные в таблицы БД wWriter.City1Save(ConnectionString.ToString(), wService.WeatherData); wWriter.City2Save(ConnectionString.ToString(), wService.WeatherData); wWriter.City3Save(ConnectionString.ToString(), wService.WeatherData); // Создаем подключение к БД и извлекаем данные из таблиц WeatherDBEntity WeatherDB = new WeatherDBEntity(ConnectionString.ToString()); // Данные из 1-ой таблицы WeatherService wService_t1 = new WeatherService(logger); wService_t1.WeatherData.Add("Date", WeatherDB.City1Entity.ToList<City1Entity>()[0].Date); wService_t1.WeatherData.Add("Temperature", WeatherDB.City1Entity.ToList<City1Entity>()[0].Temperature); wService_t1.WeatherData.Add("Pressure", WeatherDB.City1Entity.ToList<City1Entity>()[0].Pressure); wService_t1.WeatherData.Add("Wetness", WeatherDB.City1Entity.ToList<City1Entity>()[0].Wetness); wService_t1.WeatherData.Add("Wind", WeatherDB.City1Entity.ToList<City1Entity>()[0].Wind); wService_t1.WeatherData.Add("Clouds", WeatherDB.City1Entity.ToList<City1Entity>()[0].Clouds); // Данные из 2-ой таблицы WeatherService wService_t2 = new WeatherService(logger); wService_t2.WeatherData.Add("Date", WeatherDB.City2Entity.ToList<City2Entity>()[0].Date); wService_t2.WeatherData.Add("Temperature", WeatherDB.City2Entity.ToList<City2Entity>()[0].Temperature); wService_t2.WeatherData.Add("Pressure", WeatherDB.City2Entity.ToList<City2Entity>()[0].Pressure); wService_t2.WeatherData.Add("Wetness", WeatherDB.City2Entity.ToList<City2Entity>()[0].Wetness); wService_t2.WeatherData.Add("Wind", WeatherDB.City2Entity.ToList<City2Entity>()[0].Wind); wService_t2.WeatherData.Add("Clouds", WeatherDB.City2Entity.ToList<City2Entity>()[0].Clouds); // Данные из 3-ой таблицы WeatherService wService_t3 = new WeatherService(logger); wService_t3.WeatherData.Add("Date", WeatherDB.City3Entity.ToList<City3Entity>()[0].Date); wService_t3.WeatherData.Add("Temperature", WeatherDB.City3Entity.ToList<City3Entity>()[0].Temperature); wService_t3.WeatherData.Add("Pressure", WeatherDB.City3Entity.ToList<City3Entity>()[0].Pressure); wService_t3.WeatherData.Add("Wetness", WeatherDB.City3Entity.ToList<City3Entity>()[0].Wetness); wService_t3.WeatherData.Add("Wind", WeatherDB.City3Entity.ToList<City3Entity>()[0].Wind); wService_t3.WeatherData.Add("Clouds", WeatherDB.City3Entity.ToList<City3Entity>()[0].Clouds); // Сравниваем ожидаемые и фактические значения CollectionAssert.AreEqual(wService.WeatherData, wService_t1.WeatherData); CollectionAssert.AreEqual(wService.WeatherData, wService_t2.WeatherData); CollectionAssert.AreEqual(wService.WeatherData, wService_t3.WeatherData); }