From c09e2dde38813019ada0da7e8fc1592a3928e9a6 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 14 Nov 2018 17:52:26 +0200 Subject: [PATCH 01/23] First practice (Bob) --- tdd_intro/demo/01_bob/test.cpp | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/tdd_intro/demo/01_bob/test.cpp b/tdd_intro/demo/01_bob/test.cpp index dc9e42f..5840552 100644 --- a/tdd_intro/demo/01_bob/test.cpp +++ b/tdd_intro/demo/01_bob/test.cpp @@ -10,3 +10,45 @@ He answers 'Whatever.' to anything else. #include #include +const std::string g_tellBobAnswer = "Sure"; +const std::string g_yellBobAnswer = "Whoa, chill out!"; +const std::string g_emptyBobAnswer = "Fine. Be that way!"; +const std::string g_defaultBobAnswer = "Whatever."; + +std::string CallBob(const std::string& str) +{ + if (str.empty()) + { + return g_emptyBobAnswer; + } + if (str.back() == '!') + { + return g_yellBobAnswer; + } + else if (str.back() == '?') + { + return g_tellBobAnswer; + } + + return g_defaultBobAnswer; +} + +TEST(bob, AnswerSureOnQuestion) +{ + ASSERT_EQ(g_tellBobAnswer, CallBob("Are you ok?")); +} + +TEST(bob, AnswerChillOnYell) +{ + ASSERT_EQ(g_yellBobAnswer, CallBob("Yell!!!!")); +} + +TEST(bob, AnswerOnEmptyString) +{ + ASSERT_EQ(g_emptyBobAnswer, CallBob("")); +} + +TEST(bob, AnswerOnAnythingElse) +{ + ASSERT_EQ(g_defaultBobAnswer, CallBob("Anything else")); +} From 1d7fe3c190120c116f66fd7a95bf9fcf7abfd5b3 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Mon, 19 Nov 2018 19:05:51 +0200 Subject: [PATCH 02/23] Added 00_intro to the project --- tdd_intro/homework/homework.pro | 1 + 1 file changed, 1 insertion(+) diff --git a/tdd_intro/homework/homework.pro b/tdd_intro/homework/homework.pro index cf6c01b..07506ca 100644 --- a/tdd_intro/homework/homework.pro +++ b/tdd_intro/homework/homework.pro @@ -1,6 +1,7 @@ TEMPLATE = subdirs SUBDIRS += \ + 00_intro \ 01_leap_year \ 02_ternary_numbers \ 03_bank_ocr \ From 7685d7386fabb2e48c4ca4bc35651f81c9070a6f Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 27 Nov 2018 14:46:27 +0200 Subject: [PATCH 03/23] Second practice --- tdd_intro/demo/01_fizz_buzz/test.cpp | 61 ++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/tdd_intro/demo/01_fizz_buzz/test.cpp b/tdd_intro/demo/01_fizz_buzz/test.cpp index 582ee51..49fa275 100644 --- a/tdd_intro/demo/01_fizz_buzz/test.cpp +++ b/tdd_intro/demo/01_fizz_buzz/test.cpp @@ -9,3 +9,64 @@ * a multiple of 15 = FizzBuzz * any other number = */ + +const std::string g_fizzString = "Fizz"; +const std::string g_buzzString = "Buzz"; +const std::string g_fizzBuzzString = "FizzBuzz"; + +std::string FizzBuzz(int num) +{ + std::string fizzBuzzStr; + + if (num % 3 == 0) + { + fizzBuzzStr = g_fizzString; + } + + if (num % 5 == 0) + { + fizzBuzzStr += g_buzzString; + } + + return fizzBuzzStr; +} + + +TEST(FizzBuzzTest, Fizz) +{ + EXPECT_EQ(g_fizzString, FizzBuzz(3)); +} + +TEST(FizzBuzzTest, Buzz) +{ + EXPECT_EQ(g_buzzString, FizzBuzz(5)); +} + +TEST(FizzBuzzTest, Fizz6) +{ + EXPECT_EQ(g_fizzString, FizzBuzz(6)); +} + +TEST(FizzBuzzTest, Buzz10) +{ + EXPECT_EQ(g_buzzString, FizzBuzz(10)); +} + +TEST(FizzBuzzTest, FizzBuzz) +{ + EXPECT_EQ(g_fizzBuzzString, FizzBuzz(15)); +} + +TEST(FizzBuzzTest, FizzBuzzEmpty) +{ + EXPECT_EQ("", FizzBuzz(1)); +} + +TEST(FizzBuzzTest, Acceptance) +{ + EXPECT_EQ(g_buzzString, FizzBuzz(35)); + EXPECT_EQ(g_fizzString, FizzBuzz(66)); + EXPECT_EQ(g_fizzBuzzString, FizzBuzz(45)); + EXPECT_EQ("", FizzBuzz(17)); + EXPECT_EQ("", FizzBuzz(-23)); +} From b15d2ff103d193d1d6a546cc612ec5635062747c Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 18:45:43 +0200 Subject: [PATCH 04/23] Anagram task added --- tdd_intro/demo/02_anagram/test.cpp | 73 ++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/tdd_intro/demo/02_anagram/test.cpp b/tdd_intro/demo/02_anagram/test.cpp index 4d65537..1c4d8e6 100644 --- a/tdd_intro/demo/02_anagram/test.cpp +++ b/tdd_intro/demo/02_anagram/test.cpp @@ -6,3 +6,76 @@ Given "listen" and a list of candidates like "enlists" "google" "inlets" "banana _from http://exercism.io/_ */ #include +typedef std::vector strings; + +bool IsAnagramPresent(std::string first, std::string second) +{ + std::sort(first.begin(), first.end()); + std::sort(second.begin(), second.end()); + + return first == second; +} + +strings ReturnAnagrams(std::string target, const strings& variants) +{ + strings anagrams; + for (std::string variant : variants) + { + if (IsAnagramPresent(target, variant)) + { + anagrams.push_back(variant); + } + } + + return anagrams; +} + +TEST (anagrams, emptyString) +{ + EXPECT_TRUE(IsAnagramPresent("", "")); +} + +TEST(anagrams, notEqualWords) +{ + EXPECT_FALSE(IsAnagramPresent("word", "lock")); +} + +TEST(anagrams, anagram) +{ + EXPECT_TRUE(IsAnagramPresent("listen", "inlets")); +} + +TEST(anagrams, returnEmptyString) +{ + EXPECT_EQ(strings(), ReturnAnagrams("", strings())); +} + +TEST(anagrams, singleAnagram) +{ + EXPECT_EQ( strings({"inlets"}), ReturnAnagrams("listen", strings({"inlets"}))); +} + +TEST(anagrams, otherSignleAnagram) +{ + EXPECT_EQ( strings({"letsin"}), ReturnAnagrams("listen", strings({"letsin"}))); +} + +TEST(anagrams, signleNotAnagram) +{ + EXPECT_EQ( strings(), ReturnAnagrams("listen", strings({"letiin"}))); +} + +TEST(anagrams, multipleWordsOnaAnagram) +{ + EXPECT_EQ(strings({"inlets"}), ReturnAnagrams("listen", strings({"inlets", "google"}))); +} + +TEST(anagrams, multipleAnagrams) +{ + EXPECT_EQ(strings({"inlets", "inelts"}), ReturnAnagrams("listen", strings({"inlets", "inelts"}))); +} + +TEST(anagrams, multipleAnagramsNotInOrder) +{ + EXPECT_EQ(strings({"inelts", "inlets"}), ReturnAnagrams("listen", strings({"inlets", "inelts"}))); +} From ead3e320d3245980bac4e540e82ce1ff06278086 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 18 Dec 2018 23:58:14 +0200 Subject: [PATCH 05/23] Practical class --- .../homework/02_ternary_numbers/test.cpp | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 1750302..e75a61a 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -16,3 +16,77 @@ The last place in a ternary number is the 1's place. The second to last is the 3 If your language provides a method in the standard library to perform the conversion, pretend it doesn't exist and implement it yourself. */ + +/* + * 1) 0 test + * 2) 1 test + * 3) 2 test + * 4) invalid digit test + * 5) Multiple digits tests + * 6) Invalid multiple digits tests + * 7) Acceptence test + */ + +bool TernaryNumber(int number) +{ + return number < 3; +} + +int ConvertTernaryNumbers(const std::string &number) +{ + int sum = 0; + for (int index = 0; index < number.size(); ++index) + { + int numberValue = std::stoi(std::string(1, number[number.size() - 1 - index])); + if (!TernaryNumber(numberValue)) + { + return 0; + } + sum += numberValue * std::pow(3, index); + } + + return sum; +} + +TEST(TernaryNumbers, ZeroTest) +{ + ASSERT_TRUE(TernaryNumber(0)); +} + +TEST(TernaryNumbers, CheckOne) +{ + ASSERT_TRUE(TernaryNumber(1)); +} + +TEST(TernaryNumbers, CheckTwo) +{ + ASSERT_TRUE(TernaryNumber(2)); +} + +TEST(TernaryNumbers, InvalidDigit) +{ + ASSERT_FALSE(TernaryNumber(3)); +} + +TEST(TernaryNumbers, MultipleDigits) +{ + ASSERT_EQ(0, ConvertTernaryNumbers("00")); +} + +TEST(TernaryNumbers, MultipleDigits111) +{ + ASSERT_EQ(13, ConvertTernaryNumbers("111")); +} + +TEST(TernaryNumbers, InvalidMultipleDigits) +{ + ASSERT_EQ(0, ConvertTernaryNumbers("113")); +} + +TEST(TernaryNumbers, Acceptance) +{ + ASSERT_EQ(0, ConvertTernaryNumbers("123")); + ASSERT_EQ(16, ConvertTernaryNumbers("121")); + ASSERT_EQ(439, ConvertTernaryNumbers("121021")); + ASSERT_EQ(597871, ConvertTernaryNumbers("1010101010101")); +} From f921c7570b3a50e0bff4b7d5b96279a95648c1aa Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:13:19 +0200 Subject: [PATCH 06/23] Demo work --- tdd_intro/homework/06_coffee/test.cpp | 94 +++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index cc1d534..6c3d376 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -14,6 +14,22 @@ We have 2 possible sizes of the cup: Implement worked coffee machine using ISourceOfIngredients to controll the process of coffee production. */ +/* + * 1) Americano/little cup test + * 2) Americano/big cup test + * 3) cappuccino/little cup test + * 4) cappuccino/big cup test + * 5) latte/little cup test + * 6) latte/big cup test + * 7) marochino/little cup test + * 8) marochino/big cup test + * 9) marochino ingredients order test + * + * Arch: + * 1) CoffeeMachine class + * 2) enum CoffeeCup + */ + #include #include @@ -30,3 +46,81 @@ class ISourceOfIngredients virtual void AddChocolate(int gram) = 0; virtual void AddCream(int gram) = 0; }; + +class MockSourceOfIngridients : public ISourceOfIngredients +{ +public: + MOCK_METHOD1(SetCupSize, void(int)); + MOCK_METHOD2(AddWater, void(int, int)); + MOCK_METHOD1(AddSugar, void(int)); + MOCK_METHOD1(AddCoffee, void(int)); + MOCK_METHOD1(AddMilk, void(int)); + MOCK_METHOD1(AddMilkFoam, void(int)); + MOCK_METHOD1(AddChocolate, void(int)); + MOCK_METHOD1(AddCream, void(int)); +}; + +enum CoffeeCupSize +{ + LittleCup = 100, + BigCup = 140, +}; + +enum CoffeeType +{ + Americano, + Cappuccino, +}; + +class CoffeeMachine +{ +public: + CoffeeMachine(ISourceOfIngredients *source) : m_source(source) + { + } + + void MakeCoffee(CoffeeType type, CoffeeCupSize size) + { + m_source->SetCupSize(size); + m_source->AddWater(size / 2, 60); + m_source->AddCoffee(size / 2); + } + +private: + ISourceOfIngredients *m_source; +}; + +void CheckAmericano(CoffeeCupSize size) +{ + MockSourceOfIngridients mock; + CoffeeMachine machine(&mock); + + EXPECT_CALL(mock, SetCupSize(size)).Times(1); + EXPECT_CALL(mock, AddWater(size / 2, 60)).Times(1); + EXPECT_CALL(mock, AddCoffee(size / 2)).Times(1); + + machine.MakeCoffee(Americano, size); +} + +TEST(Coffee, AmericanoLittleCup) +{ + CheckAmericano(LittleCup); +} + +TEST(Coffee, AmericanoBigCup) +{ + CheckAmericano(BigCup); +} + +TEST(Coffee, CappuccinoLittleCup) +{ + MockSourceOfIngridients mock; + CoffeeMachine machine(&mock); + + EXPECT_CALL(mock, SetCupSize(LittleCup)).Times(1); + EXPECT_CALL(mock, AddMilk(LittleCup / 3)).Times(1); + EXPECT_CALL(mock, AddCoffee(LittleCup / 3)).Times(1); + EXPECT_CALL(mock, AddMilkFoam(LittleCup / 3)).Times(1); + + machine.MakeCoffee(Cappuccino, LittleCup); +} From 0e3ab4b17ed9d7dda2155ed24d1ed55cf09fe2e1 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:17:12 +0200 Subject: [PATCH 07/23] Cappucino green test --- tdd_intro/homework/06_coffee/test.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 6c3d376..c7ce426 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -81,9 +81,21 @@ class CoffeeMachine void MakeCoffee(CoffeeType type, CoffeeCupSize size) { - m_source->SetCupSize(size); - m_source->AddWater(size / 2, 60); - m_source->AddCoffee(size / 2); + switch (type) + { + case Americano: + m_source->SetCupSize(size); + m_source->AddWater(size / 2, 60); + m_source->AddCoffee(size / 2); + break; + + case Cappuccino: + m_source->SetCupSize(LittleCup); + m_source->AddMilk(LittleCup / 3); + m_source->AddCoffee(LittleCup / 3); + m_source->AddMilkFoam(LittleCup / 3); + break; + } } private: From 9be10357a9e8c48fc4b6c65e7293791cd610eed5 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:17:58 +0200 Subject: [PATCH 08/23] Cappucino refactoring --- tdd_intro/homework/06_coffee/test.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index c7ce426..760cde8 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -95,6 +95,9 @@ class CoffeeMachine m_source->AddCoffee(LittleCup / 3); m_source->AddMilkFoam(LittleCup / 3); break; + + default: + break; } } From 4daa3c045fe0f358f19154244a78cefd2709299d Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:20:07 +0200 Subject: [PATCH 09/23] Cappucino big cup red test --- 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 760cde8..9c8e183 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -139,3 +139,16 @@ TEST(Coffee, CappuccinoLittleCup) machine.MakeCoffee(Cappuccino, LittleCup); } + +TEST(Coffee, CappuccinoBigCup) +{ + MockSourceOfIngridients mock; + CoffeeMachine machine(&mock); + + EXPECT_CALL(mock, SetCupSize(BigCup)).Times(1); + EXPECT_CALL(mock, AddMilk(BigCup / 3)).Times(1); + EXPECT_CALL(mock, AddCoffee(BigCup / 3)).Times(1); + EXPECT_CALL(mock, AddMilkFoam(BigCup / 3)).Times(1); + + machine.MakeCoffee(Cappuccino, BigCup); +} From 2691bcdee33fc280f8e6724fdbea0968eaebe3b5 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:20:22 +0200 Subject: [PATCH 10/23] Cappucino big cup green test --- 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 9c8e183..b44c238 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -90,10 +90,10 @@ class CoffeeMachine break; case Cappuccino: - m_source->SetCupSize(LittleCup); - m_source->AddMilk(LittleCup / 3); - m_source->AddCoffee(LittleCup / 3); - m_source->AddMilkFoam(LittleCup / 3); + m_source->SetCupSize(size); + m_source->AddMilk(size / 3); + m_source->AddCoffee(size / 3); + m_source->AddMilkFoam(size / 3); break; default: From 1503bea460bae1bebffe50804aa31b44cb3816fc Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:22:07 +0200 Subject: [PATCH 11/23] Cappucino big cup refactoring --- tdd_intro/homework/06_coffee/test.cpp | 33 ++++++++++++--------------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index b44c238..d8480d7 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -117,6 +117,19 @@ void CheckAmericano(CoffeeCupSize size) machine.MakeCoffee(Americano, size); } +void CheckCappucino(CoffeeCupSize size) +{ + MockSourceOfIngridients mock; + CoffeeMachine machine(&mock); + + EXPECT_CALL(mock, SetCupSize(size)).Times(1); + EXPECT_CALL(mock, AddMilk(size / 3)).Times(1); + EXPECT_CALL(mock, AddCoffee(size / 3)).Times(1); + EXPECT_CALL(mock, AddMilkFoam(size / 3)).Times(1); + + machine.MakeCoffee(Cappuccino, size); +} + TEST(Coffee, AmericanoLittleCup) { CheckAmericano(LittleCup); @@ -129,26 +142,10 @@ TEST(Coffee, AmericanoBigCup) TEST(Coffee, CappuccinoLittleCup) { - MockSourceOfIngridients mock; - CoffeeMachine machine(&mock); - - EXPECT_CALL(mock, SetCupSize(LittleCup)).Times(1); - EXPECT_CALL(mock, AddMilk(LittleCup / 3)).Times(1); - EXPECT_CALL(mock, AddCoffee(LittleCup / 3)).Times(1); - EXPECT_CALL(mock, AddMilkFoam(LittleCup / 3)).Times(1); - - machine.MakeCoffee(Cappuccino, LittleCup); + CheckCappucino(LittleCup); } TEST(Coffee, CappuccinoBigCup) { - MockSourceOfIngridients mock; - CoffeeMachine machine(&mock); - - EXPECT_CALL(mock, SetCupSize(BigCup)).Times(1); - EXPECT_CALL(mock, AddMilk(BigCup / 3)).Times(1); - EXPECT_CALL(mock, AddCoffee(BigCup / 3)).Times(1); - EXPECT_CALL(mock, AddMilkFoam(BigCup / 3)).Times(1); - - machine.MakeCoffee(Cappuccino, BigCup); + CheckCappucino(BigCup); } From 18f7cb2eaca5ea51792a879dbca2be731dfff384 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:25:27 +0200 Subject: [PATCH 12/23] Latter little cup red test --- 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 d8480d7..9818518 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -149,3 +149,16 @@ TEST(Coffee, CappuccinoBigCup) { CheckCappucino(BigCup); } + +TEST(Coffee, LatteLittleCup) +{ + MockSourceOfIngridients mock; + CoffeeMachine machine(&mock); + + EXPECT_CALL(mock, SetCupSize(LittleCup)).Times(1); + EXPECT_CALL(mock, AddMilk(LittleCup / 4)).Times(1); + EXPECT_CALL(mock, AddCoffee(LittleCup / 2)).Times(1); + EXPECT_CALL(mock, AddMilkFoam(LittleCup / 4)).Times(1); + + machine.MakeCoffee(Latte, LittleCup); +} From 0b99be840e9079c617c4ab9c4e64887019e0f143 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:26:59 +0200 Subject: [PATCH 13/23] Latter little cup green test --- tdd_intro/homework/06_coffee/test.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 9818518..b9fcde5 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -70,6 +70,7 @@ enum CoffeeType { Americano, Cappuccino, + Latte, }; class CoffeeMachine @@ -96,6 +97,13 @@ class CoffeeMachine m_source->AddMilkFoam(size / 3); break; + case Latte: + m_source->SetCupSize(LittleCup); + m_source->AddMilk(LittleCup / 4); + m_source->AddCoffee(LittleCup / 2); + m_source->AddMilkFoam(LittleCup / 4); + break; + default: break; } From 886d5e09559f9c24ef3ee9c3ebb92fa33fe24601 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:27:56 +0200 Subject: [PATCH 14/23] Latter big cup red test --- 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 b9fcde5..e1c0629 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -170,3 +170,16 @@ TEST(Coffee, LatteLittleCup) machine.MakeCoffee(Latte, LittleCup); } + +TEST(Coffee, LatteBigCup) +{ + MockSourceOfIngridients mock; + CoffeeMachine machine(&mock); + + EXPECT_CALL(mock, SetCupSize(BigCup)).Times(1); + EXPECT_CALL(mock, AddMilk(BigCup / 4)).Times(1); + EXPECT_CALL(mock, AddCoffee(BigCup / 2)).Times(1); + EXPECT_CALL(mock, AddMilkFoam(BigCup / 4)).Times(1); + + machine.MakeCoffee(Latte, BigCup); +} From 320458b676ce09a7f29cb9da64637de5d1517515 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:29:10 +0200 Subject: [PATCH 15/23] Latter big cup green test --- 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 e1c0629..8d8c988 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -98,10 +98,10 @@ class CoffeeMachine break; case Latte: - m_source->SetCupSize(LittleCup); - m_source->AddMilk(LittleCup / 4); - m_source->AddCoffee(LittleCup / 2); - m_source->AddMilkFoam(LittleCup / 4); + m_source->SetCupSize(size); + m_source->AddMilk(size / 4); + m_source->AddCoffee(size / 2); + m_source->AddMilkFoam(size / 4); break; default: From b6753676055fbd78e8b0bc0d48f516e1c0f8cf53 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:31:31 +0200 Subject: [PATCH 16/23] Latter big cup refactoring --- tdd_intro/homework/06_coffee/test.cpp | 33 ++++++++++++--------------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 8d8c988..88e8276 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -138,6 +138,19 @@ void CheckCappucino(CoffeeCupSize size) machine.MakeCoffee(Cappuccino, size); } +void CheckLatte(CoffeeCupSize size) +{ + MockSourceOfIngridients mock; + CoffeeMachine machine(&mock); + + EXPECT_CALL(mock, SetCupSize(size)).Times(1); + EXPECT_CALL(mock, AddMilk(size / 4)).Times(1); + EXPECT_CALL(mock, AddCoffee(size / 2)).Times(1); + EXPECT_CALL(mock, AddMilkFoam(size / 4)).Times(1); + + machine.MakeCoffee(Latte, size); +} + TEST(Coffee, AmericanoLittleCup) { CheckAmericano(LittleCup); @@ -160,26 +173,10 @@ TEST(Coffee, CappuccinoBigCup) TEST(Coffee, LatteLittleCup) { - MockSourceOfIngridients mock; - CoffeeMachine machine(&mock); - - EXPECT_CALL(mock, SetCupSize(LittleCup)).Times(1); - EXPECT_CALL(mock, AddMilk(LittleCup / 4)).Times(1); - EXPECT_CALL(mock, AddCoffee(LittleCup / 2)).Times(1); - EXPECT_CALL(mock, AddMilkFoam(LittleCup / 4)).Times(1); - - machine.MakeCoffee(Latte, LittleCup); + CheckLatte(LittleCup); } TEST(Coffee, LatteBigCup) { - MockSourceOfIngridients mock; - CoffeeMachine machine(&mock); - - EXPECT_CALL(mock, SetCupSize(BigCup)).Times(1); - EXPECT_CALL(mock, AddMilk(BigCup / 4)).Times(1); - EXPECT_CALL(mock, AddCoffee(BigCup / 2)).Times(1); - EXPECT_CALL(mock, AddMilkFoam(BigCup / 4)).Times(1); - - machine.MakeCoffee(Latte, BigCup); + CheckLatte(BigCup); } From 2e15e30a6cc2f248a60d7d4a60a7f41ba66813b4 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:35:36 +0200 Subject: [PATCH 17/23] Mocachino little cup red test --- 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 88e8276..398affe 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -180,3 +180,16 @@ TEST(Coffee, LatteBigCup) { CheckLatte(BigCup); } + +TEST(Coffee, MocachinoLittleCup) +{ + MockSourceOfIngridients mock; + CoffeeMachine machine(&mock); + + EXPECT_CALL(mock, SetCupSize(LittleCup)).Times(1); + EXPECT_CALL(mock, AddChocolate(LittleCup / 4)).Times(1); + EXPECT_CALL(mock, AddCoffee(LittleCup / 4)).Times(1); + EXPECT_CALL(mock, AddMilkFoam(LittleCup / 4)).Times(1); + + machine.MakeCoffee(Mocachino, LittleCup); +} From 2df6b460b66c5260a8c0bb5c207d7ab72fe32c51 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:36:55 +0200 Subject: [PATCH 18/23] Mocachino little cup green test --- tdd_intro/homework/06_coffee/test.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 398affe..aea0898 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -71,6 +71,7 @@ enum CoffeeType Americano, Cappuccino, Latte, + Mocachino, }; class CoffeeMachine @@ -104,6 +105,13 @@ class CoffeeMachine m_source->AddMilkFoam(size / 4); break; + case Mocachino: + m_source->SetCupSize(LittleCup); + m_source->AddChocolate(LittleCup / 4); + m_source->AddCoffee(LittleCup / 4); + m_source->AddMilkFoam(LittleCup / 4); + break; + default: break; } From 417ee3fb3bff86a9494553a002426c97f89fd98a Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:37:38 +0200 Subject: [PATCH 19/23] Mocachino big cup red test --- 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 aea0898..cccd477 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -201,3 +201,16 @@ TEST(Coffee, MocachinoLittleCup) machine.MakeCoffee(Mocachino, LittleCup); } + +TEST(Coffee, MocachinoBigCup) +{ + MockSourceOfIngridients mock; + CoffeeMachine machine(&mock); + + EXPECT_CALL(mock, SetCupSize(BigCup)).Times(1); + EXPECT_CALL(mock, AddChocolate(BigCup / 4)).Times(1); + EXPECT_CALL(mock, AddCoffee(BigCup / 4)).Times(1); + EXPECT_CALL(mock, AddMilkFoam(BigCup / 4)).Times(1); + + machine.MakeCoffee(Mocachino, BigCup); +} From ca0a11377cf9223fea53dc532dffe0d48e3cde5f Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:38:03 +0200 Subject: [PATCH 20/23] Mocachino big cup green test --- 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 cccd477..df65f8b 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -106,10 +106,10 @@ class CoffeeMachine break; case Mocachino: - m_source->SetCupSize(LittleCup); - m_source->AddChocolate(LittleCup / 4); - m_source->AddCoffee(LittleCup / 4); - m_source->AddMilkFoam(LittleCup / 4); + m_source->SetCupSize(size); + m_source->AddChocolate(size / 4); + m_source->AddCoffee(size / 4); + m_source->AddMilkFoam(size / 4); break; default: From 53487cc1d294bebd0b05a6a4945a5f7aa570e926 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 15:40:07 +0200 Subject: [PATCH 21/23] Mocachino big cup refactoring --- tdd_intro/homework/06_coffee/test.cpp | 39 ++++++++++++--------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index df65f8b..555a7c6 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -83,30 +83,28 @@ class CoffeeMachine void MakeCoffee(CoffeeType type, CoffeeCupSize size) { + m_source->SetCupSize(size); + switch (type) { case Americano: - m_source->SetCupSize(size); m_source->AddWater(size / 2, 60); m_source->AddCoffee(size / 2); break; case Cappuccino: - m_source->SetCupSize(size); m_source->AddMilk(size / 3); m_source->AddCoffee(size / 3); m_source->AddMilkFoam(size / 3); break; case Latte: - m_source->SetCupSize(size); m_source->AddMilk(size / 4); m_source->AddCoffee(size / 2); m_source->AddMilkFoam(size / 4); break; case Mocachino: - m_source->SetCupSize(size); m_source->AddChocolate(size / 4); m_source->AddCoffee(size / 4); m_source->AddMilkFoam(size / 4); @@ -159,6 +157,19 @@ void CheckLatte(CoffeeCupSize size) machine.MakeCoffee(Latte, size); } +void CheckMocachino(CoffeeCupSize size) +{ + MockSourceOfIngridients mock; + CoffeeMachine machine(&mock); + + EXPECT_CALL(mock, SetCupSize(size)).Times(1); + EXPECT_CALL(mock, AddChocolate(size / 4)).Times(1); + EXPECT_CALL(mock, AddCoffee(size / 4)).Times(1); + EXPECT_CALL(mock, AddMilkFoam(size / 4)).Times(1); + + machine.MakeCoffee(Mocachino, size); +} + TEST(Coffee, AmericanoLittleCup) { CheckAmericano(LittleCup); @@ -191,26 +202,10 @@ TEST(Coffee, LatteBigCup) TEST(Coffee, MocachinoLittleCup) { - MockSourceOfIngridients mock; - CoffeeMachine machine(&mock); - - EXPECT_CALL(mock, SetCupSize(LittleCup)).Times(1); - EXPECT_CALL(mock, AddChocolate(LittleCup / 4)).Times(1); - EXPECT_CALL(mock, AddCoffee(LittleCup / 4)).Times(1); - EXPECT_CALL(mock, AddMilkFoam(LittleCup / 4)).Times(1); - - machine.MakeCoffee(Mocachino, LittleCup); + CheckMocachino(LittleCup); } TEST(Coffee, MocachinoBigCup) { - MockSourceOfIngridients mock; - CoffeeMachine machine(&mock); - - EXPECT_CALL(mock, SetCupSize(BigCup)).Times(1); - EXPECT_CALL(mock, AddChocolate(BigCup / 4)).Times(1); - EXPECT_CALL(mock, AddCoffee(BigCup / 4)).Times(1); - EXPECT_CALL(mock, AddMilkFoam(BigCup / 4)).Times(1); - - machine.MakeCoffee(Mocachino, BigCup); + CheckMocachino(BigCup); } From 9692cdd7d7e3419b8204e83d2598b2ff9142e826 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 16:15:46 +0200 Subject: [PATCH 22/23] Mocachino little cup test sequence --- tdd_intro/homework/06_coffee/test.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 555a7c6..9d8d1fe 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -209,3 +209,20 @@ TEST(Coffee, MocachinoBigCup) { CheckMocachino(BigCup); } + +TEST(Coffee, MocachinoLittleCupSequence) +{ + MockSourceOfIngridients mock; + CoffeeMachine machine(&mock); + + { + ::testing::InSequence s; + + EXPECT_CALL(mock, SetCupSize(LittleCup)).Times(1); + EXPECT_CALL(mock, AddChocolate(LittleCup / 4)).Times(1); + EXPECT_CALL(mock, AddCoffee(LittleCup / 4)).Times(1); + EXPECT_CALL(mock, AddMilkFoam(LittleCup / 4)).Times(1); + } + + machine.MakeCoffee(Mocachino, LittleCup); +} From 98fc6cbb73cd917d58af08560dfa480e6682660c Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 16 Jan 2019 16:17:13 +0200 Subject: [PATCH 23/23] Mocachino little cup test sequence refactoring --- tdd_intro/homework/06_coffee/test.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tdd_intro/homework/06_coffee/test.cpp b/tdd_intro/homework/06_coffee/test.cpp index 9d8d1fe..df1aee6 100644 --- a/tdd_intro/homework/06_coffee/test.cpp +++ b/tdd_intro/homework/06_coffee/test.cpp @@ -33,6 +33,8 @@ Implement worked coffee machine using ISourceOfIngredients to controll the proce #include #include +using namespace testing; + class ISourceOfIngredients { public: @@ -216,12 +218,12 @@ TEST(Coffee, MocachinoLittleCupSequence) CoffeeMachine machine(&mock); { - ::testing::InSequence s; + InSequence s; - EXPECT_CALL(mock, SetCupSize(LittleCup)).Times(1); - EXPECT_CALL(mock, AddChocolate(LittleCup / 4)).Times(1); - EXPECT_CALL(mock, AddCoffee(LittleCup / 4)).Times(1); - EXPECT_CALL(mock, AddMilkFoam(LittleCup / 4)).Times(1); + EXPECT_CALL(mock, SetCupSize(LittleCup)).Times(1); + EXPECT_CALL(mock, AddChocolate(LittleCup / 4)).Times(1); + EXPECT_CALL(mock, AddCoffee(LittleCup / 4)).Times(1); + EXPECT_CALL(mock, AddMilkFoam(LittleCup / 4)).Times(1); } machine.MakeCoffee(Mocachino, LittleCup);