From 8284ce3d518d8aa5f3fbbc9066caf5d1f8dc4d98 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Wed, 24 Oct 2018 15:03:31 +0300 Subject: [PATCH 01/39] 4: added assumptions and architecture --- tdd_intro/homework/04_weather_client/test.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 346ea809..c3cb506d 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -44,6 +44,19 @@ Each line means "" : "": 2. Implement IWeatherClient using fake server. */ +/* + Assumptions: +1. To get average/minimal/maximum marks WeatherClient asks server for weather for times 03:00, 09:00, 15:00 and 21:00 and then calculates necessary value based on these data. +2. The weather is always returned from server in the further format 20;181;5.1 or as empty string in case of invalid request. The server returns data in valid format. + + Architecture: +1. WeatherClient is initialized with the implementation of IWeatherServer with functionality to get raw string with weather. +2. Weather client parses the obtained raw string into Weather structure and uses it then to calculate average/minimal/maximum marks. +3. There is a separate utils method ConvertStringToWeather to parse raw string to Weather object and list if strings to list of Weather objects. +4. WeatherClient also has separate method GetWeatherMarksForDay for getting weather for all time periods during the day; returns list of strings + +*/ + #include #include From 5ec515405d3e410d65633d22652a172672aab198 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Wed, 24 Oct 2018 18:13:45 +0300 Subject: [PATCH 02/39] 4: added steps (list of tests) --- tdd_intro/homework/04_weather_client/test.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index c3cb506d..d8f1e225 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -55,6 +55,21 @@ Each line means "" : "": 3. There is a separate utils method ConvertStringToWeather to parse raw string to Weather object and list if strings to list of Weather objects. 4. WeatherClient also has separate method GetWeatherMarksForDay for getting weather for all time periods during the day; returns list of strings + Steps: + 1. Check ConvertStringToWeather with empty string + 2. Check ConvertStringToWeather with valid weather string + 3. Check ConvertStringToWeather with valid list of strings + 4. Implement IWeatherServer and IWeatherClient with stubs + 5. Check GetAverageTemperature for 31.08 + 6. Acceptance for GetAverageTemperature: check for 01.09, 02.09 + 7. Check GetMinimumTemperature for 31.08 + 8. Acceptance for GetMinimumTemperature: check for 01.09, 02.09 + 9. Check GetMaximumTemperature for 31.08 + 10. Acceptance for GetMaximumTemperature: check for 01.09, 02.09 + 11. Check GetAverageWindDirection for 31.08 + 12. Acceptance for GetAverageWindDirection: check for 01.09, 02.09 + 13. Check GetMaximumWindSpeed for 31.08 + 14. Acceptance for GetMaximumWindSpeed: check for 01.09, 02.09 */ #include From 0ac23db0f8945fbeaa3656b6ec8af51352b0a27d Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Wed, 24 Oct 2018 18:17:03 +0300 Subject: [PATCH 03/39] 4: red --- tdd_intro/homework/04_weather_client/test.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index d8f1e225..406722bd 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -107,3 +107,9 @@ class IWeatherClient virtual double GetAverageWindDirection(IWeatherServer& server, const std::string& date) = 0; virtual double GetMaximumWindSpeed(IWeatherServer& server, const std::string& date) = 0; }; + + +TEST(ConvertStringToWeather, EmptyString) +{ + EXPECT_THROW(ConvertStringToWeather(""), std::runtime_error); +} From 47df687c184b884b7bd25e9ff4c8e465ce346693 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Wed, 24 Oct 2018 18:17:51 +0300 Subject: [PATCH 04/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 406722bd..6aca30f5 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -109,6 +109,11 @@ class IWeatherClient }; +Weather ConvertStringToWeather(const std::string& rawData) +{ + throw std::runtime_error("Invalid format"); +} + TEST(ConvertStringToWeather, EmptyString) { EXPECT_THROW(ConvertStringToWeather(""), std::runtime_error); From a7a0048b2e0b60d612ca88cdf8c7c1f49bb6d9ba Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Wed, 24 Oct 2018 18:19:14 +0300 Subject: [PATCH 05/39] 4: refactored --- tdd_intro/homework/04_weather_client/test.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 6aca30f5..1fecbccb 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -111,7 +111,12 @@ class IWeatherClient Weather ConvertStringToWeather(const std::string& rawData) { - throw std::runtime_error("Invalid format"); + if(rawData.empty()) + { + throw std::runtime_error("Invalid format"); + } + + return Weather(); } TEST(ConvertStringToWeather, EmptyString) From 99276b4f6dfaa47510daac5b8f56928d1c7334ed Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 09:08:04 +0300 Subject: [PATCH 06/39] 4: red --- tdd_intro/homework/04_weather_client/test.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 1fecbccb..1058e706 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -80,7 +80,8 @@ struct Weather short temperature = 0; unsigned short windDirection = 0; double windSpeed = 0; - bool operator==(const Weather& right) + + bool operator==(const Weather& right) const { return temperature == right.temperature && windDirection == right.windDirection && @@ -123,3 +124,9 @@ TEST(ConvertStringToWeather, EmptyString) { EXPECT_THROW(ConvertStringToWeather(""), std::runtime_error); } + +TEST(ConvertStringToWeather, ValidString) +{ + Weather etalon (20, 181, 5.1); + EXPECT_EQ(etalon, ConvertStringToWeather("20;181;5.1")); +} From 1ecb982355524e0adf4c08af871d44c393e89315 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 09:48:05 +0300 Subject: [PATCH 07/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 1058e706..28bfe539 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -81,6 +81,13 @@ struct Weather unsigned short windDirection = 0; double windSpeed = 0; + Weather() {} + Weather (const short tempr, const unsigned short direction, const double speed): + temperature(tempr), + windDirection(direction), + windSpeed(speed) + {} + bool operator==(const Weather& right) const { return temperature == right.temperature && @@ -117,7 +124,17 @@ Weather ConvertStringToWeather(const std::string& rawData) throw std::runtime_error("Invalid format"); } - return Weather(); + Weather weather; + + std::istringstream stream(rawData); + stream >> weather.temperature; + + stream.ignore(); + stream >> weather.windDirection; + stream.ignore(); + stream >> weather.windSpeed; + + return weather; } TEST(ConvertStringToWeather, EmptyString) From 31c2d01cbdd5aa7644676343bfa3fc4e80f47f73 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 09:48:42 +0300 Subject: [PATCH 08/39] 4: refactored --- tdd_intro/homework/04_weather_client/test.cpp | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 28bfe539..2cf912cf 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -77,16 +77,9 @@ Each line means "" : "": struct Weather { - short temperature = 0; - unsigned short windDirection = 0; - double windSpeed = 0; - - Weather() {} - Weather (const short tempr, const unsigned short direction, const double speed): - temperature(tempr), - windDirection(direction), - windSpeed(speed) - {} + short temperature; + unsigned short windDirection; + double windSpeed; bool operator==(const Weather& right) const { @@ -144,6 +137,6 @@ TEST(ConvertStringToWeather, EmptyString) TEST(ConvertStringToWeather, ValidString) { - Weather etalon (20, 181, 5.1); + Weather etalon {20, 181, 5.1}; EXPECT_EQ(etalon, ConvertStringToWeather("20;181;5.1")); } From b3ad82cb1359886e543b1e6527679cecbb869fb9 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 09:56:48 +0300 Subject: [PATCH 09/39] 4: red --- tdd_intro/homework/04_weather_client/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 2cf912cf..a14ec4be 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -140,3 +140,8 @@ TEST(ConvertStringToWeather, ValidString) Weather etalon {20, 181, 5.1}; EXPECT_EQ(etalon, ConvertStringToWeather("20;181;5.1")); } + +TEST(ConvertStringListToWeatherList, EmptyList) +{ + EXPECT_EQ(std::vector(), ConvertStringToWeather(std::vector())); +} From bef1275d4342acec279985909af02cecfe2bcc2f Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 09:57:22 +0300 Subject: [PATCH 10/39] 3: green --- tdd_intro/homework/04_weather_client/test.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index a14ec4be..7c037e0e 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -130,6 +130,12 @@ Weather ConvertStringToWeather(const std::string& rawData) return weather; } +std::vector ConvertStringToWeather(const std::vector& rawDataList) +{ + std::vector result; + return result; +} + TEST(ConvertStringToWeather, EmptyString) { EXPECT_THROW(ConvertStringToWeather(""), std::runtime_error); From 41f7d973b8195d8fb675e99fa8d99f0126c0be1d Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 10:02:44 +0300 Subject: [PATCH 11/39] 4: red --- tdd_intro/homework/04_weather_client/test.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 7c037e0e..9e1f2017 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -151,3 +151,11 @@ TEST(ConvertStringListToWeatherList, EmptyList) { EXPECT_EQ(std::vector(), ConvertStringToWeather(std::vector())); } + +TEST(ConvertStringListToWeatherList, ValidList) +{ + std::vector inputData = {"20;181;5.1", "23;204;4.9"}; + std::vector etalon = {Weather {20, 181, 5.1}, + Weather {23, 204, 4.9}}; + EXPECT_EQ(etalon,ConvertStringToWeather(inputData)); +} From 6898ed892f0e0eba5a2a763a3eb9b7eb87d6edfe Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 10:03:27 +0300 Subject: [PATCH 12/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 9e1f2017..8d542404 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -133,6 +133,10 @@ Weather ConvertStringToWeather(const std::string& rawData) std::vector ConvertStringToWeather(const std::vector& rawDataList) { std::vector result; + for(const auto& data: rawDataList) + { + result.push_back(ConvertStringToWeather(data)); + } return result; } From db7562aee032cfa8a590036abaee741fec2b2d05 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 10:06:26 +0300 Subject: [PATCH 13/39] 4: refactored --- tdd_intro/homework/04_weather_client/test.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 8d542404..2d173c1a 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -89,6 +89,9 @@ struct Weather } }; +using WeatherList = std::vector; +using StringList = std::vector; + class IWeatherServer { public: @@ -109,7 +112,6 @@ class IWeatherClient virtual double GetMaximumWindSpeed(IWeatherServer& server, const std::string& date) = 0; }; - Weather ConvertStringToWeather(const std::string& rawData) { if(rawData.empty()) @@ -130,7 +132,7 @@ Weather ConvertStringToWeather(const std::string& rawData) return weather; } -std::vector ConvertStringToWeather(const std::vector& rawDataList) +WeatherList ConvertStringToWeather(const StringList& rawDataList) { std::vector result; for(const auto& data: rawDataList) @@ -153,13 +155,13 @@ TEST(ConvertStringToWeather, ValidString) TEST(ConvertStringListToWeatherList, EmptyList) { - EXPECT_EQ(std::vector(), ConvertStringToWeather(std::vector())); + EXPECT_EQ(WeatherList(), ConvertStringToWeather(std::vector())); } TEST(ConvertStringListToWeatherList, ValidList) { - std::vector inputData = {"20;181;5.1", "23;204;4.9"}; - std::vector etalon = {Weather {20, 181, 5.1}, - Weather {23, 204, 4.9}}; + StringList inputData = {"20;181;5.1", "23;204;4.9"}; + WeatherList etalon = {Weather {20, 181, 5.1}, + Weather {23, 204, 4.9}}; EXPECT_EQ(etalon,ConvertStringToWeather(inputData)); } From 7970879bbd8671b0c3f355a1d55c6e5cc85881bc Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 10:09:52 +0300 Subject: [PATCH 14/39] 4: implemented architecture requirements --- tdd_intro/homework/04_weather_client/test.cpp | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 2d173c1a..4d509b51 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -112,6 +112,40 @@ class IWeatherClient virtual double GetMaximumWindSpeed(IWeatherServer& server, const std::string& date) = 0; }; +class WeatherClient : public IWeatherClient +{ +public: + WeatherClient(IWeatherServer& serverImpl): m_server(serverImpl) + { } + + virtual double GetAverageTemperature(IWeatherServer& server, const std::string& date) override + { + return 0; + } + + virtual double GetMinimumTemperature(IWeatherServer& server, const std::string& date) override + { + return 0; + } + + virtual double GetMaximumTemperature(IWeatherServer& server, const std::string& date) override + { + return 0; + } + + virtual double GetAverageWindDirection(IWeatherServer& server, const std::string& date) override + { + return 0; + } + + virtual double GetMaximumWindSpeed(IWeatherServer& server, const std::string& date) override + { + return 0; + } +private: + IWeatherServer& m_server; +}; + Weather ConvertStringToWeather(const std::string& rawData) { if(rawData.empty()) From eccbb66dccfdeb6b2145beb3cbc71c2ea954649e Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 11:13:35 +0300 Subject: [PATCH 15/39] 4: red --- tdd_intro/homework/04_weather_client/test.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 4d509b51..f610f164 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -199,3 +199,15 @@ TEST(ConvertStringListToWeatherList, ValidList) Weather {23, 204, 4.9}}; EXPECT_EQ(etalon,ConvertStringToWeather(inputData)); } + + +TEST(GetWeatherListForDate, Date3108) +{ + FakeWeatherServer server; + WeatherClient client(server); + WeatherList etalon = {Weather {20, 181, 5.1}, + Weather {23, 204, 4.9}, + Weather {33, 193, 4.3}, + Weather {26, 179, 4.5},}; + EXPECT_EQ(client.GetWeatherMarksForDay("31.08.2018")); +} From acfc3c474f80648709f2745b07958421d77f46b0 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 11:16:33 +0300 Subject: [PATCH 16/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index f610f164..fc90dcfa 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -112,6 +112,14 @@ class IWeatherClient virtual double GetMaximumWindSpeed(IWeatherServer& server, const std::string& date) = 0; }; +class FakeWeatherServer : public IWeatherServer +{ + virtual std::string GetWeather(const std::string& request) override + { + return ""; + } +}; + class WeatherClient : public IWeatherClient { public: @@ -142,6 +150,15 @@ class WeatherClient : public IWeatherClient { return 0; } + + WeatherList GetWeatherMarksForDay(const std::string& date) + { + return {Weather {20, 181, 5.1}, + Weather {23, 204, 4.9}, + Weather {33, 193, 4.3}, + Weather {26, 179, 4.5}}; + } + private: IWeatherServer& m_server; }; @@ -208,6 +225,6 @@ TEST(GetWeatherListForDate, Date3108) WeatherList etalon = {Weather {20, 181, 5.1}, Weather {23, 204, 4.9}, Weather {33, 193, 4.3}, - Weather {26, 179, 4.5},}; - EXPECT_EQ(client.GetWeatherMarksForDay("31.08.2018")); + Weather {26, 179, 4.5}}; + EXPECT_EQ(etalon, client.GetWeatherMarksForDay("31.08.2018")); } From 6e2c224582b3273e14bf91dfaa2984c7f70772b6 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 11:22:39 +0300 Subject: [PATCH 17/39] 4: refactored --- tdd_intro/homework/04_weather_client/test.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index fc90dcfa..5faef7dd 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -153,10 +153,15 @@ class WeatherClient : public IWeatherClient WeatherList GetWeatherMarksForDay(const std::string& date) { - return {Weather {20, 181, 5.1}, - Weather {23, 204, 4.9}, - Weather {33, 193, 4.3}, - Weather {26, 179, 4.5}}; + if (date == "31.08.2018") + { + return {Weather {20, 181, 5.1}, + Weather {23, 204, 4.9}, + Weather {33, 193, 4.3}, + Weather {26, 179, 4.5}}; + } + + return WeatherList(); } private: @@ -228,3 +233,4 @@ TEST(GetWeatherListForDate, Date3108) Weather {26, 179, 4.5}}; EXPECT_EQ(etalon, client.GetWeatherMarksForDay("31.08.2018")); } + From 212aa8a17ae02ef85a616fd79e0b71662fbc92ee Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 11:24:21 +0300 Subject: [PATCH 18/39] 4: red --- tdd_intro/homework/04_weather_client/test.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 5faef7dd..2fe106d5 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -234,3 +234,14 @@ TEST(GetWeatherListForDate, Date3108) EXPECT_EQ(etalon, client.GetWeatherMarksForDay("31.08.2018")); } +TEST(GetWeatherListForDate, Date0109) +{ + FakeWeatherServer server; + WeatherClient client(server); + WeatherList etalon = {Weather {19, 176, 4.2}, + Weather {22, 131, 4.9}, + Weather {31, 109, 4.0}, + Weather {24, 127, 4.1}}; + EXPECT_EQ(etalon, client.GetWeatherMarksForDay("01.09.2018")); +} + From cf837f5c9573fdc7cd63d700adfe478e895b0277 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 11:25:51 +0300 Subject: [PATCH 19/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 2fe106d5..215fcb2f 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -160,6 +160,13 @@ class WeatherClient : public IWeatherClient Weather {33, 193, 4.3}, Weather {26, 179, 4.5}}; } + else if(date == "01.09.2018") + { + return {Weather {19, 176, 4.2}, + Weather {22, 131, 4.9}, + Weather {31, 109, 4.0}, + Weather {24, 127, 4.1}}; + } return WeatherList(); } From 70412666fa2bdaa03e8012264858c9c279d75a43 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 11:32:59 +0300 Subject: [PATCH 20/39] 4: red --- tdd_intro/homework/04_weather_client/test.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 215fcb2f..3a018179 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -252,3 +252,13 @@ TEST(GetWeatherListForDate, Date0109) EXPECT_EQ(etalon, client.GetWeatherMarksForDay("01.09.2018")); } +TEST(GetWeatherListForDate, IncorrectServerRequest) +{ + FakeWeatherServer server; + WeatherClient client(server); + WeatherList etalon = {Weather {19, 176, 4.2}, + Weather {22, 131, 4.9}, + Weather {31, 109, 4.0}, + Weather {24, 127, 4.1}}; + EXPECT_THROW(client.GetWeatherMarksForDay("01,09.2018"), std::runtime_error); +} From 793a6b69efc2675b945b4d8cb07e7b37ef9a2940 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 11:44:22 +0300 Subject: [PATCH 21/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 44 ++++++++++++------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 3a018179..1327266b 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -112,11 +112,33 @@ class IWeatherClient virtual double GetMaximumWindSpeed(IWeatherServer& server, const std::string& date) = 0; }; +Weather ConvertStringToWeather(const std::string& rawData); +WeatherList ConvertStringToWeather(const StringList& rawDataList); + class FakeWeatherServer : public IWeatherServer { virtual std::string GetWeather(const std::string& request) override { - return ""; + + static const std::map weatherResults = {{"31.08.2018;03:00","20;181;5.1"}, + {"31.08.2018;09:00", "23;204;4.9"}, + {"31.08.2018;15:00", "33;193;4.3"}, + {"31.08.2018;21:00", "26;179;4.5"}, + + {"01.09.2018;03:00", "19;176;4.2"}, + {"01.09.2018;09:00", "22;131;4.1"}, + {"01.09.2018;15:00", "31;109;4.0"}, + {"01.09.2018;21:00", "24;127;4.1"}, + }; + auto valueIt = weatherResults.find(request); + if(valueIt != weatherResults.end()) + { + return valueIt->second; + } + else + { + return ""; + } } }; @@ -153,22 +175,14 @@ class WeatherClient : public IWeatherClient WeatherList GetWeatherMarksForDay(const std::string& date) { - if (date == "31.08.2018") - { - return {Weather {20, 181, 5.1}, - Weather {23, 204, 4.9}, - Weather {33, 193, 4.3}, - Weather {26, 179, 4.5}}; - } - else if(date == "01.09.2018") + StringList weatherResults = {}; + const StringList times = {"03:00", "09:00", "15:00", "21:00"}; + for(const auto& time: times) { - return {Weather {19, 176, 4.2}, - Weather {22, 131, 4.9}, - Weather {31, 109, 4.0}, - Weather {24, 127, 4.1}}; + weatherResults.push_back(m_server.GetWeather(date + ";" + time)); } - return WeatherList(); + return ConvertStringToWeather(weatherResults); } private: @@ -246,7 +260,7 @@ TEST(GetWeatherListForDate, Date0109) FakeWeatherServer server; WeatherClient client(server); WeatherList etalon = {Weather {19, 176, 4.2}, - Weather {22, 131, 4.9}, + Weather {22, 131, 4.1}, Weather {31, 109, 4.0}, Weather {24, 127, 4.1}}; EXPECT_EQ(etalon, client.GetWeatherMarksForDay("01.09.2018")); From 8608b64296187ba721f1538ce62b0eb5a7a6fe17 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 11:49:28 +0300 Subject: [PATCH 22/39] 4: refactored --- tdd_intro/homework/04_weather_client/test.cpp | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 1327266b..af353858 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -145,9 +145,6 @@ class FakeWeatherServer : public IWeatherServer class WeatherClient : public IWeatherClient { public: - WeatherClient(IWeatherServer& serverImpl): m_server(serverImpl) - { } - virtual double GetAverageTemperature(IWeatherServer& server, const std::string& date) override { return 0; @@ -173,20 +170,17 @@ class WeatherClient : public IWeatherClient return 0; } - WeatherList GetWeatherMarksForDay(const std::string& date) + WeatherList GetWeatherMarksForDay(IWeatherServer& server, const std::string& date) { StringList weatherResults = {}; const StringList times = {"03:00", "09:00", "15:00", "21:00"}; for(const auto& time: times) { - weatherResults.push_back(m_server.GetWeather(date + ";" + time)); + weatherResults.push_back(server.GetWeather(date + ";" + time)); } return ConvertStringToWeather(weatherResults); } - -private: - IWeatherServer& m_server; }; Weather ConvertStringToWeather(const std::string& rawData) @@ -247,32 +241,32 @@ TEST(ConvertStringListToWeatherList, ValidList) TEST(GetWeatherListForDate, Date3108) { FakeWeatherServer server; - WeatherClient client(server); + WeatherClient client; WeatherList etalon = {Weather {20, 181, 5.1}, Weather {23, 204, 4.9}, Weather {33, 193, 4.3}, Weather {26, 179, 4.5}}; - EXPECT_EQ(etalon, client.GetWeatherMarksForDay("31.08.2018")); + EXPECT_EQ(etalon, client.GetWeatherMarksForDay(server, "31.08.2018")); } TEST(GetWeatherListForDate, Date0109) { FakeWeatherServer server; - WeatherClient client(server); + WeatherClient client; WeatherList etalon = {Weather {19, 176, 4.2}, Weather {22, 131, 4.1}, Weather {31, 109, 4.0}, Weather {24, 127, 4.1}}; - EXPECT_EQ(etalon, client.GetWeatherMarksForDay("01.09.2018")); + EXPECT_EQ(etalon, client.GetWeatherMarksForDay(server, "01.09.2018")); } TEST(GetWeatherListForDate, IncorrectServerRequest) { FakeWeatherServer server; - WeatherClient client(server); + WeatherClient client; WeatherList etalon = {Weather {19, 176, 4.2}, Weather {22, 131, 4.9}, Weather {31, 109, 4.0}, Weather {24, 127, 4.1}}; - EXPECT_THROW(client.GetWeatherMarksForDay("01,09.2018"), std::runtime_error); + EXPECT_THROW(client.GetWeatherMarksForDay(server, "01,09.2018"), std::runtime_error); } From 8752880e7ea1aa107c527d0d23ddd9c9e44cb688 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 11:50:05 +0300 Subject: [PATCH 23/39] 4: red --- tdd_intro/homework/04_weather_client/test.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index af353858..21dc88bb 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -270,3 +270,10 @@ TEST(GetWeatherListForDate, IncorrectServerRequest) Weather {24, 127, 4.1}}; EXPECT_THROW(client.GetWeatherMarksForDay(server, "01,09.2018"), std::runtime_error); } + +TEST(GetAverageTemperature, For3108) +{ + FakeWeatherServer server; + WeatherClient client; + EXPECT_EQ(24, client.GetAverageTemperature(server, "31.08.2018")); +} From 42d65bd2e4f14c359cf928cb681cc3e4e7665030 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 11:58:48 +0300 Subject: [PATCH 24/39] 4: fixed expected reuslt --- tdd_intro/homework/04_weather_client/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 21dc88bb..2099ae3a 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -275,5 +275,5 @@ TEST(GetAverageTemperature, For3108) { FakeWeatherServer server; WeatherClient client; - EXPECT_EQ(24, client.GetAverageTemperature(server, "31.08.2018")); + EXPECT_EQ(25.5, client.GetAverageTemperature(server, "31.08.2018")); } From ee382d6c04fc6405e4c25d215cf91c4f1c803a17 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 11:59:09 +0300 Subject: [PATCH 25/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 2099ae3a..d5264d20 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -147,7 +147,13 @@ class WeatherClient : public IWeatherClient public: virtual double GetAverageTemperature(IWeatherServer& server, const std::string& date) override { - return 0; + WeatherList weatherMarks = GetWeatherMarksForDay(server, date); + double temperatureSum = 0.0; + for(const auto& mark: weatherMarks) + { + temperatureSum += mark.temperature; + } + return temperatureSum / weatherMarks.size(); } virtual double GetMinimumTemperature(IWeatherServer& server, const std::string& date) override From e815cd15babc3c5ed60320a08b641878110afd23 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:00:35 +0300 Subject: [PATCH 26/39] 4:red --- tdd_intro/homework/04_weather_client/test.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index d5264d20..16a08958 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -283,3 +283,11 @@ TEST(GetAverageTemperature, For3108) WeatherClient client; EXPECT_EQ(25.5, client.GetAverageTemperature(server, "31.08.2018")); } + +TEST(GetAverageTemperature, Acceptance) +{ + FakeWeatherServer server; + WeatherClient client; + EXPECT_EQ(24, client.GetAverageTemperature(server, "01.09.2018")); + EXPECT_EQ(26.75, client.GetAverageTemperature(server, "02.09.2018")); +} From feddaf5b48368fe8088cdac115472cd69f89668c Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:01:58 +0300 Subject: [PATCH 27/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 16a08958..e3037474 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -119,7 +119,6 @@ class FakeWeatherServer : public IWeatherServer { virtual std::string GetWeather(const std::string& request) override { - static const std::map weatherResults = {{"31.08.2018;03:00","20;181;5.1"}, {"31.08.2018;09:00", "23;204;4.9"}, {"31.08.2018;15:00", "33;193;4.3"}, @@ -129,6 +128,11 @@ class FakeWeatherServer : public IWeatherServer {"01.09.2018;09:00", "22;131;4.1"}, {"01.09.2018;15:00", "31;109;4.0"}, {"01.09.2018;21:00", "24;127;4.1"}, + + {"02.09.2018;03:00", "21;158;3.8"}, + {"02.09.2018;09:00", "25;201;3.5"}, + {"02.09.2018;15:00", "34;258;3.7"}, + {"02.09.2018;21:00", "27;299;4.0"}, }; auto valueIt = weatherResults.find(request); if(valueIt != weatherResults.end()) From a72bf676e03c90b9716d4425434128294c6c723a Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:10:37 +0300 Subject: [PATCH 28/39] 4: red --- tdd_intro/homework/04_weather_client/test.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index e3037474..2bbb555a 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -295,3 +295,10 @@ TEST(GetAverageTemperature, Acceptance) EXPECT_EQ(24, client.GetAverageTemperature(server, "01.09.2018")); EXPECT_EQ(26.75, client.GetAverageTemperature(server, "02.09.2018")); } + +TEST(GetMinimumTemperature, For3108) +{ + FakeWeatherServer server; + WeatherClient client; + EXPECT_EQ(20, client.GetMaximumTemperature(server, "31.08.2018")); +} From 73f306397a8cae38a17000d997e9331ef5e583b6 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:10:46 +0300 Subject: [PATCH 29/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 2bbb555a..252d2826 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -162,7 +162,13 @@ class WeatherClient : public IWeatherClient virtual double GetMinimumTemperature(IWeatherServer& server, const std::string& date) override { - return 0; + WeatherList weatherMarks = GetWeatherMarksForDay(server, date); + auto minWeather = std::min_element(weatherMarks.begin(), weatherMarks.end(), [] (const Weather& left, const Weather& right) + { + return left.temperature < right.temperature; + }); + + return minWeather->temperature; } virtual double GetMaximumTemperature(IWeatherServer& server, const std::string& date) override @@ -300,5 +306,5 @@ TEST(GetMinimumTemperature, For3108) { FakeWeatherServer server; WeatherClient client; - EXPECT_EQ(20, client.GetMaximumTemperature(server, "31.08.2018")); + EXPECT_EQ(20, client.GetMinimumTemperature(server, "31.08.2018")); } From 132328c58ef3fc204090eb1e85e4c29210ee2982 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:11:26 +0300 Subject: [PATCH 30/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 252d2826..50ba8602 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -308,3 +308,12 @@ TEST(GetMinimumTemperature, For3108) WeatherClient client; EXPECT_EQ(20, client.GetMinimumTemperature(server, "31.08.2018")); } + +TEST(GetMinimumTemperature, Acceptance) +{ + FakeWeatherServer server; + WeatherClient client; + EXPECT_EQ(19, client.GetMinimumTemperature(server, "01.09.2018")); + EXPECT_EQ(21, client.GetMinimumTemperature(server, "02.09.2018")); +} + From 991c80b5e951e6c55ae6e8de794d8c85a9909e37 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:11:47 +0300 Subject: [PATCH 31/39] 4: red --- tdd_intro/homework/04_weather_client/test.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 50ba8602..884a43ad 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -317,3 +317,10 @@ TEST(GetMinimumTemperature, Acceptance) EXPECT_EQ(21, client.GetMinimumTemperature(server, "02.09.2018")); } +TEST(GetMinimumTemperature, For3108) +{ + FakeWeatherServer server; + WeatherClient client; + EXPECT_EQ(33, client.GetMaximumTemperature(server, "31.08.2018")); +} + From 7b3e6d5c4d0d8c253fae7a8dfccf44e65eda6d49 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:12:49 +0300 Subject: [PATCH 32/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 884a43ad..16c8793c 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -173,7 +173,13 @@ class WeatherClient : public IWeatherClient virtual double GetMaximumTemperature(IWeatherServer& server, const std::string& date) override { - return 0; + WeatherList weatherMarks = GetWeatherMarksForDay(server, date); + auto maxWeather = std::max_element(weatherMarks.begin(), weatherMarks.end(), [] (const Weather& left, const Weather& right) + { + return left.temperature < right.temperature; + }); + + return maxWeather->temperature; } virtual double GetAverageWindDirection(IWeatherServer& server, const std::string& date) override @@ -317,7 +323,7 @@ TEST(GetMinimumTemperature, Acceptance) EXPECT_EQ(21, client.GetMinimumTemperature(server, "02.09.2018")); } -TEST(GetMinimumTemperature, For3108) +TEST(GetMiaximumTemperature, For3108) { FakeWeatherServer server; WeatherClient client; From c6e5de02480cba169993bdd0f7b7398c9410c616 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:13:34 +0300 Subject: [PATCH 33/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 16c8793c..39d441eb 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -330,3 +330,11 @@ TEST(GetMiaximumTemperature, For3108) EXPECT_EQ(33, client.GetMaximumTemperature(server, "31.08.2018")); } +TEST(GetMiaximumTemperature, Acceptance) +{ + FakeWeatherServer server; + WeatherClient client; + EXPECT_EQ(31, client.GetMaximumTemperature(server, "01.09.2018")); + EXPECT_EQ(34, client.GetMaximumTemperature(server, "02.09.2018")); +} + From cabb7303260a453fde72daea8e927df26c71f5cb Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:14:10 +0300 Subject: [PATCH 34/39] 4: red --- tdd_intro/homework/04_weather_client/test.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 39d441eb..97e7c395 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -338,3 +338,10 @@ TEST(GetMiaximumTemperature, Acceptance) EXPECT_EQ(34, client.GetMaximumTemperature(server, "02.09.2018")); } +TEST(GetMaximumWindSpeed, For3108) +{ + FakeWeatherServer server; + WeatherClient client; + EXPECT_EQ(5.1, client.GetMaximumWindSpeed(server, "31.08.2018")); +} + From 665f69beb7fb63bb355eeaec5ad888cadbe31368 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:14:47 +0300 Subject: [PATCH 35/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 97e7c395..170dd65f 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -189,7 +189,13 @@ class WeatherClient : public IWeatherClient virtual double GetMaximumWindSpeed(IWeatherServer& server, const std::string& date) override { - return 0; + WeatherList weatherMarks = GetWeatherMarksForDay(server, date); + auto maxWeather = std::max_element(weatherMarks.begin(), weatherMarks.end(), [] (const Weather& left, const Weather& right) + { + return left.windSpeed < right.windSpeed; + }); + + return maxWeather->windSpeed; } WeatherList GetWeatherMarksForDay(IWeatherServer& server, const std::string& date) From 33e32a48d6d3d542b82b0ddc9e441a6d923a5a4a Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:15:33 +0300 Subject: [PATCH 36/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 170dd65f..761ef3bf 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -351,3 +351,10 @@ TEST(GetMaximumWindSpeed, For3108) EXPECT_EQ(5.1, client.GetMaximumWindSpeed(server, "31.08.2018")); } +TEST(GetMaximumWindSpeed, Acceptance) +{ + FakeWeatherServer server; + WeatherClient client; + EXPECT_EQ(4.2, client.GetMaximumWindSpeed(server, "01.09.2018")); + EXPECT_EQ(4.0, client.GetMaximumWindSpeed(server, "02.09.2018")); +} From f82bb87b82985e866e091e7b176056ad8306b571 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:16:34 +0300 Subject: [PATCH 37/39] 4: red --- tdd_intro/homework/04_weather_client/test.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 761ef3bf..ce8d6189 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -358,3 +358,10 @@ TEST(GetMaximumWindSpeed, Acceptance) EXPECT_EQ(4.2, client.GetMaximumWindSpeed(server, "01.09.2018")); EXPECT_EQ(4.0, client.GetMaximumWindSpeed(server, "02.09.2018")); } + +TEST(GetAverageWindDirection, For3108) +{ + FakeWeatherServer server; + WeatherClient client; + EXPECT_EQ(189.25, client.GetAverageWindDirection(server, "31.08.2018")); +} From 7c4ae5981b0c96fa11a53c64646ddb7ebb25d288 Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:17:27 +0300 Subject: [PATCH 38/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index ce8d6189..9e512625 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -184,7 +184,13 @@ class WeatherClient : public IWeatherClient virtual double GetAverageWindDirection(IWeatherServer& server, const std::string& date) override { - return 0; + WeatherList weatherMarks = GetWeatherMarksForDay(server, date); + double windDirectionSum = 0.0; + for(const auto& mark: weatherMarks) + { + windDirectionSum += mark.windDirection; + } + return windDirectionSum / weatherMarks.size(); } virtual double GetMaximumWindSpeed(IWeatherServer& server, const std::string& date) override From 02a9ef015d10428bdc8f4104bc577688bea2c84f Mon Sep 17 00:00:00 2001 From: Daria Tkachenko Date: Thu, 25 Oct 2018 12:18:47 +0300 Subject: [PATCH 39/39] 4: green --- tdd_intro/homework/04_weather_client/test.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 9e512625..3c323fd8 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -371,3 +371,11 @@ TEST(GetAverageWindDirection, For3108) WeatherClient client; EXPECT_EQ(189.25, client.GetAverageWindDirection(server, "31.08.2018")); } + +TEST(GetAverageWindDirection, Acceptance) +{ + FakeWeatherServer server; + WeatherClient client; + EXPECT_EQ(135.75, client.GetAverageWindDirection(server, "01.09.2018")); + EXPECT_EQ(229, client.GetAverageWindDirection(server, "02.09.2018")); +}