From 6423a44bb398495dc0c72cf18d16ae9db8a4ab7f Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Fri, 26 Oct 2018 23:46:05 +0300 Subject: [PATCH 01/22] Fixed build issues. Fixed linking with gtest. Added dependecy on gtest for some homeworks. Fixed build of gmock. Fixed std::abs conflict. --- .../gmock/include/gmock/internal/gmock-internal-utils.h | 7 +++++++ tdd_intro/cleanroom/cleanroom.pro | 4 ++-- tdd_intro/gtest.pri | 4 ++-- tdd_intro/homework/04_weather_client/04_weather_client.pro | 1 + tdd_intro/homework/04_weather_client/test.cpp | 2 ++ tdd_intro/homework/06_coffee/06_coffee.pro | 1 + 6 files changed, 15 insertions(+), 4 deletions(-) diff --git a/tdd_intro/3rd_party/gmock/include/gmock/internal/gmock-internal-utils.h b/tdd_intro/3rd_party/gmock/include/gmock/internal/gmock-internal-utils.h index e12b7d7d..5507611a 100644 --- a/tdd_intro/3rd_party/gmock/include/gmock/internal/gmock-internal-utils.h +++ b/tdd_intro/3rd_party/gmock/include/gmock/internal/gmock-internal-utils.h @@ -46,6 +46,13 @@ #include "gmock/internal/gmock-port.h" #include "gtest/gtest.h" +namespace { + +const testing::internal::RelationToSourceCopy kCopy; +const testing::internal::RelationToSourceReference kReference; + +} + namespace testing { namespace internal { diff --git a/tdd_intro/cleanroom/cleanroom.pro b/tdd_intro/cleanroom/cleanroom.pro index b92a4278..31ff6a0b 100644 --- a/tdd_intro/cleanroom/cleanroom.pro +++ b/tdd_intro/cleanroom/cleanroom.pro @@ -1,4 +1,4 @@ TEMPLATE = subdirs -SUBDIRS += \ - chatclient +#SUBDIRS += \ +# chatclient diff --git a/tdd_intro/gtest.pri b/tdd_intro/gtest.pri index 586007bb..bc93ca62 100644 --- a/tdd_intro/gtest.pri +++ b/tdd_intro/gtest.pri @@ -1,6 +1,6 @@ win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../3rd_party/gtest/release/ -lgtest else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../3rd_party/gtest/debug/ -lgtest -else:unix:!macx: LIBS += -L$$OUT_PWD/../../3rd_party/gtest/ -lgtest +else:unix: LIBS += -L$$OUT_PWD/../../3rd_party/gtest/ -lgtest INCLUDEPATH += $$PWD/3rd_party/gtest/googletest/include DEPENDPATH += $$PWD/3rd_party/gtest/googletest/include @@ -10,4 +10,4 @@ win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../../3rd_ else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../../3rd_party/gtest/debug/libgtest.a else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../../3rd_party/gtest/release/gtest.lib else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../../3rd_party/gtest/debug/gtest.lib -else:unix:!macx: PRE_TARGETDEPS += $$OUT_PWD/../../3rd_party/gtest/libgtest.a +else:unix: PRE_TARGETDEPS += $$OUT_PWD/../../3rd_party/gtest/libgtest.a diff --git a/tdd_intro/homework/04_weather_client/04_weather_client.pro b/tdd_intro/homework/04_weather_client/04_weather_client.pro index dec9b6a8..e8f86261 100644 --- a/tdd_intro/homework/04_weather_client/04_weather_client.pro +++ b/tdd_intro/homework/04_weather_client/04_weather_client.pro @@ -1,4 +1,5 @@ include(../../gmock.pri) +include(../../gtest.pri) TEMPLATE = app CONFIG += console c++11 diff --git a/tdd_intro/homework/04_weather_client/test.cpp b/tdd_intro/homework/04_weather_client/test.cpp index 346ea809..476405e2 100644 --- a/tdd_intro/homework/04_weather_client/test.cpp +++ b/tdd_intro/homework/04_weather_client/test.cpp @@ -47,6 +47,8 @@ Each line means "" : "": #include #include +#include + struct Weather { short temperature = 0; diff --git a/tdd_intro/homework/06_coffee/06_coffee.pro b/tdd_intro/homework/06_coffee/06_coffee.pro index dec9b6a8..05f06c68 100644 --- a/tdd_intro/homework/06_coffee/06_coffee.pro +++ b/tdd_intro/homework/06_coffee/06_coffee.pro @@ -1,3 +1,4 @@ +include(../../gtest.pri) include(../../gmock.pri) TEMPLATE = app From 4919240d9081202294fc120e4345353a1e7bba81 Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Fri, 26 Oct 2018 23:48:10 +0300 Subject: [PATCH 02/22] Added build files to the git ignore. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 259148fa..32673502 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,6 @@ *.exe *.out *.app +build +.DS_Store +*.pro.user From f8426489945827bb504c25827783edd4fc078b5b Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 22:10:30 +0200 Subject: [PATCH 03/22] Disabled 6 homework because it is not buildable. --- tdd_intro/homework/homework.pro | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tdd_intro/homework/homework.pro b/tdd_intro/homework/homework.pro index cf6c01b9..13ac9d31 100644 --- a/tdd_intro/homework/homework.pro +++ b/tdd_intro/homework/homework.pro @@ -5,5 +5,5 @@ SUBDIRS += \ 02_ternary_numbers \ 03_bank_ocr \ 04_weather_client \ - 05_word_wrapp \ - 06_coffee + 05_word_wrapp +# 06_coffee From 1b975944edda2c8fe29c6cc0e94fe72d9289ef97 Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 22:10:58 +0200 Subject: [PATCH 04/22] Implemented one parsing. RED. --- tdd_intro/homework/02_ternary_numbers/test.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 17503028..3e745f9b 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -16,3 +16,15 @@ 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. */ + +#include + +int IntFromTernaryNumberString(const std::string& ternaryNumberString) +{ + return 0; +} + +TEST(IntFromTernaryNumberString, one) +{ + EXPECT_EQ(1, IntFromTernaryNumberString("1")); +} From 96d8352206917d89cb86a9b981422fa04f10e0ac Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 22:11:29 +0200 Subject: [PATCH 05/22] Implemented one parsing. Green. --- tdd_intro/homework/02_ternary_numbers/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 3e745f9b..ef5607d1 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -21,7 +21,7 @@ If your language provides a method in the standard library to perform the conver int IntFromTernaryNumberString(const std::string& ternaryNumberString) { - return 0; + return 1; } TEST(IntFromTernaryNumberString, one) From 4d8bebe17406f6497a6f8f716442df3668b62879 Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 22:13:30 +0200 Subject: [PATCH 06/22] Implemented 2 parsing. RED --- tdd_intro/homework/02_ternary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index ef5607d1..1cb38bb7 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -28,3 +28,8 @@ TEST(IntFromTernaryNumberString, one) { EXPECT_EQ(1, IntFromTernaryNumberString("1")); } + +TEST(IntFromTernaryNumberString, two) +{ + EXPECT_EQ(2, IntFromTernaryNumberString("2")); +} From 6872951c99b2c1aef5b2c1ecfc1f819630fdf4ae Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 22:14:26 +0200 Subject: [PATCH 07/22] Implemented 2 parsing. GREEN --- tdd_intro/homework/02_ternary_numbers/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 1cb38bb7..6ef94273 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -21,7 +21,7 @@ If your language provides a method in the standard library to perform the conver int IntFromTernaryNumberString(const std::string& ternaryNumberString) { - return 1; + return ternaryNumberString.front() - '0'; } TEST(IntFromTernaryNumberString, one) From 5d0f54aa7be3c8ada3dd1bff019266304af8110c Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 22:20:30 +0200 Subject: [PATCH 08/22] Implemented 3 parsing. Green --- tdd_intro/homework/02_ternary_numbers/test.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 6ef94273..e5a94a08 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -21,7 +21,12 @@ If your language provides a method in the standard library to perform the conver int IntFromTernaryNumberString(const std::string& ternaryNumberString) { - return ternaryNumberString.front() - '0'; + if (ternaryNumberString.size() > 1) + { + return 3; + } + + return ternaryNumberString.back() - '0'; } TEST(IntFromTernaryNumberString, one) @@ -33,3 +38,8 @@ TEST(IntFromTernaryNumberString, two) { EXPECT_EQ(2, IntFromTernaryNumberString("2")); } + +TEST(IntFromTernaryNumberString, decimal3ForTernary10) +{ + EXPECT_EQ(3, IntFromTernaryNumberString("10")); +} From 37784bb658747f97eb28ac3a203c9bbb056153e1 Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 22:21:47 +0200 Subject: [PATCH 09/22] Implemented 6 parsing. Red --- tdd_intro/homework/02_ternary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index e5a94a08..0bb57e01 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -43,3 +43,8 @@ TEST(IntFromTernaryNumberString, decimal3ForTernary10) { EXPECT_EQ(3, IntFromTernaryNumberString("10")); } + +TEST(IntFromTernaryNumberString, decimal6ForTernary20) +{ + EXPECT_EQ(6, IntFromTernaryNumberString("20")); +} From a745777f9ebbb6d658865f6fbed0ad7e7b528bc9 Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 22:41:19 +0200 Subject: [PATCH 10/22] Implemented test for 6 parsing. Green --- tdd_intro/homework/02_ternary_numbers/test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 0bb57e01..701df064 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -21,9 +21,9 @@ If your language provides a method in the standard library to perform the conver int IntFromTernaryNumberString(const std::string& ternaryNumberString) { - if (ternaryNumberString.size() > 1) + if (ternaryNumberString.size() == 2) { - return 3; + return (ternaryNumberString.front() - '0') * 3; } return ternaryNumberString.back() - '0'; From a97fb14b24b5724a360bd2971cd867cffc911ded Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 22:43:14 +0200 Subject: [PATCH 11/22] Implemented RED test for 9. --- tdd_intro/homework/02_ternary_numbers/test.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 701df064..ff5e0112 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -26,7 +26,7 @@ int IntFromTernaryNumberString(const std::string& ternaryNumberString) return (ternaryNumberString.front() - '0') * 3; } - return ternaryNumberString.back() - '0'; + return ternaryNumberString.front() - '0'; } TEST(IntFromTernaryNumberString, one) @@ -48,3 +48,9 @@ TEST(IntFromTernaryNumberString, decimal6ForTernary20) { EXPECT_EQ(6, IntFromTernaryNumberString("20")); } + +TEST(IntFromTernaryNumberString, decimal9ForTernary100) +{ + EXPECT_EQ(9, IntFromTernaryNumberString("100")); +} + From 089d2cdcebefa18f08ad5a7596214315351ad88b Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 22:44:01 +0200 Subject: [PATCH 12/22] GREEN --- tdd_intro/homework/02_ternary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index ff5e0112..63bd79cc 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -21,6 +21,11 @@ If your language provides a method in the standard library to perform the conver int IntFromTernaryNumberString(const std::string& ternaryNumberString) { + if (ternaryNumberString.size() == 3) + { + return (ternaryNumberString.front() - '0') * 3 * 3; + } + if (ternaryNumberString.size() == 2) { return (ternaryNumberString.front() - '0') * 3; From 9b3bfa7c1c2f5ec92cb938dc2b79c8ca14bbefbe Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 22:46:32 +0200 Subject: [PATCH 13/22] Refactoring. --- tdd_intro/homework/02_ternary_numbers/test.cpp | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 63bd79cc..36c91fbc 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -18,20 +18,13 @@ If your language provides a method in the standard library to perform the conver */ #include +#include + int IntFromTernaryNumberString(const std::string& ternaryNumberString) { - if (ternaryNumberString.size() == 3) - { - return (ternaryNumberString.front() - '0') * 3 * 3; - } - - if (ternaryNumberString.size() == 2) - { - return (ternaryNumberString.front() - '0') * 3; - } - - return ternaryNumberString.front() - '0'; + size_t power = ternaryNumberString.size() - 1; + return (ternaryNumberString.front() - '0') * std::pow(3, power); } TEST(IntFromTernaryNumberString, one) From ffc94788b2bcb0dfadd8933a3d9ab2f70f24aed7 Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 23:00:03 +0200 Subject: [PATCH 14/22] Implemented RED test for 4 --- tdd_intro/homework/02_ternary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 36c91fbc..3b2fffd3 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -52,3 +52,8 @@ TEST(IntFromTernaryNumberString, decimal9ForTernary100) EXPECT_EQ(9, IntFromTernaryNumberString("100")); } +TEST(IntFromTernaryNumberString, decimal4ForTernary11) +{ + EXPECT_EQ(4, IntFromTernaryNumberString("11")); +} + From 537bc439b579294fc80ff37bcb0f5d44c6e7bab4 Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 23:02:55 +0200 Subject: [PATCH 15/22] GREEN --- tdd_intro/homework/02_ternary_numbers/test.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 3b2fffd3..ab9a4519 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -23,8 +23,17 @@ If your language provides a method in the standard library to perform the conver int IntFromTernaryNumberString(const std::string& ternaryNumberString) { + int result = 0; + size_t power = ternaryNumberString.size() - 1; - return (ternaryNumberString.front() - '0') * std::pow(3, power); + result += (ternaryNumberString.front() - '0') * std::pow(3, power); + + if (ternaryNumberString.size() > 1) + { + result += (ternaryNumberString.back() - '0'); + } + + return result; } TEST(IntFromTernaryNumberString, one) From 508581eed096cefcc39e731e04f932713a415e9a Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 23:05:53 +0200 Subject: [PATCH 16/22] Implemented red test for '111'. --- tdd_intro/homework/02_ternary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index ab9a4519..296f2344 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -66,3 +66,8 @@ TEST(IntFromTernaryNumberString, decimal4ForTernary11) EXPECT_EQ(4, IntFromTernaryNumberString("11")); } +TEST(IntFromTernaryNumberString, decimal13ForTernary111) +{ + EXPECT_EQ(13, IntFromTernaryNumberString("111")); +} + From 65468fa9453c0dcd784cb81dfc6b08a9471d9493 Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 23:06:40 +0200 Subject: [PATCH 17/22] GREEN --- tdd_intro/homework/02_ternary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 296f2344..a22a0ea6 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -28,6 +28,11 @@ int IntFromTernaryNumberString(const std::string& ternaryNumberString) size_t power = ternaryNumberString.size() - 1; result += (ternaryNumberString.front() - '0') * std::pow(3, power); + if (ternaryNumberString.size() > 2) + { + result += (ternaryNumberString.back() - '0') * 3; + } + if (ternaryNumberString.size() > 1) { result += (ternaryNumberString.back() - '0'); From 8eaaa63df8d5e87ab7571355d713cecdf78c6769 Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 23:14:05 +0200 Subject: [PATCH 18/22] Refactoring. --- tdd_intro/homework/02_ternary_numbers/test.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index a22a0ea6..aab6e8a2 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -24,18 +24,10 @@ If your language provides a method in the standard library to perform the conver int IntFromTernaryNumberString(const std::string& ternaryNumberString) { int result = 0; - - size_t power = ternaryNumberString.size() - 1; - result += (ternaryNumberString.front() - '0') * std::pow(3, power); - - if (ternaryNumberString.size() > 2) - { - result += (ternaryNumberString.back() - '0') * 3; - } - - if (ternaryNumberString.size() > 1) + for (size_t i = 0; i < ternaryNumberString.size(); ++i) { - result += (ternaryNumberString.back() - '0'); + size_t power = ternaryNumberString.size() - i - 1; + result += (ternaryNumberString[i] - '0') * std::pow(3, power); } return result; From a058bd3969799e3eb83c2b13ff386a5d4ffe238f Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 23:15:30 +0200 Subject: [PATCH 19/22] Added acceptance test. --- tdd_intro/homework/02_ternary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index aab6e8a2..25e0d613 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -68,3 +68,8 @@ TEST(IntFromTernaryNumberString, decimal13ForTernary111) EXPECT_EQ(13, IntFromTernaryNumberString("111")); } +TEST(IntFromTernaryNumberString, acceptance) +{ + EXPECT_EQ(302, IntFromTernaryNumberString("102012")); +} + From 7b4d5d00d2319be87af91f5fdae9ded6fc54d975 Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 23:20:00 +0200 Subject: [PATCH 20/22] Implemented RED test for invalid ternary. --- tdd_intro/homework/02_ternary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 25e0d613..38790996 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -68,6 +68,11 @@ TEST(IntFromTernaryNumberString, decimal13ForTernary111) EXPECT_EQ(13, IntFromTernaryNumberString("111")); } +TEST(IntFromTernaryNumberString, zeroForInvalidTernary) +{ + EXPECT_EQ(0, IntFromTernaryNumberString("3")); +} + TEST(IntFromTernaryNumberString, acceptance) { EXPECT_EQ(302, IntFromTernaryNumberString("102012")); From 65e138fb69f8c7be5d412a72488b1f50a9a6dd8d Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 23:21:36 +0200 Subject: [PATCH 21/22] GREEN --- tdd_intro/homework/02_ternary_numbers/test.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 38790996..16ff26c3 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -22,10 +22,15 @@ If your language provides a method in the standard library to perform the conver int IntFromTernaryNumberString(const std::string& ternaryNumberString) -{ +{ int result = 0; for (size_t i = 0; i < ternaryNumberString.size(); ++i) { + if (ternaryNumberString[i] < '0' || ternaryNumberString[i] > '2') + { + return 0; + } + size_t power = ternaryNumberString.size() - i - 1; result += (ternaryNumberString[i] - '0') * std::pow(3, power); } From 8886455824f432bd3344419a14cc5a9335fb2fd2 Mon Sep 17 00:00:00 2001 From: Roman Mokych Date: Wed, 7 Nov 2018 23:22:53 +0200 Subject: [PATCH 22/22] Extended test for invalid ternary. --- tdd_intro/homework/02_ternary_numbers/test.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 16ff26c3..88992794 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -76,6 +76,8 @@ TEST(IntFromTernaryNumberString, decimal13ForTernary111) TEST(IntFromTernaryNumberString, zeroForInvalidTernary) { EXPECT_EQ(0, IntFromTernaryNumberString("3")); + EXPECT_EQ(0, IntFromTernaryNumberString("13")); + EXPECT_EQ(0, IntFromTernaryNumberString(".")); } TEST(IntFromTernaryNumberString, acceptance)