public StormglassioParametersFiller()
 {
     stormglassRequestFiller = new StormglassioRequestURLFiller();
     stormglassMapper        = new StormglassioMapper();
 }
コード例 #2
0
        public void ShowWeatherTest()
        {
            var    tomorrowWebHelper = new Moq.Mock <IWebServerHelper>();
            var    testReader        = new Moq.Mock <IResponseReader>();
            string tomorrowJson      = "{\"data\":{\"timelines\":[{\"timestep\":\"current\",\"endTime\":" +
                                       "\"2022 - 04 - 23T08: 38:00Z\",\"startTime\":\"2022 - 04 - 23T08: 38:00Z\",\"intervals\"" +
                                       ":[{\"startTime\":\"2022 - 04 - 23T08: 38:00Z\",\"values\":{\"cloudCover\":100" +
                                       ",\"humidity\":55,\"precipitationIntensity\":0,\"temperature\":9.88," +
                                       "\"windDirection\":37.69,\"windSpeed\":5.5}}]}]}}";

            testReader.Setup(x => x.GetResponseInfo()).Returns(tomorrowJson);
            tomorrowWebHelper.Setup(x => x.MakeRequest()).Returns(true);
            TomorrowioMapper           tomorrowMapper        = new TomorrowioMapper();
            TomorrowioRequestURLFiller tomorrowRequestFiller = new TomorrowioRequestURLFiller();
            TomorrowioParametersFiller tomorrowParamsFiller  = new TomorrowioParametersFiller(tomorrowRequestFiller, tomorrowMapper);
            ConsoleWriter writer = new ConsoleWriter();
            TomorrowioWeatherDisplayer tomorrowDisplayer = new TomorrowioWeatherDisplayer(tomorrowWebHelper.Object,
                                                                                          tomorrowParamsFiller, testReader.Object, writer);
            var    stormglassWebHelper = new Moq.Mock <IWebServerHelper>();
            string stormglassJson      = "{\"hours\":[{\"airTemperature\":{\"noaa\":8.76},\"cloudCover\"" +
                                         ":{\"noaa\":99.63},\"humidity\":{\"noaa\":59.07},\"precipitation\":{\"noaa\":0.0}," +
                                         "\"time\":\"2022 - 04 - 23T08: 00:00 + 00:00\",\"windDirection\":{\"noaa\":41.56}," +
                                         "\"windSpeed\":{\"noaa\":3.42}}],\"meta\":{\"cost\":1,\"dailyQuota\":10,\"end\":" +
                                         "\"2022 - 04 - 23 08:37\",\"lat\":59.57,\"lng\":30.19,\"params\":[\"airTemperature" +
                                         "\",\"cloudCover\",\"humidity\",\"precipitation\",\"windDirection\",\"windSpeed\"]," +
                                         "\"requestCount\":1,\"source\":[\"noaa\"],\"start\":\"2022 - 04 - 23 08:00\"}}";

            stormglassWebHelper.Setup(x => x.MakeRequest()).Returns(true);
            StormglassioMapper           stormglassMaper         = new StormglassioMapper();
            StormglassioRequestURLFiller stormglassRequestFiller = new StormglassioRequestURLFiller();
            StormglassioParametersFiller stormglassParamsFiller  = new StormglassioParametersFiller(stormglassRequestFiller, stormglassMaper);
            StormglassioWeatherDisplayer stormglassDisplayer     = new StormglassioWeatherDisplayer(stormglassWebHelper.Object,
                                                                                                    stormglassParamsFiller, testReader.Object, writer);

            tomorrowDisplayer.DisplayWeather();
            testReader.Setup(x => x.GetResponseInfo()).Returns(stormglassJson);
            stormglassDisplayer.DisplayWeather();
            string tomorrowAnswer   = tomorrowDisplayer.Answer;
            string stormglassAnswer = stormglassDisplayer.Answer;
            Dictionary <string, string> testParameters = new Dictionary <string, string>();
            double temperature           = 9.88;
            double fahrenheitTemperature = temperature * ((double)9 / (double)5) + 32;
            string strFTemperature       = fahrenheitTemperature.ToString("0.##");

            strFTemperature = strFTemperature.Replace(',', '.');
            testParameters.Add("cloudCover", "100");
            testParameters.Add("temperature", "9.88");
            testParameters.Add("fahrenheitTemperature", strFTemperature);
            testParameters.Add("humidity", "55");
            testParameters.Add("precipitation", "0");
            testParameters.Add("windSpeed", "5.5");
            testParameters.Add("windDirection", "37.69");
            testParameters.Add("site", "tomorrow.io");

            string testAnswer = "";

            testAnswer += string.Format("This information is from {0}\n", testParameters["site"]);
            testAnswer += string.Format("Air temperature in Celsius - {0}, in Fahrenheits - {1}\n",
                                        testParameters["temperature"], testParameters["fahrenheitTemperature"]);
            testAnswer += string.Format("Humidity in percents - {0}\n", testParameters["humidity"]);
            testAnswer += string.Format("Cloud cover in percents - {0}\n", testParameters["cloudCover"]);
            testAnswer += string.Format("Wind speed in m/s - {0}\n", testParameters["windSpeed"]);
            testAnswer += string.Format("Wind direction in degrees - {0}\n\n", testParameters["windDirection"]);
            Assert.AreEqual(testParameters, tomorrowDisplayer.ParamsFiller.Parameters);
            Assert.AreEqual(testAnswer, tomorrowAnswer);

            testParameters        = new Dictionary <string, string>();
            temperature           = 8.76;
            fahrenheitTemperature = temperature * ((double)9 / (double)5) + 32;
            strFTemperature       = fahrenheitTemperature.ToString("0.##");
            strFTemperature       = strFTemperature.Replace(',', '.');
            testParameters.Add("cloudCover", "99.63");
            testParameters.Add("temperature", "8.76");
            testParameters.Add("fahrenheitTemperature", strFTemperature);
            testParameters.Add("humidity", "59.07");
            testParameters.Add("precipitation", "0.0");
            testParameters.Add("windSpeed", "3.42");
            testParameters.Add("windDirection", "41.56");
            testParameters.Add("site", "stormglass.io");

            testAnswer  = "";
            testAnswer += string.Format("This information is from {0}\n", testParameters["site"]);
            testAnswer += string.Format("Air temperature in Celsius - {0}, in Fahrenheits - {1}\n",
                                        testParameters["temperature"], testParameters["fahrenheitTemperature"]);
            testAnswer += string.Format("Humidity in percents - {0}\n", testParameters["humidity"]);
            testAnswer += string.Format("Cloud cover in percents - {0}\n", testParameters["cloudCover"]);
            testAnswer += string.Format("Wind speed in m/s - {0}\n", testParameters["windSpeed"]);
            testAnswer += string.Format("Wind direction in degrees - {0}\n\n", testParameters["windDirection"]);
            Assert.AreEqual(testAnswer, stormglassAnswer);
            Assert.AreEqual(testParameters, stormglassDisplayer.ParamsFiller.Parameters);

            testAnswer = "tomorrow.io is currently unavailable";
            tomorrowWebHelper.Setup(x => x.MakeRequest()).Returns(false);
            tomorrowWebHelper.Setup(x => x.Answer).Returns(testAnswer);
            tomorrowDisplayer = new TomorrowioWeatherDisplayer(tomorrowWebHelper.Object,
                                                               tomorrowParamsFiller, testReader.Object, writer);
            Assert.AreEqual(tomorrowDisplayer.DisplayWeather(), false);
            Assert.AreEqual(tomorrowDisplayer.ParamsFiller.Answer, testAnswer);

            testAnswer = "stormglass.io is currently unavailable";
            stormglassWebHelper.Setup(x => x.MakeRequest()).Returns(false);
            stormglassWebHelper.Setup(x => x.Answer).Returns(testAnswer);
            stormglassDisplayer = new StormglassioWeatherDisplayer(stormglassWebHelper.Object,
                                                                   stormglassParamsFiller, testReader.Object, writer);
            Assert.AreEqual(stormglassDisplayer.DisplayWeather(), false);
            Assert.AreEqual(stormglassDisplayer.ParamsFiller.Answer, testAnswer);
        }