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();
                }
            }
        }
Beispiel #3
0
        // Метод для получения погодных данных с 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;
        }
Beispiel #4
0
        // Метод для получения погодных данных с 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);
        }