From 36e66800541473d746532ae18a6aea4b665fc9b6 Mon Sep 17 00:00:00 2001 From: Raynare Date: Sun, 15 Jul 2018 23:53:23 +0300 Subject: [PATCH 01/14] Added time to Start function --- tdd_intro/homework/08_timer/test.cpp | 14 ++++++ tdd_intro/tdd_intro.pro.user | 74 ++++++++++++++-------------- 2 files changed, 51 insertions(+), 37 deletions(-) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index 24db0b7..2620ee9 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -22,3 +22,17 @@ Timer can be started again any time, no metter in what state it is */ #include +#include + +typedef std::chrono::high_resolution_clock Clock; +typedef Clock::duration Duration; +typedef std::chrono::time_point TimePoint; + +class ITimer { +public: + virtual ~ITimer() {} + + virtual void Start(int64_t time) = 0; + virtual bool IsExpired() const = 0; + virtual Duration TimeLeft() const = 0; +}; diff --git a/tdd_intro/tdd_intro.pro.user b/tdd_intro/tdd_intro.pro.user index a2f1674..13d7492 100644 --- a/tdd_intro/tdd_intro.pro.user +++ b/tdd_intro/tdd_intro.pro.user @@ -1,10 +1,10 @@ - + EnvironmentId - {a9e7f687-ac9f-466e-a5b0-c81b575a0a1d} + {950e75d0-15c4-4cbb-8e75-9217fe27f405} ProjectExplorer.Project.ActiveTarget @@ -59,14 +59,14 @@ ProjectExplorer.Project.Target.0 - Qt 5.7.0 (windows) - Qt 5.7.0 (windows) - {bb54e87c-a17e-4f34-bfa2-da2794ff8a10} + Desktop Qt 5.10.0 MSVC2015 32bit + Desktop Qt 5.10.0 MSVC2015 32bit + qt.qt5.5100.win32_msvc2015_kit 0 0 - 11 + 0 - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug + C:/Users/ertev/Desktop/TDD course/tdd-course-2/build-tdd_intro-Desktop_Qt_5_10_0_MSVC2015_32bit-Debug true @@ -120,7 +120,7 @@ true - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Release + C:/Users/ertev/Desktop/TDD course/tdd-course-2/build-tdd_intro-Desktop_Qt_5_10_0_MSVC2015_32bit-Release true @@ -174,7 +174,7 @@ true - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Profile + C:/Users/ertev/Desktop/TDD course/tdd-course-2/build-tdd_intro-Desktop_Qt_5_10_0_MSVC2015_32bit-Profile true @@ -286,13 +286,13 @@ chatclient - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/cleanroom/chatclient/chatclient.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/cleanroom/chatclient/chatclient.pro true cleanroom/chatclient/chatclient.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/cleanroom/chatclient + 3768 false true @@ -344,13 +344,13 @@ 01_bob - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/homework/01_bob/01_bob.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/homework/01_bob/01_bob.pro true homework/01_bob/01_bob.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/homework/01_bob + 3768 false true @@ -402,13 +402,13 @@ 02_word_count - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/workshops/02_word_count/02_word_count.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/workshops/02_word_count/02_word_count.pro true workshops/02_word_count/02_word_count.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/workshops/02_word_count + 3768 false true @@ -460,13 +460,13 @@ 03_anagram 03_anagram2 - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/workshops/03_anagram/03_anagram.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/workshops/03_anagram/03_anagram.pro true workshops/03_anagram/03_anagram.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/workshops/03_anagram + 3768 false true @@ -518,13 +518,13 @@ 04_trinary_numbers 04_trinary_numbers2 - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/workshops/04_trinary_numbers/04_trinary_numbers.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/workshops/04_trinary_numbers/04_trinary_numbers.pro true workshops/04_trinary_numbers/04_trinary_numbers.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/workshops/04_trinary_numbers + 3768 false true @@ -576,13 +576,13 @@ 05_word_wrapp 05_word_wrapp2 - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/workshops/05_word_wrapp/05_word_wrapp.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/workshops/05_word_wrapp/05_word_wrapp.pro true workshops/05_word_wrapp/05_word_wrapp.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/workshops/05_word_wrapp + 3768 false true @@ -634,13 +634,13 @@ 02_leap_year - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/homework/02_leap_year/02_leap_year.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/homework/02_leap_year/02_leap_year.pro true homework/02_leap_year/02_leap_year.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/homework/02_leap_year + 3768 false true @@ -692,13 +692,13 @@ 03_anagram - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/homework/03_anagram/03_anagram.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/homework/03_anagram/03_anagram.pro true homework/03_anagram/03_anagram.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/homework/03_anagram + 3768 false true @@ -750,13 +750,13 @@ 04_trinary_numbers - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/homework/04_trinary_numbers/04_trinary_numbers.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/homework/04_trinary_numbers/04_trinary_numbers.pro true homework/04_trinary_numbers/04_trinary_numbers.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/homework/04_trinary_numbers + 3768 false true @@ -808,13 +808,13 @@ 05_word_wrapp - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/homework/05_word_wrapp/05_word_wrapp.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/homework/05_word_wrapp/05_word_wrapp.pro true homework/05_word_wrapp/05_word_wrapp.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/homework/05_word_wrapp + 3768 false true @@ -866,13 +866,13 @@ 06_bank_ocr - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/homework/06_bank_ocr/06_bank_ocr.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/homework/06_bank_ocr/06_bank_ocr.pro true homework/06_bank_ocr/06_bank_ocr.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/homework/06_bank_ocr + 3768 false true @@ -924,13 +924,13 @@ 07_filecopier - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/homework/07_filecopier/07_filecopier.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/homework/07_filecopier/07_filecopier.pro true homework/07_filecopier/07_filecopier.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/homework/07_filecopier + 3768 false true @@ -982,13 +982,13 @@ 08_timer - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/homework/08_timer/08_timer.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/homework/08_timer/08_timer.pro true homework/08_timer/08_timer.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/homework/08_timer + 3768 false true @@ -1040,13 +1040,13 @@ 01_fizz_buzz - Qt4ProjectManager.Qt4RunConfiguration:D:/Study/tdd-course-2/tdd_intro/workshops/01_fizz_buzz/01_fizz_buzz.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/ertev/Desktop/TDD course/tdd-course-2/tdd_intro/workshops/01_fizz_buzz/01_fizz_buzz.pro true workshops/01_fizz_buzz/01_fizz_buzz.pro false - D:/Study/tdd-course-2/build-tdd_intro-Qt_5_7_0_windows-Debug/workshops/01_fizz_buzz + 3768 false true From 2002736449a1c51441581cf6fe5e21fb8ec44bd1 Mon Sep 17 00:00:00 2001 From: Raynare Date: Sun, 15 Jul 2018 23:56:30 +0300 Subject: [PATCH 02/14] Added Timer class implementation --- tdd_intro/homework/08_timer/test.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index 2620ee9..5b85d88 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -32,7 +32,15 @@ class ITimer { public: virtual ~ITimer() {} - virtual void Start(int64_t time) = 0; + virtual void Start(int64_t millis) = 0; virtual bool IsExpired() const = 0; virtual Duration TimeLeft() const = 0; }; + +class Timer : public ITimer +{ +public: + void Start(int64_t millis) override; + bool IsExpired() const override; + Duration TimeLeft() const override; +} From 0b37401e4e57baafb7fe5ccefb4f21351281deca Mon Sep 17 00:00:00 2001 From: Raynare Date: Mon, 16 Jul 2018 00:00:44 +0300 Subject: [PATCH 03/14] Test IsExpired_NotExpired - red --- tdd_intro/homework/08_timer/test.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index 5b85d88..ba486f3 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -43,4 +43,13 @@ class Timer : public ITimer void Start(int64_t millis) override; bool IsExpired() const override; Duration TimeLeft() const override; +}; + +TEST(Timer, IsExpired_NotExpired) +{ + Timer timer; + const int64_t aLotOfTime = 5000; + + timer.Start(aLotOfTime); + EXPECT_FALSE(timer.IsExpired()); } From 06c2719f95fb84520afdee579cac506cc6245ae9 Mon Sep 17 00:00:00 2001 From: Raynare Date: Mon, 16 Jul 2018 00:03:06 +0300 Subject: [PATCH 04/14] Test IsExpired_NotExpired - green --- tdd_intro/homework/08_timer/test.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index ba486f3..abb3222 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -45,6 +45,20 @@ class Timer : public ITimer Duration TimeLeft() const override; }; +void Timer::Start(int64_t millis) +{ +} + +bool Timer::IsExpired() const +{ + return false; +} + +Duration Timer::TimeLeft() const +{ + return Duration(); +} + TEST(Timer, IsExpired_NotExpired) { Timer timer; From 08f681f92d8ff34c093be9871ebaf6929ad8569d Mon Sep 17 00:00:00 2001 From: Raynare Date: Mon, 16 Jul 2018 01:36:17 +0300 Subject: [PATCH 05/14] Test IsExpired_Expired - red --- tdd_intro/homework/08_timer/test.cpp | 41 +++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index abb3222..773cdb2 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -37,12 +37,35 @@ class ITimer { virtual Duration TimeLeft() const = 0; }; +class ICurrentTime { +public: + virtual ~ICurrentTime() {} + + virtual void Reset() = 0; + virtual void AddTime(int64_t millis) = 0; +}; + +class CurrentTime : public ICurrentTime { +public: + void Reset() override; + void AddTime(int64_t millis) override; +private: + TimePoint m_time; +}; + class Timer : public ITimer { public: + Timer(CurrentTime& currentTime) + : m_currentTime(currentTime) + { + } + void Start(int64_t millis) override; bool IsExpired() const override; Duration TimeLeft() const override; +private: + CurrentTime& m_currentTime; }; void Timer::Start(int64_t millis) @@ -61,9 +84,25 @@ Duration Timer::TimeLeft() const TEST(Timer, IsExpired_NotExpired) { - Timer timer; + CurrentTime currentTime; + Timer timer(currentTime); + const int64_t aLotOfTime = 5000; timer.Start(aLotOfTime); EXPECT_FALSE(timer.IsExpired()); } + +TEST(Timer, IsExpired_Expired) +{ + CurrentTime currentTime; + Timer timer(currentTime); + + const int64_t timeForTimer = 2000; + const int64_t timeToGo = 3000; + + timer.Start(timeForTimer); + currentTime.AddTime(timeToGo); + + EXPECT_TRUE(timer.IsExpired()); +} From 3644e441165e7364031366019fa966f2495aaffa Mon Sep 17 00:00:00 2001 From: Raynare Date: Mon, 16 Jul 2018 01:46:03 +0300 Subject: [PATCH 06/14] Test IsExpired_Expired - green --- tdd_intro/homework/08_timer/test.cpp | 29 ++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index 773cdb2..bf8d1dc 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -28,6 +28,11 @@ typedef std::chrono::high_resolution_clock Clock; typedef Clock::duration Duration; typedef std::chrono::time_point TimePoint; +namespace +{ + const int64_t s_milliToNano = 1000000; +} + class ITimer { public: virtual ~ITimer() {} @@ -43,12 +48,14 @@ class ICurrentTime { virtual void Reset() = 0; virtual void AddTime(int64_t millis) = 0; + virtual TimePoint GetTime() const = 0; }; class CurrentTime : public ICurrentTime { public: void Reset() override; void AddTime(int64_t millis) override; + TimePoint GetTime() const override; private: TimePoint m_time; }; @@ -66,15 +73,18 @@ class Timer : public ITimer Duration TimeLeft() const override; private: CurrentTime& m_currentTime; + TimePoint m_expirationTime; }; void Timer::Start(int64_t millis) { + m_currentTime.Reset(); + m_expirationTime = m_currentTime.GetTime() + Duration(millis * s_milliToNano); } bool Timer::IsExpired() const { - return false; + return m_currentTime.GetTime() > m_expirationTime; } Duration Timer::TimeLeft() const @@ -82,7 +92,22 @@ Duration Timer::TimeLeft() const return Duration(); } -TEST(Timer, IsExpired_NotExpired) +void CurrentTime::Reset() +{ + m_time = Clock::now(); +} + +void CurrentTime::AddTime(int64_t millis) +{ + m_time += Duration(millis * s_milliToNano); +} + +TimePoint CurrentTime::GetTime() const +{ + return m_time; +} + +TEST(Timer, IsExpired_TimeNotChanged) { CurrentTime currentTime; Timer timer(currentTime); From f47913d4bdd32c2d1cf3e14670e7a7a4f9990a4f Mon Sep 17 00:00:00 2001 From: Raynare Date: Mon, 16 Jul 2018 01:46:28 +0300 Subject: [PATCH 07/14] Test IsExpired_NotExpired - already green --- tdd_intro/homework/08_timer/test.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index bf8d1dc..9fa5b75 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -131,3 +131,17 @@ TEST(Timer, IsExpired_Expired) EXPECT_TRUE(timer.IsExpired()); } + +TEST(Timer, IsExpired_NotExpired) +{ + CurrentTime currentTime; + Timer timer(currentTime); + + const int64_t timeForTimer = 2000; + const int64_t timeToGo = 1000; + + timer.Start(timeForTimer); + currentTime.AddTime(timeToGo); + + EXPECT_FALSE(timer.IsExpired()); +} From 19ab884b5a28e9b25af52d5965f8a5f9e339cafb Mon Sep 17 00:00:00 2001 From: Raynare Date: Mon, 16 Jul 2018 01:47:15 +0300 Subject: [PATCH 08/14] Test AtLimit_NotExpired - already green --- tdd_intro/homework/08_timer/test.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index 9fa5b75..2a822c3 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -145,3 +145,17 @@ TEST(Timer, IsExpired_NotExpired) EXPECT_FALSE(timer.IsExpired()); } + +TEST(Timer, AtLimit_NotExpired) +{ + CurrentTime currentTime; + Timer timer(currentTime); + + const int64_t timeForTimer = 2000; + const int64_t timeToGo = 2000; + + timer.Start(timeForTimer); + currentTime.AddTime(timeToGo); + + EXPECT_FALSE(timer.IsExpired()); +} From 562131fb3225bb685f69cca94bc9d8f940a563e4 Mon Sep 17 00:00:00 2001 From: Raynare Date: Mon, 16 Jul 2018 01:51:24 +0300 Subject: [PATCH 09/14] Test TimeLeft_WholeTimeLeft red + refactoring --- tdd_intro/homework/08_timer/test.cpp | 33 +++++++++++++++++----------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index 2a822c3..c5b7610 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -28,16 +28,11 @@ typedef std::chrono::high_resolution_clock Clock; typedef Clock::duration Duration; typedef std::chrono::time_point TimePoint; -namespace -{ - const int64_t s_milliToNano = 1000000; -} - class ITimer { public: virtual ~ITimer() {} - virtual void Start(int64_t millis) = 0; + virtual void Start(int64_t nanos) = 0; virtual bool IsExpired() const = 0; virtual Duration TimeLeft() const = 0; }; @@ -47,14 +42,14 @@ class ICurrentTime { virtual ~ICurrentTime() {} virtual void Reset() = 0; - virtual void AddTime(int64_t millis) = 0; + virtual void AddTime(int64_t nanos) = 0; virtual TimePoint GetTime() const = 0; }; class CurrentTime : public ICurrentTime { public: void Reset() override; - void AddTime(int64_t millis) override; + void AddTime(int64_t nanos) override; TimePoint GetTime() const override; private: TimePoint m_time; @@ -68,7 +63,7 @@ class Timer : public ITimer { } - void Start(int64_t millis) override; + void Start(int64_t nanos) override; bool IsExpired() const override; Duration TimeLeft() const override; private: @@ -76,10 +71,10 @@ class Timer : public ITimer TimePoint m_expirationTime; }; -void Timer::Start(int64_t millis) +void Timer::Start(int64_t nanos) { m_currentTime.Reset(); - m_expirationTime = m_currentTime.GetTime() + Duration(millis * s_milliToNano); + m_expirationTime = m_currentTime.GetTime() + Duration(nanos); } bool Timer::IsExpired() const @@ -97,9 +92,9 @@ void CurrentTime::Reset() m_time = Clock::now(); } -void CurrentTime::AddTime(int64_t millis) +void CurrentTime::AddTime(int64_t nanos) { - m_time += Duration(millis * s_milliToNano); + m_time += Duration(nanos); } TimePoint CurrentTime::GetTime() const @@ -159,3 +154,15 @@ TEST(Timer, AtLimit_NotExpired) EXPECT_FALSE(timer.IsExpired()); } + +TEST(Timer, TimeLeft_WholeTimeLeft) +{ + CurrentTime currentTime; + Timer timer(currentTime); + + const int64_t timeForTimer = 2000; + + timer.Start(timeForTimer); + + EXPECT_EQ(Duration(timeForTimer), timer.TimeLeft()); +} From b939bcd3dc8da15af506f4ec3f28b010ca52be82 Mon Sep 17 00:00:00 2001 From: Raynare Date: Mon, 16 Jul 2018 01:52:35 +0300 Subject: [PATCH 10/14] Test TimeLeft_WholeTimeLeft - green --- tdd_intro/homework/08_timer/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index c5b7610..e599ef5 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -84,7 +84,7 @@ bool Timer::IsExpired() const Duration Timer::TimeLeft() const { - return Duration(); + return m_expirationTime - m_currentTime.GetTime(); } void CurrentTime::Reset() From 04d3ced0a54cc208cbe1d3c5ebac9a2ceee96d27 Mon Sep 17 00:00:00 2001 From: Raynare Date: Mon, 16 Jul 2018 02:16:37 +0300 Subject: [PATCH 11/14] Test TimeLeft_SomeTimeLeft - green --- tdd_intro/homework/08_timer/test.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index e599ef5..be64e7e 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -166,3 +166,17 @@ TEST(Timer, TimeLeft_WholeTimeLeft) EXPECT_EQ(Duration(timeForTimer), timer.TimeLeft()); } + +TEST(Timer, TimeLeft_SomeTimeLeft) +{ + CurrentTime currentTime; + Timer timer(currentTime); + + const int64_t timeForTimer = 2000; + const int64_t timeToGo = 1000; + + timer.Start(timeForTimer); + currentTime.AddTime(timeToGo); + + EXPECT_EQ(Duration(timeForTimer - timeToGo), timer.TimeLeft()); +} From e380533718e0485624684b2142b562bed95b4041 Mon Sep 17 00:00:00 2001 From: Raynare Date: Mon, 16 Jul 2018 02:17:39 +0300 Subject: [PATCH 12/14] Test TimeLeft_Expired - red --- tdd_intro/homework/08_timer/test.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index be64e7e..685a53a 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -180,3 +180,17 @@ TEST(Timer, TimeLeft_SomeTimeLeft) EXPECT_EQ(Duration(timeForTimer - timeToGo), timer.TimeLeft()); } + +TEST(Timer, TimeLeft_Expired) +{ + CurrentTime currentTime; + Timer timer(currentTime); + + const int64_t timeForTimer = 1000; + const int64_t timeToGo = 2000; + + timer.Start(timeForTimer); + currentTime.AddTime(timeToGo); + + EXPECT_EQ(Duration(0), timer.TimeLeft()); +} From 569937661e825e4f8a192dcf5f8b0c5e87c0b2dc Mon Sep 17 00:00:00 2001 From: Raynare Date: Mon, 16 Jul 2018 02:18:17 +0300 Subject: [PATCH 13/14] Test TimeLeft_Expired - green --- tdd_intro/homework/08_timer/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index 685a53a..95b2d78 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -84,6 +84,11 @@ bool Timer::IsExpired() const Duration Timer::TimeLeft() const { + if (IsExpired()) + { + return Duration(0); + } + return m_expirationTime - m_currentTime.GetTime(); } From fbb9ebc934eaccd2a892c00871c2883660e1b391 Mon Sep 17 00:00:00 2001 From: Raynare Date: Mon, 16 Jul 2018 02:19:23 +0300 Subject: [PATCH 14/14] Test TimeLeft_NoTimeLeft - already green --- tdd_intro/homework/08_timer/test.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tdd_intro/homework/08_timer/test.cpp b/tdd_intro/homework/08_timer/test.cpp index 95b2d78..8c17db9 100644 --- a/tdd_intro/homework/08_timer/test.cpp +++ b/tdd_intro/homework/08_timer/test.cpp @@ -199,3 +199,17 @@ TEST(Timer, TimeLeft_Expired) EXPECT_EQ(Duration(0), timer.TimeLeft()); } + +TEST(Timer, TimeLeft_NoTimeLeft) +{ + CurrentTime currentTime; + Timer timer(currentTime); + + const int64_t timeForTimer = 2000; + const int64_t timeToGo = 2000; + + timer.Start(timeForTimer); + currentTime.AddTime(timeToGo); + + EXPECT_EQ(Duration(0), timer.TimeLeft()); +}