From c09e2dde38813019ada0da7e8fc1592a3928e9a6 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 14 Nov 2018 17:52:26 +0200 Subject: [PATCH 01/21] 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/21] 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/21] 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/21] 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 40b205b8aa9ac1b173851231c15e0eac30d0dfcf Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 20:15:43 +0200 Subject: [PATCH 05/21] First red test --- .../homework/02_ternary_numbers/test.cpp | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 1750302..136bb3e 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -16,3 +16,28 @@ 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. */ + +unsigned int TernaryNumber(unsigned int index, unsigned int number) +{ + if (number > 2) + { + return 0; + } + + return 1; +} + +TEST(TernaryNumbers, OneNumber) +{ + ASSERT_EQ(1, TernaryNumber(1, 1)); +} + +TEST(TernaryNumbers, WrongNumber) +{ + ASSERT_EQ(0, TernaryNumber(1, 3)); +} + +TEST(TernaryNumbers, OneIndexTwoNumber) +{ + ASSERT_EQ(2, TernaryNumber(1, 2)); +} From 2f6a6d38a9d356e2ac74ae5b5a385316482e0c7f Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 20:16:37 +0200 Subject: [PATCH 06/21] First green test --- .../homework/02_ternary_numbers/test.cpp | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 136bb3e..3c7d90c 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -19,25 +19,10 @@ If your language provides a method in the standard library to perform the conver unsigned int TernaryNumber(unsigned int index, unsigned int number) { - if (number > 2) - { - return 0; - } - - return 1; + return 3; } TEST(TernaryNumbers, OneNumber) { - ASSERT_EQ(1, TernaryNumber(1, 1)); -} - -TEST(TernaryNumbers, WrongNumber) -{ - ASSERT_EQ(0, TernaryNumber(1, 3)); -} - -TEST(TernaryNumbers, OneIndexTwoNumber) -{ - ASSERT_EQ(2, TernaryNumber(1, 2)); + ASSERT_EQ(3, TernaryNumber(1, 1)); } From efb05b365ec26b1136af6233b690564216477b58 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 20:17:21 +0200 Subject: [PATCH 07/21] Second red 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 3c7d90c..977358f 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -26,3 +26,8 @@ TEST(TernaryNumbers, OneNumber) { ASSERT_EQ(3, TernaryNumber(1, 1)); } + +TEST(TernaryNumbers, WrongNumber) +{ + ASSERT_EQ(0, TernaryNumber(1, 3)); +} From b477a84e3b8910b76fc00cd86b5ce96e5357158d Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 20:17:49 +0200 Subject: [PATCH 08/21] Second green 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 977358f..1204bfc 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -19,6 +19,11 @@ If your language provides a method in the standard library to perform the conver unsigned int TernaryNumber(unsigned int index, unsigned int number) { + if (number > 2) + { + return 0; + } + return 3; } From 63c4ce519feb149efc35ef4525bc55a66a6afdf3 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 20:19:13 +0200 Subject: [PATCH 09/21] Third red 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 1204bfc..264d89e 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -36,3 +36,8 @@ TEST(TernaryNumbers, WrongNumber) { ASSERT_EQ(0, TernaryNumber(1, 3)); } + +TEST(TernaryNumbers, OneIndexTwoNumber) +{ + ASSERT_EQ(6, TernaryNumber(1, 2)); +} From 6f8672c543c8dba995536eb00550a36f0416462c Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 20:19:38 +0200 Subject: [PATCH 10/21] Third green test --- 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 264d89e..31f328d 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -24,7 +24,7 @@ unsigned int TernaryNumber(unsigned int index, unsigned int number) return 0; } - return 3; + return number * std::pow(3, index); } TEST(TernaryNumbers, OneNumber) From c28f0ebdc1b3f22ff3d62acc0aaf5c931e787dd8 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 20:32:42 +0200 Subject: [PATCH 11/21] Third refactoring --- tdd_intro/homework/02_ternary_numbers/test.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 31f328d..3aaa0da 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -17,14 +17,19 @@ 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 + +const unsigned int MaxNumeber = 2; +const unsigned int PowNumeber = 3; + unsigned int TernaryNumber(unsigned int index, unsigned int number) { - if (number > 2) + if (number > MaxNumeber) { return 0; } - return number * std::pow(3, index); + return number * static_cast(std::pow(PowNumeber, index)); } TEST(TernaryNumbers, OneNumber) From 7560a4d2a9d5cb6c3e45775bc80b07f146719db2 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 20:38:15 +0200 Subject: [PATCH 12/21] Fourth red 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 3aaa0da..ca3ebaa 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -46,3 +46,8 @@ TEST(TernaryNumbers, OneIndexTwoNumber) { ASSERT_EQ(6, TernaryNumber(1, 2)); } + +TEST(TernaryNumbers, EmptyNumberString) +{ + ASSERT_EQ(0, ConvertTernaryNumbers("")); +} From 86291eea75b29566f617df6214a7f830cc55efb5 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 20:49:55 +0200 Subject: [PATCH 13/21] Fourth green test --- tdd_intro/homework/02_ternary_numbers/test.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index ca3ebaa..91769ab 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -32,6 +32,16 @@ unsigned int TernaryNumber(unsigned int index, unsigned int number) return number * static_cast(std::pow(PowNumeber, index)); } +unsigned int ConvertTernaryNumbers(const std::string &numbers) +{ + if (numbers.empty()) + { + return 0; + } + + return 1; +} + TEST(TernaryNumbers, OneNumber) { ASSERT_EQ(3, TernaryNumber(1, 1)); From b9b28cacbfb6a9cbcc3a8d6f7c459a325c3c0a3c Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 20:50:20 +0200 Subject: [PATCH 14/21] Fifth red test --- tdd_intro/homework/02_ternary_numbers/test.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 91769ab..aa9646d 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -61,3 +61,9 @@ TEST(TernaryNumbers, EmptyNumberString) { ASSERT_EQ(0, ConvertTernaryNumbers("")); } + + +TEST(TernaryNumbers, OneNumberString) +{ + ASSERT_EQ(3, ConvertTernaryNumbers("1")); +} From a600113752249c2fdbc91aad0393ed8584195f1c Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 20:51:14 +0200 Subject: [PATCH 15/21] Fifth green test --- tdd_intro/homework/02_ternary_numbers/test.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index aa9646d..f54a1c7 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -39,7 +39,7 @@ unsigned int ConvertTernaryNumbers(const std::string &numbers) return 0; } - return 1; + return TernaryNumber(1, std::stoul(numbers)); } TEST(TernaryNumbers, OneNumber) @@ -62,7 +62,6 @@ TEST(TernaryNumbers, EmptyNumberString) ASSERT_EQ(0, ConvertTernaryNumbers("")); } - TEST(TernaryNumbers, OneNumberString) { ASSERT_EQ(3, ConvertTernaryNumbers("1")); From 511a52951e542a4db9198abe665233c17b5671e3 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 20:52:10 +0200 Subject: [PATCH 16/21] Sixth red 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 f54a1c7..22f523e 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -66,3 +66,8 @@ TEST(TernaryNumbers, OneNumberString) { ASSERT_EQ(3, ConvertTernaryNumbers("1")); } + +TEST(TernaryNumbers, MultipleNumberString) +{ + ASSERT_EQ(3, ConvertTernaryNumbers("10")); +} From 0f93668f5b576ac248fa14fad28430d7283f8464 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 21:39:40 +0200 Subject: [PATCH 17/21] Sixth green test --- tdd_intro/homework/02_ternary_numbers/test.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 22f523e..2d37d2e 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -39,7 +39,16 @@ unsigned int ConvertTernaryNumbers(const std::string &numbers) return 0; } - return TernaryNumber(1, std::stoul(numbers)); + unsigned int sum = 0; + for (auto rIter = numbers.rbegin(); rIter != numbers.rend(); ++rIter) + { + unsigned int rIterIndex = rIter - numbers.rbegin(); + unsigned int place = rIterIndex == 0 ? 1 : rIterIndex * 3; + unsigned int num = TernaryNumber(place, std::stoul(std::string(1, *rIter))); + sum += num; + } + + return sum; } TEST(TernaryNumbers, OneNumber) @@ -69,5 +78,5 @@ TEST(TernaryNumbers, OneNumberString) TEST(TernaryNumbers, MultipleNumberString) { - ASSERT_EQ(3, ConvertTernaryNumbers("10")); + ASSERT_EQ(27, ConvertTernaryNumbers("10")); } From ae29dd3b588bb9df2e149332567ccbf16f22562a Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 21:43:33 +0200 Subject: [PATCH 18/21] Seventh red test --- tdd_intro/homework/02_ternary_numbers/test.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 2d37d2e..6221673 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -21,6 +21,7 @@ If your language provides a method in the standard library to perform the conver const unsigned int MaxNumeber = 2; const unsigned int PowNumeber = 3; +const unsigned int IndexMultiplier = 3; unsigned int TernaryNumber(unsigned int index, unsigned int number) { @@ -43,8 +44,9 @@ unsigned int ConvertTernaryNumbers(const std::string &numbers) for (auto rIter = numbers.rbegin(); rIter != numbers.rend(); ++rIter) { unsigned int rIterIndex = rIter - numbers.rbegin(); - unsigned int place = rIterIndex == 0 ? 1 : rIterIndex * 3; + unsigned int place = rIterIndex == 0 ? 1 : rIterIndex * IndexMultiplier; unsigned int num = TernaryNumber(place, std::stoul(std::string(1, *rIter))); + sum += num; } @@ -80,3 +82,8 @@ TEST(TernaryNumbers, MultipleNumberString) { ASSERT_EQ(27, ConvertTernaryNumbers("10")); } + +TEST(TernaryNumbers, WrongMultipleNumberString) +{ + ASSERT_EQ(0, ConvertTernaryNumbers("13")); +} From 61c33934b02025a16dfad1bbf33d7bdc5f473e76 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 21:45:21 +0200 Subject: [PATCH 19/21] Seventh green test --- 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 6221673..e31b3bd 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -43,9 +43,15 @@ unsigned int ConvertTernaryNumbers(const std::string &numbers) unsigned int sum = 0; for (auto rIter = numbers.rbegin(); rIter != numbers.rend(); ++rIter) { + unsigned int number = std::stoul(std::string(1, *rIter)); + if (number > MaxNumeber) + { + return 0; + } + unsigned int rIterIndex = rIter - numbers.rbegin(); unsigned int place = rIterIndex == 0 ? 1 : rIterIndex * IndexMultiplier; - unsigned int num = TernaryNumber(place, std::stoul(std::string(1, *rIter))); + unsigned int num = TernaryNumber(place, number); sum += num; } From a80d664c77e06ebf540e0f1aab162900bfe612fc Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 21:46:13 +0200 Subject: [PATCH 20/21] Seventh refactoring --- tdd_intro/homework/02_ternary_numbers/test.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index e31b3bd..1ac6318 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -19,17 +19,12 @@ If your language provides a method in the standard library to perform the conver #include -const unsigned int MaxNumeber = 2; +const unsigned int MaxNumber = 2; const unsigned int PowNumeber = 3; const unsigned int IndexMultiplier = 3; unsigned int TernaryNumber(unsigned int index, unsigned int number) { - if (number > MaxNumeber) - { - return 0; - } - return number * static_cast(std::pow(PowNumeber, index)); } @@ -44,7 +39,7 @@ unsigned int ConvertTernaryNumbers(const std::string &numbers) for (auto rIter = numbers.rbegin(); rIter != numbers.rend(); ++rIter) { unsigned int number = std::stoul(std::string(1, *rIter)); - if (number > MaxNumeber) + if (number > MaxNumber) { return 0; } From cbc8d473be410a62583d519862fd6428d60d13c5 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 4 Dec 2018 21:49:39 +0200 Subject: [PATCH 21/21] Acceptence --- tdd_intro/homework/02_ternary_numbers/test.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 1ac6318..45b99e0 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -25,6 +25,11 @@ const unsigned int IndexMultiplier = 3; unsigned int TernaryNumber(unsigned int index, unsigned int number) { + if (number > MaxNumber) + { + return 0; + } + return number * static_cast(std::pow(PowNumeber, index)); } @@ -88,3 +93,11 @@ TEST(TernaryNumbers, WrongMultipleNumberString) { ASSERT_EQ(0, ConvertTernaryNumbers("13")); } + +TEST(TernaryNumbers, Acceptence) +{ + ASSERT_EQ(0, ConvertTernaryNumbers("3102")); + ASSERT_EQ(0, ConvertTernaryNumbers("0")); + ASSERT_EQ(6, ConvertTernaryNumbers("02")); + ASSERT_EQ(19743, ConvertTernaryNumbers("1022")); +}