Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
74 changes: 37 additions & 37 deletions tdd_intro/tdd_intro.pro.user

Large diffs are not rendered by default.

132 changes: 118 additions & 14 deletions tdd_intro/workshops/07_coffee/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class ICoffeCore
virtual void AddWater(int gram, int temperature) = 0;
virtual void AddSugar(int gram) = 0;
virtual void AddCoffee(int gram) = 0;
virtual void AddMilk(int gram) = 0;
virtual void AddMilk(int gram, int temperature) = 0;
virtual void AddMilkFoam(int gram) = 0;
virtual void AddChocolate(int gram) = 0;
virtual void AddCream(int gram) = 0;
Expand All @@ -54,7 +54,7 @@ class CoffeeCoreMock : public ICoffeCore
MOCK_METHOD2(AddWater, void(int, int));
MOCK_METHOD1(AddSugar, void(int));
MOCK_METHOD1(AddCoffee, void(int));
MOCK_METHOD1(AddMilk, void(int));
MOCK_METHOD2(AddMilk, void(int, int));
MOCK_METHOD1(AddMilkFoam, void(int));
MOCK_METHOD1(AddChocolate, void(int));
MOCK_METHOD1(AddCream, void(int));
Expand All @@ -76,6 +76,9 @@ class CoffeeMachine
void CreateBigCup();
void CreateHotWaterCup();
void CreateAmericano();
void CreateCappuccino();
void CreateLatte();
void CreateMarochino();
private:
ICoffeCore& m_core;
CupSize m_size;
Expand Down Expand Up @@ -108,11 +111,44 @@ void CoffeeMachine::CreateAmericano()
{
throw std::runtime_error("cap is empty");
}
m_core.AddWater(m_size / 2, 60);
m_core.AddWater(m_size / 3, 60);
m_core.AddCoffee((2*m_size) / 3);
}

void CoffeeMachine::CreateCappuccino()
{
if(m_size == CupSizeInvalid)
{
throw std::runtime_error("cap is empty");
}
m_core.AddMilk(m_size / 3, 80);
m_core.AddCoffee(m_size / 3);
m_core.AddMilkFoam(m_size / 3);
}

void CoffeeMachine::CreateLatte()
{
if(m_size == CupSizeInvalid)
{
throw std::runtime_error("cap is empty");
}
m_core.AddMilk(m_size / 4, 90);
m_core.AddCoffee(m_size / 2);
m_core.AddMilkFoam(m_size / 4);
}

void CoffeeMachine::CreateMarochino()
{
if(m_size == CupSizeInvalid)
{
throw std::runtime_error("cap is empty");
}
m_core.AddChocolate(m_size / 4);
m_core.AddCoffee(m_size / 4);
m_core.AddMilkFoam(m_size / 4);
}

TEST(CoffeCoretest, CreateHotWater)
TEST(CoffeeCoretest, CreateHotWater)
{
CoffeeCoreMock mock;
CoffeeMachine machine(mock);
Expand All @@ -122,31 +158,29 @@ TEST(CoffeCoretest, CreateHotWater)
machine.CreateHotWaterCup();
}

// FIX: sequence
//- americano: water & coffee 1:2 or 1:3. Water temp 60C
TEST(CoffeCoretest, CreateAmericanoBig)
TEST(CoffeeCoretest, CreateAmericanoBig)
{
CoffeeCoreMock mock;
CoffeeMachine machine(mock);

EXPECT_CALL(mock, AddWater(CupSizeBig / 2, 60)).Times(1);
EXPECT_CALL(mock, AddCoffee(CupSizeBig / 2)).Times(1);
EXPECT_CALL(mock, AddWater(CupSizeBig / 3, 60)).Times(1);
EXPECT_CALL(mock, AddCoffee((2*CupSizeBig) / 3)).Times(1);
machine.CreateBigCup();
machine.CreateAmericano();
}

