From 4cb1311b21e470aaadeb66e63dc162ccae7fba49 Mon Sep 17 00:00:00 2001 From: Mokych Andrey Date: Fri, 2 Nov 2018 13:37:01 +0200 Subject: [PATCH 01/28] WS#2 added word wrapp task for demo --- .../demo/02_word_count/02_word_count.pro | 10 +++++ tdd_intro/demo/02_word_count/test.cpp | 40 +++++++++++++++++++ tdd_intro/demo/demo.pro | 1 + 3 files changed, 51 insertions(+) create mode 100644 tdd_intro/demo/02_word_count/02_word_count.pro create mode 100644 tdd_intro/demo/02_word_count/test.cpp diff --git a/tdd_intro/demo/02_word_count/02_word_count.pro b/tdd_intro/demo/02_word_count/02_word_count.pro new file mode 100644 index 00000000..e1123a37 --- /dev/null +++ b/tdd_intro/demo/02_word_count/02_word_count.pro @@ -0,0 +1,10 @@ +include(../../gtest.pri) + +TEMPLATE = app +CONFIG += console c++11 +CONFIG -= app_bundle +CONFIG -= qt + +SOURCES += \ + test.cpp + diff --git a/tdd_intro/demo/02_word_count/test.cpp b/tdd_intro/demo/02_word_count/test.cpp new file mode 100644 index 00000000..e969487c --- /dev/null +++ b/tdd_intro/demo/02_word_count/test.cpp @@ -0,0 +1,40 @@ +/* +Given a phrase, count the occurrences of each word in that phrase. Ignore whitespaces and punctual symbols +For example for the input "olly olly in come free please please let it be in such manner olly" +olly: 3 +in: 2 +come: 1 +free: 1 +please: 2 +let: 1 +it: 1 +be: 1 +manner: 1 +such: 1 +*/ + +#include +#include +#include + +std::map CountWords(const std::string& sentence) +{ + return {{sentence, 1}}; +} + +TEST(CountWords, OneWordForSingleSymbol) +{ + EXPECT_EQ(1, CountWords("a").size()); +} + +TEST(CountWords, SameValueForSingleWord) +{ + std::map expectedWords = {{"hello", 1}}; + EXPECT_EQ(expectedWords, CountWords("hello")); +} + +TEST(SplitWords, OneWordFromSentence) +{ + std::map expectedWords = {{"hello", 1}}; + EXPECT_EQ("a", Split("a b c")); +} diff --git a/tdd_intro/demo/demo.pro b/tdd_intro/demo/demo.pro index c2905cb9..9e9ba630 100644 --- a/tdd_intro/demo/demo.pro +++ b/tdd_intro/demo/demo.pro @@ -4,6 +4,7 @@ SUBDIRS += \ 01_bob \ 01_fizz_buzz \ 02_anagram \ + 02_word_count \ #03_allergies \ 03_roman_numerals \ 04_timer From c518474bc70da015cc281ac57b90db863bf25620 Mon Sep 17 00:00:00 2001 From: Mokych Andrey Date: Fri, 9 Nov 2018 11:30:54 +0200 Subject: [PATCH 02/28] added word wrapp to demos --- .../05_word_wrapp.pro => demo/03_word_wrapp/03_word_wrapp.pro} | 0 tdd_intro/{homework/05_word_wrapp => demo/03_word_wrapp}/test.cpp | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename tdd_intro/{homework/05_word_wrapp/05_word_wrapp.pro => demo/03_word_wrapp/03_word_wrapp.pro} (100%) rename tdd_intro/{homework/05_word_wrapp => demo/03_word_wrapp}/test.cpp (100%) diff --git a/tdd_intro/homework/05_word_wrapp/05_word_wrapp.pro b/tdd_intro/demo/03_word_wrapp/03_word_wrapp.pro similarity index 100% rename from tdd_intro/homework/05_word_wrapp/05_word_wrapp.pro rename to tdd_intro/demo/03_word_wrapp/03_word_wrapp.pro diff --git a/tdd_intro/homework/05_word_wrapp/test.cpp b/tdd_intro/demo/03_word_wrapp/test.cpp similarity index 100% rename from tdd_intro/homework/05_word_wrapp/test.cpp rename to tdd_intro/demo/03_word_wrapp/test.cpp From 21dea71941241a303b4d3ad79e1916fd6b132c09 Mon Sep 17 00:00:00 2001 From: Mokych Andrey Date: Fri, 9 Nov 2018 12:49:12 +0200 Subject: [PATCH 03/28] added word wrapp to demos --- tdd_intro/demo/03_word_wrapp/test.cpp | 85 +++++++++++---------------- tdd_intro/demo/demo.pro | 1 + tdd_intro/homework/homework.pro | 1 - 3 files changed, 34 insertions(+), 53 deletions(-) diff --git a/tdd_intro/demo/03_word_wrapp/test.cpp b/tdd_intro/demo/03_word_wrapp/test.cpp index 77e47210..83821e4e 100644 --- a/tdd_intro/demo/03_word_wrapp/test.cpp +++ b/tdd_intro/demo/03_word_wrapp/test.cpp @@ -7,6 +7,11 @@ last space should be used to wrapp this line. If there are no spaces - wrapp it When pos is specified, the search only includes sequences of characters that begin at or before position pos, ignoring any possible match beginning after pos +split(hee, 1) -> h, e, e +split(hee, 2) -> he, e +split("ha ha", 2|3|4) -> "ha", "ha" +split("h a", 1) -> "h", "a" + "When pos is specified, the", "search only includes sequences", "of characters that begin at or", @@ -16,81 +21,57 @@ ignoring any possible match beginning after pos */ #include -#include - -// empty string -// string shorter than wrap number -// word longer than wrap number -// word much longer than wrap number (more than 2 strings) -// string longer than wrap number - -// string wrapped by several whitespaces (less than wrapLength) -// string wrapped by several whitespaces (more than wrapLength) -// only whitespaces in string +#include +#include -using WrappedStrings = std::vector; - -WrappedStrings WrapString(const std::string& str, size_t wrapLength) +using StringContainer = std::vector; +StringContainer SplitString(const std::string& string, size_t length) { - WrappedStrings result; - for(size_t i = 0; i < str.length(); i += wrapLength) + auto firstSpaceInSubstr = string.rfind(' ', length); + std::string::size_type offset = length; + if (firstSpaceInSubstr != std::string::npos) { - std::string cur = str.substr(i, wrapLength); - if (cur.back() == ' ') - { - cur.pop_back(); - } + offset = firstSpaceInSubstr + 1; + } - if(!cur.empty() && cur.front() == ' ') - { - cur = cur.substr(1); - } + StringContainer result {{ string.substr(0, offset) }}; - if(!cur.empty()) - { - result.push_back(cur); - } + if (length < string.size()) + { + result.push_back(string.substr(offset)); } - return result; } -TEST(WrapString, EmptyString) -{ - ASSERT_EQ(WrappedStrings(), WrapString("", 25)); -} - -TEST(WrapString, StringShorterWrapNumber) +TEST(SplitString, OnePartForOneSymbol) { - ASSERT_EQ(WrappedStrings{"asdf"}, WrapString("asdf", 8)); + StringContainer parts = {"a"}; + EXPECT_EQ(parts, SplitString("a", 1)); } -TEST(WrapString, StringLongerThanWrapNumber) +TEST(SplitString, AbFirstForAbbaAnd2) { - WrappedStrings expected = {"asd", "f"}; - ASSERT_EQ(expected, WrapString("asdf", 3)); + EXPECT_EQ("Ab", SplitString("Abba", 2).at(0)); } -TEST(WrapString, StringLongerThanWrapNumberSeveralParts) +TEST(SplitString, BaSecondForAbbba) { - WrappedStrings expected = {"12", "34", "56"}; - ASSERT_EQ(expected, WrapString("123456", 2)); + EXPECT_EQ("ba", SplitString("Abba", 2).at(1)); } -TEST(WrapString, MultipleWordsLonger) +TEST(SplitString, AbForAbAnd4) { - WrappedStrings expected = {"1", "2"}; - ASSERT_EQ(expected, WrapString("1 2", 1)); + EXPECT_EQ("Ab", SplitString("Ab", 4).at(0)); } -TEST(WrapString, SpaceStringEnd) +TEST(SplitString, SplitAb_AbBeforeSpaceReturnsAbAndAb) { - WrappedStrings expected = {"1", "2"}; - ASSERT_EQ(expected, WrapString("1 2", 2)); + StringContainer parts = {"Ab", "Ab"}; + EXPECT_EQ(parts, SplitString("Ab Ab", 2)); } -TEST(WrapString, StringWrappedBySeveralWhitespace) +TEST(SplitString, SplitAb_AbAtSpaceReturnsAbAndAb) { - WrappedStrings expected = {"12", "34"}; - ASSERT_EQ(expected, WrapString("12 34", 3)); + StringContainer parts = {"Ab", "Ab"}; + EXPECT_EQ(parts, SplitString("Ab Ab", 3)); } diff --git a/tdd_intro/demo/demo.pro b/tdd_intro/demo/demo.pro index 9e9ba630..37ec0908 100644 --- a/tdd_intro/demo/demo.pro +++ b/tdd_intro/demo/demo.pro @@ -5,6 +5,7 @@ SUBDIRS += \ 01_fizz_buzz \ 02_anagram \ 02_word_count \ + 03_word_wrapp \ #03_allergies \ 03_roman_numerals \ 04_timer diff --git a/tdd_intro/homework/homework.pro b/tdd_intro/homework/homework.pro index cf6c01b9..7e131270 100644 --- a/tdd_intro/homework/homework.pro +++ b/tdd_intro/homework/homework.pro @@ -5,5 +5,4 @@ SUBDIRS += \ 02_ternary_numbers \ 03_bank_ocr \ 04_weather_client \ - 05_word_wrapp \ 06_coffee From 296b2fe31dcb0dc6deefbc6a35d18f74e5c089cd Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Wed, 31 Oct 2018 14:23:12 +0200 Subject: [PATCH 04/28] .gitignore --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index 259148fa..3e94e61a 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,9 @@ *.exe *.out *.app + +# Build dirs +build-* + +# .user files +*.user \ No newline at end of file From 1adcc11a3d70e421129d7c856ab128e95e9d25b2 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:32:26 +0200 Subject: [PATCH 05/28] green --- tdd_intro/homework/06_coffee/test.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 33b9093e..2c4d4bf1 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -65,9 +65,9 @@ class CoffeeMachine } void CreateCoffee(const Cup cup, const Coffee coffee) { - m_source.AddCoffee(0); - m_source.SetCupSize(0); - m_source.AddWater(0, 0); + m_source.AddCoffee(75); + m_source.SetCupSize(100); + m_source.AddWater(25, 60); } private: ISourceOfIngredients& m_source; From 705c9effd3adf69077df816391d8fabfbd6d1be8 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:34:37 +0200 Subject: [PATCH 06/28] red --- tdd_intro/homework/06_coffee/test.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 2c4d4bf1..e08ae816 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -117,3 +117,14 @@ TEST(CoffeeMachine, Americano) cm.CreateCoffee(Cup::Normal, Coffee::Americano); } +TEST(CoffeeMachine, BigAmericano) +{ + MockSourceOfIngredients si; + CoffeeMachine cm(si); + + EXPECT_CALL(si, AddCoffee(105)).Times(1); + EXPECT_CALL(si, SetCupSize(140)).Times(1); + EXPECT_CALL(si, AddWater(35, 60)).Times(1); + + cm.CreateCoffee(Cup::Big, Coffee::Americano); +} From 077ecb9c92541ab452b7e25845122580e7611062 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:43:18 +0200 Subject: [PATCH 07/28] green --- tdd_intro/homework/06_coffee/test.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index e08ae816..9b44957e 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -65,9 +65,9 @@ class CoffeeMachine } void CreateCoffee(const Cup cup, const Coffee coffee) { - m_source.AddCoffee(75); - m_source.SetCupSize(100); - m_source.AddWater(25, 60); + m_source.AddCoffee(cup == Cup::Big ? 105 : 75); + m_source.SetCupSize(cup == Cup::Big ? 140 : 100); + m_source.AddWater(cup == Cup::Big ? 35 : 25, 60); } private: ISourceOfIngredients& m_source; From 26e7ef4029f26014e0fbbf4798ce0057616de908 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:43:32 +0200 Subject: [PATCH 08/28] refactoring --- tdd_intro/homework/06_coffee/test.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 9b44957e..609b5164 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -56,6 +56,11 @@ class MockSourceOfIngredients : public ISourceOfIngredients MOCK_METHOD1(AddCream, void(int)); }; +int GetCupSize(const Cup cup) +{ + return cup == Cup::Big ? 140 : 100; +} + class CoffeeMachine { public: @@ -65,9 +70,11 @@ class CoffeeMachine } void CreateCoffee(const Cup cup, const Coffee coffee) { - m_source.AddCoffee(cup == Cup::Big ? 105 : 75); - m_source.SetCupSize(cup == Cup::Big ? 140 : 100); - m_source.AddWater(cup == Cup::Big ? 35 : 25, 60); + int cupSize = GetCupSize(cup); + + m_source.AddCoffee(cupSize / 4 * 3); + m_source.SetCupSize(cupSize); + m_source.AddWater(cupSize / 4, 60); } private: ISourceOfIngredients& m_source; @@ -128,3 +135,4 @@ TEST(CoffeeMachine, BigAmericano) cm.CreateCoffee(Cup::Big, Coffee::Americano); } + From 01656fc995a6d026fd01ed9a2042534ec114a9d3 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:44:51 +0200 Subject: [PATCH 09/28] red --- tdd_intro/homework/06_coffee/test.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 609b5164..a4883601 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -40,7 +40,8 @@ enum Cup enum Coffee { - Americano + Americano, + Cappucino }; class MockSourceOfIngredients : public ISourceOfIngredients @@ -136,3 +137,16 @@ TEST(CoffeeMachine, BigAmericano) cm.CreateCoffee(Cup::Big, Coffee::Americano); } +TEST(CoffeeMachine, CappucinoCallsImportantThings) +{ + MockSourceOfIngredients si; + CoffeeMachine cm(si); + + EXPECT_CALL(si, AddCoffee(::testing::_)).Times(1); + EXPECT_CALL(si, SetCupSize(::testing::_)).Times(1); + EXPECT_CALL(si, AddMilk(::testing::_)).Times(1); + EXPECT_CALL(si, AddMilkFoam(::testing::_)).Times(1); + EXPECT_CALL(si, AddWater(::testing::_, ::testing::_)).Times(1); + + cm.CreateCoffee(Cup::Normal, Coffee::Cappucino); +} From 458efd1456c14f236e9318b537ae5e911754a5c6 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:46:57 +0200 Subject: [PATCH 10/28] green --- tdd_intro/homework/06_coffee/test.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index a4883601..7bcbccd4 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -72,10 +72,20 @@ class CoffeeMachine void CreateCoffee(const Cup cup, const Coffee coffee) { int cupSize = GetCupSize(cup); - - m_source.AddCoffee(cupSize / 4 * 3); - m_source.SetCupSize(cupSize); - m_source.AddWater(cupSize / 4, 60); + if (coffee == Coffee::Cappucino) + { + m_source.AddCoffee(0); + m_source.SetCupSize(0); + m_source.AddWater(0, 0); + m_source.AddMilk(0); + m_source.AddMilkFoam(0); + } + else + { + m_source.AddCoffee(cupSize / 4 * 3); + m_source.SetCupSize(cupSize); + m_source.AddWater(cupSize / 4, 60); + } } private: ISourceOfIngredients& m_source; From 7d48b4e82698547807f2944591c39b0fc617daff Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:48:59 +0200 Subject: [PATCH 11/28] red --- tdd_intro/homework/06_coffee/test.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 7bcbccd4..20b7dfb3 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -160,3 +160,16 @@ TEST(CoffeeMachine, CappucinoCallsImportantThings) cm.CreateCoffee(Cup::Normal, Coffee::Cappucino); } +TEST(CoffeeMachine, Cappucino) +{ + MockSourceOfIngredients si; + CoffeeMachine cm(si); + + EXPECT_CALL(si, AddCoffee(16)).Times(1); + EXPECT_CALL(si, SetCupSize(100)).Times(1); + EXPECT_CALL(si, AddMilk(16)).Times(1); + EXPECT_CALL(si, AddMilkFoam(16)).Times(1); + EXPECT_CALL(si, AddWater(50, 80)).Times(1); + + cm.CreateCoffee(Cup::Normal, Coffee::Cappucino); +} From 74de492bd91ec4b9781434df360d15b7cdc60113 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:50:21 +0200 Subject: [PATCH 12/28] green --- tdd_intro/homework/06_coffee/test.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 20b7dfb3..0ca30ed2 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -74,11 +74,11 @@ class CoffeeMachine int cupSize = GetCupSize(cup); if (coffee == Coffee::Cappucino) { - m_source.AddCoffee(0); - m_source.SetCupSize(0); - m_source.AddWater(0, 0); - m_source.AddMilk(0); - m_source.AddMilkFoam(0); + m_source.AddCoffee(16); + m_source.SetCupSize(100); + m_source.AddWater(50, 80); + m_source.AddMilk(16); + m_source.AddMilkFoam(16); } else { From 31571395f44d14fa18e28d2f11352a54ca287cd2 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:51:47 +0200 Subject: [PATCH 13/28] red --- tdd_intro/homework/06_coffee/test.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 0ca30ed2..d00c6536 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -173,3 +173,16 @@ TEST(CoffeeMachine, Cappucino) cm.CreateCoffee(Cup::Normal, Coffee::Cappucino); } +TEST(CoffeeMachine, BigCappucino) +{ + MockSourceOfIngredients si; + CoffeeMachine cm(si); + + EXPECT_CALL(si, AddCoffee(23)).Times(1); + EXPECT_CALL(si, SetCupSize(140)).Times(1); + EXPECT_CALL(si, AddMilk(23)).Times(1); + EXPECT_CALL(si, AddMilkFoam(23)).Times(1); + EXPECT_CALL(si, AddWater(70, 80)).Times(1); + + cm.CreateCoffee(Cup::Big, Coffee::Cappucino); +} From f1d9e6a25a51445ed7be05b1410681bb64773b50 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:54:04 +0200 Subject: [PATCH 14/28] green --- tdd_intro/homework/06_coffee/test.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index d00c6536..36f99fea 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -74,11 +74,11 @@ class CoffeeMachine int cupSize = GetCupSize(cup); if (coffee == Coffee::Cappucino) { - m_source.AddCoffee(16); - m_source.SetCupSize(100); - m_source.AddWater(50, 80); - m_source.AddMilk(16); - m_source.AddMilkFoam(16); + m_source.AddCoffee(cupSize / 6); + m_source.SetCupSize(cupSize); + m_source.AddWater(cupSize / 2, 80); + m_source.AddMilk(cupSize / 6); + m_source.AddMilkFoam(cupSize / 6); } else { From c84c07be886badc5bbd87dadd646548e26b3b916 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:54:51 +0200 Subject: [PATCH 15/28] refactoring --- tdd_intro/homework/06_coffee/test.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 36f99fea..e29354e8 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -72,10 +72,10 @@ class CoffeeMachine void CreateCoffee(const Cup cup, const Coffee coffee) { int cupSize = GetCupSize(cup); + m_source.SetCupSize(cupSize); if (coffee == Coffee::Cappucino) { m_source.AddCoffee(cupSize / 6); - m_source.SetCupSize(cupSize); m_source.AddWater(cupSize / 2, 80); m_source.AddMilk(cupSize / 6); m_source.AddMilkFoam(cupSize / 6); @@ -83,7 +83,6 @@ class CoffeeMachine else { m_source.AddCoffee(cupSize / 4 * 3); - m_source.SetCupSize(cupSize); m_source.AddWater(cupSize / 4, 60); } } From 2c97affe827f6588aa7fe47a77234d1391912477 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:56:04 +0200 Subject: [PATCH 16/28] red --- tdd_intro/homework/06_coffee/test.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index e29354e8..17787df5 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -41,7 +41,8 @@ enum Cup enum Coffee { Americano, - Cappucino + Cappucino, + Latte }; class MockSourceOfIngredients : public ISourceOfIngredients @@ -185,3 +186,17 @@ TEST(CoffeeMachine, BigCappucino) cm.CreateCoffee(Cup::Big, Coffee::Cappucino); } + +TEST(CoffeeMachine, LatteCallsImportantThings) +{ + MockSourceOfIngredients si; + CoffeeMachine cm(si); + + EXPECT_CALL(si, AddCoffee(::testing::_)).Times(1); + EXPECT_CALL(si, SetCupSize(::testing::_)).Times(1); + EXPECT_CALL(si, AddMilk(::testing::_)).Times(1); + EXPECT_CALL(si, AddMilkFoam(::testing::_)).Times(1); + EXPECT_CALL(si, AddWater(::testing::_, ::testing::_)).Times(1); + + cm.CreateCoffee(Cup::Normal, Coffee::Latte); +} From 232cdf7efaf7bfad266dcc63bc289da86040c47d Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:56:25 +0200 Subject: [PATCH 17/28] green --- tdd_intro/homework/06_coffee/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 17787df5..0dd23b0f 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -74,7 +74,7 @@ class CoffeeMachine { int cupSize = GetCupSize(cup); m_source.SetCupSize(cupSize); - if (coffee == Coffee::Cappucino) + if (coffee == Coffee::Cappucino || coffee == Coffee::Latte) { m_source.AddCoffee(cupSize / 6); m_source.AddWater(cupSize / 2, 80); From f020f425164a54585da5bfe014a104c64d415a53 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:58:00 +0200 Subject: [PATCH 18/28] red --- tdd_intro/homework/06_coffee/test.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 0dd23b0f..7260b485 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -200,3 +200,16 @@ TEST(CoffeeMachine, LatteCallsImportantThings) cm.CreateCoffee(Cup::Normal, Coffee::Latte); } +TEST(CoffeeMachine, Latte) +{ + MockSourceOfIngredients si; + CoffeeMachine cm(si); + + EXPECT_CALL(si, AddCoffee(25)).Times(1); + EXPECT_CALL(si, SetCupSize(100)).Times(1); + EXPECT_CALL(si, AddMilk(12)).Times(1); + EXPECT_CALL(si, AddMilkFoam(12)).Times(1); + EXPECT_CALL(si, AddWater(50, 90)).Times(1); + + cm.CreateCoffee(Cup::Normal, Coffee::Latte); +} From ad2b118f37f2a95833d10612a7ce8bdd34f06b61 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 08:59:12 +0200 Subject: [PATCH 19/28] green --- tdd_intro/homework/06_coffee/test.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 7260b485..141ed06a 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -74,13 +74,20 @@ class CoffeeMachine { int cupSize = GetCupSize(cup); m_source.SetCupSize(cupSize); - if (coffee == Coffee::Cappucino || coffee == Coffee::Latte) + if (coffee == Coffee::Cappucino) { m_source.AddCoffee(cupSize / 6); m_source.AddWater(cupSize / 2, 80); m_source.AddMilk(cupSize / 6); m_source.AddMilkFoam(cupSize / 6); } + else if (coffee == Coffee::Latte) + { + m_source.AddCoffee(25); + m_source.AddWater(50, 90); + m_source.AddMilk(12); + m_source.AddMilkFoam(12); + } else { m_source.AddCoffee(cupSize / 4 * 3); From a1b171c0678f9f01a0b47e105a7f0fa4c9add09c Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 09:03:14 +0200 Subject: [PATCH 20/28] red --- tdd_intro/homework/06_coffee/test.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 141ed06a..1a698f24 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -220,3 +220,16 @@ TEST(CoffeeMachine, Latte) cm.CreateCoffee(Cup::Normal, Coffee::Latte); } +TEST(CoffeeMachine, BigLatte) +{ + MockSourceOfIngredients si; + CoffeeMachine cm(si); + + EXPECT_CALL(si, AddCoffee(35)).Times(1); + EXPECT_CALL(si, SetCupSize(140)).Times(1); + EXPECT_CALL(si, AddMilk(17)).Times(1); + EXPECT_CALL(si, AddMilkFoam(17)).Times(1); + EXPECT_CALL(si, AddWater(70, 90)).Times(1); + + cm.CreateCoffee(Cup::Big, Coffee::Latte); +} From da6381bbbe42b8e0c4c562a32a3259de88a94717 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 09:03:47 +0200 Subject: [PATCH 21/28] green --- tdd_intro/homework/06_coffee/test.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 1a698f24..bbf3fbc0 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -83,10 +83,10 @@ class CoffeeMachine } else if (coffee == Coffee::Latte) { - m_source.AddCoffee(25); - m_source.AddWater(50, 90); - m_source.AddMilk(12); - m_source.AddMilkFoam(12); + m_source.AddCoffee(cupSize / 4); + m_source.AddWater(cupSize / 2, 90); + m_source.AddMilk(cupSize / 8); + m_source.AddMilkFoam(cupSize / 8); } else { From 63b1ee37d5abb24ac19cc80b2de60e16254f77eb Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 09:05:16 +0200 Subject: [PATCH 22/28] refactoring --- tdd_intro/homework/06_coffee/test.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index bbf3fbc0..9f7bed80 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -74,24 +74,30 @@ class CoffeeMachine { int cupSize = GetCupSize(cup); m_source.SetCupSize(cupSize); - if (coffee == Coffee::Cappucino) + switch (coffee) + { + case Coffee::Cappucino: { m_source.AddCoffee(cupSize / 6); m_source.AddWater(cupSize / 2, 80); m_source.AddMilk(cupSize / 6); m_source.AddMilkFoam(cupSize / 6); + break; } - else if (coffee == Coffee::Latte) + case Coffee::Latte: { m_source.AddCoffee(cupSize / 4); m_source.AddWater(cupSize / 2, 90); m_source.AddMilk(cupSize / 8); m_source.AddMilkFoam(cupSize / 8); + break; } - else + case Coffee::Americano: { m_source.AddCoffee(cupSize / 4 * 3); m_source.AddWater(cupSize / 4, 60); + break; + } } } private: From dddc9e66dbcee2bd2e791295efe8196a70142172 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 09:06:41 +0200 Subject: [PATCH 23/28] red --- tdd_intro/homework/06_coffee/test.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 9f7bed80..8469d059 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -42,7 +42,8 @@ enum Coffee { Americano, Cappucino, - Latte + Latte, + Marochino }; class MockSourceOfIngredients : public ISourceOfIngredients @@ -239,3 +240,16 @@ TEST(CoffeeMachine, BigLatte) cm.CreateCoffee(Cup::Big, Coffee::Latte); } + +TEST(CoffeeMachine, MarochinoCallsImportantThings) +{ + MockSourceOfIngredients si; + CoffeeMachine cm(si); + + EXPECT_CALL(si, AddCoffee(::testing::_)).Times(1); + EXPECT_CALL(si, SetCupSize(::testing::_)).Times(1); + EXPECT_CALL(si, AddChocolate(::testing::_)).Times(1); + EXPECT_CALL(si, AddMilkFoam(::testing::_)).Times(1); + + cm.CreateCoffee(Cup::Normal, Coffee::Marochino); +} From 1faf4f556afbb1a0afda0765dddd21fdeb467dd6 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 09:08:07 +0200 Subject: [PATCH 24/28] green --- tdd_intro/homework/06_coffee/test.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 8469d059..c2328a68 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -99,6 +99,13 @@ class CoffeeMachine m_source.AddWater(cupSize / 4, 60); break; } + case Coffee::Marochino: + { + m_source.AddCoffee(0); + m_source.AddChocolate(0); + m_source.AddMilkFoam(0); + break; + } } } private: From bc1fd176c32b61fbbd1e00263e3e205d3f3f0bfa Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 09:10:03 +0200 Subject: [PATCH 25/28] red --- tdd_intro/homework/06_coffee/test.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index c2328a68..554da113 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -260,3 +260,15 @@ TEST(CoffeeMachine, MarochinoCallsImportantThings) cm.CreateCoffee(Cup::Normal, Coffee::Marochino); } +TEST(CoffeeMachine, Marochino) +{ + MockSourceOfIngredients si; + CoffeeMachine cm(si); + + EXPECT_CALL(si, AddCoffee(25)).Times(1); + EXPECT_CALL(si, SetCupSize(100)).Times(1); + EXPECT_CALL(si, AddChocolate(25)).Times(1); + EXPECT_CALL(si, AddMilkFoam(25)).Times(1); + + cm.CreateCoffee(Cup::Normal, Coffee::Marochino); +} From 57b06f996ec75478ee7ca5054fdccf5a9401faf4 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 09:10:25 +0200 Subject: [PATCH 26/28] green --- tdd_intro/homework/06_coffee/test.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 554da113..a97c641e 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -101,9 +101,9 @@ class CoffeeMachine } case Coffee::Marochino: { - m_source.AddCoffee(0); - m_source.AddChocolate(0); - m_source.AddMilkFoam(0); + m_source.AddCoffee(25); + m_source.AddChocolate(25); + m_source.AddMilkFoam(25); break; } } From 508692ed71630342486da1b3c49976200df63a53 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 09:10:51 +0200 Subject: [PATCH 27/28] red --- tdd_intro/homework/06_coffee/test.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index a97c641e..9723371f 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -272,3 +272,15 @@ TEST(CoffeeMachine, Marochino) cm.CreateCoffee(Cup::Normal, Coffee::Marochino); } +TEST(CoffeeMachine, BigMarochino) +{ + MockSourceOfIngredients si; + CoffeeMachine cm(si); + + EXPECT_CALL(si, AddCoffee(35)).Times(1); + EXPECT_CALL(si, SetCupSize(140)).Times(1); + EXPECT_CALL(si, AddChocolate(35)).Times(1); + EXPECT_CALL(si, AddMilkFoam(35)).Times(1); + + cm.CreateCoffee(Cup::Big, Coffee::Marochino); +} From d3aba8d8ec8f9b1d3b2d95dffa3b0b6a4722f055 Mon Sep 17 00:00:00 2001 From: Zakhar Kurasov Date: Fri, 30 Nov 2018 09:11:13 +0200 Subject: [PATCH 28/28] green --- tdd_intro/homework/06_coffee/test.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 9723371f..ac403210 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -101,9 +101,9 @@ class CoffeeMachine } case Coffee::Marochino: { - m_source.AddCoffee(25); - m_source.AddChocolate(25); - m_source.AddMilkFoam(25); + m_source.AddCoffee(cupSize / 4); + m_source.AddChocolate(cupSize / 4); + m_source.AddMilkFoam(cupSize / 4); break; } }