TEST(CoffeCoretest, CreateAmericanoLittle)
TEST(CoffeeCoretest, CreateAmericanoLittle)
{
CoffeeCoreMock mock;
CoffeeMachine machine(mock);

EXPECT_CALL(mock, AddWater(CupSizeLittle / 2, 60)).Times(1);
EXPECT_CALL(mock, AddCoffee(CupSizeLittle / 2)).Times(1);
EXPECT_CALL(mock, AddWater(CupSizeLittle / 3, 60)).Times(1);
EXPECT_CALL(mock, AddCoffee((2*CupSizeLittle) / 3)).Times(1);
machine.CreateLittleCup();
machine.CreateAmericano();
}

TEST(CoffeCoretest, CreateAmericanoLittle_NoCup)
TEST(CoffeeCoretest, CreateAmericanoLittle_NoCup)
{
CoffeeCoreMock mock;
CoffeeMachine machine(mock);
Expand All @@ -156,4 +190,74 @@ TEST(CoffeCoretest, CreateAmericanoLittle_NoCup)
EXPECT_THROW(machine.CreateAmericano(), std::runtime_error);
}

// add other tests
TEST(CoffeeCoretest, CreateCappuccinoBig)
{
CoffeeCoreMock mock;
CoffeeMachine machine(mock);

EXPECT_CALL(mock, AddMilk(CupSizeBig / 3, 80)).Times(1);
EXPECT_CALL(mock, AddCoffee(CupSizeBig / 3)).Times(1);
EXPECT_CALL(mock, AddMilkFoam(CupSizeBig / 3)).Times(1);
machine.CreateBigCup();
machine.CreateCappuccino();
}

TEST(CoffeeCoretest, CreateCappuccinoLittle)
{
CoffeeCoreMock mock;
CoffeeMachine machine(mock);

EXPECT_CALL(mock, AddMilk(CupSizeLittle / 3, 80)).Times(1);
EXPECT_CALL(mock, AddCoffee(CupSizeLittle / 3)).Times(1);
EXPECT_CALL(mock, AddMilkFoam(CupSizeLittle / 3)).Times(1);
machine.CreateLittleCup();
machine.CreateCappuccino();
}

TEST(CoffeeCoretest, CreateLatteBig)
{
CoffeeCoreMock mock;
CoffeeMachine machine(mock);

EXPECT_CALL(mock, AddMilk(CupSizeBig / 4, 90)).Times(1);
EXPECT_CALL(mock, AddCoffee(CupSizeBig / 2)).Times(1);
EXPECT_CALL(mock, AddMilkFoam(CupSizeBig / 4)).Times(1);
machine.CreateBigCup();
machine.CreateLatte();
}

TEST(CoffeeCoretest, CreateLatteLittle)
{
CoffeeCoreMock mock;
CoffeeMachine machine(mock);

EXPECT_CALL(mock, AddMilk(CupSizeLittle / 4, 90)).Times(1);
EXPECT_CALL(mock, AddCoffee(CupSizeLittle / 2)).Times(1);
EXPECT_CALL(mock, AddMilkFoam(CupSizeLittle / 4)).Times(1);
machine.CreateLittleCup();
machine.CreateLatte();
}

TEST(CoffeeCoretest, CreateMarochinoBig)
{
CoffeeCoreMock mock;
CoffeeMachine machine(mock);

EXPECT_CALL(mock, AddChocolate(CupSizeBig / 4)).Times(1);
EXPECT_CALL(mock, AddCoffee(CupSizeBig / 4)).Times(1);
EXPECT_CALL(mock, AddMilkFoam(CupSizeBig / 4)).Times(1);
machine.CreateBigCup();
machine.CreateMarochino();
}

TEST(CoffeeCoretest, CreateMarochinoLittle)
{
CoffeeCoreMock mock;
CoffeeMachine machine(mock);

EXPECT_CALL(mock, AddChocolate(CupSizeLittle / 4)).Times(1);
EXPECT_CALL(mock, AddCoffee(CupSizeLittle / 4)).Times(1);
EXPECT_CALL(mock, AddMilkFoam(CupSizeLittle / 4)).Times(1);
machine.CreateLittleCup();
machine.CreateMarochino();
}
3 changes: 2 additions & 1 deletion tdd_intro/workshops/workshops.pro
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ SUBDIRS += \
02_word_count \
03_anagram \
04_trinary_numbers \
05_word_wrapp
05_word_wrapp \
07_coffee