From b995d3778ee6e781176d954dad439ab4fc4cbc62 Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:05:34 +0300 Subject: [PATCH 01/51] Red. Empty line --- tdd_intro/homework/01_word_count/test.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index 4d36c9c..6678bf1 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -20,3 +20,9 @@ MyMap WordsCount(const std::string& str) { } + + +TEST(WordsCount, empty_line) +{ + EXPECT_TRUE(WordsCount("").empty()); +} From 57187da777f1fd5547b7de99d2713e251717220b Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:08:09 +0300 Subject: [PATCH 02/51] Green. Empty line --- tdd_intro/homework/01_word_count/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index 6678bf1..83105b8 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -18,7 +18,7 @@ using MyMap = std::map; MyMap WordsCount(const std::string& str) { - + return MyMap(); } From c1df72aa395b7cf3aceea3c9843297d3e21273c2 Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:22:31 +0300 Subject: [PATCH 03/51] Red. single word --- tdd_intro/homework/01_word_count/test.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index 83105b8..b50e4e9 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -26,3 +26,9 @@ TEST(WordsCount, empty_line) { EXPECT_TRUE(WordsCount("").empty()); } + +TEST(WordsCount, single_word) +{ + MyMap expected {std::make_pair("singleWord", 1)}; + EXPECT_EQ(expected, WordsCount("singleWord")); +} From af362973b95d0b3d5d3567a037e4e815ce06edca Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:25:03 +0300 Subject: [PATCH 04/51] Green single word and red empty line --- tdd_intro/homework/01_word_count/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index b50e4e9..b740973 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -18,7 +18,7 @@ using MyMap = std::map; MyMap WordsCount(const std::string& str) { - return MyMap(); + return MyMap{std::make_pair("singleWord", 1)}; } From 3302c388789b7bc8a096909b15faf1e58a269691 Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:31:32 +0300 Subject: [PATCH 05/51] Test refactoring --- tdd_intro/homework/01_word_count/test.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index b740973..7a77909 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -18,6 +18,10 @@ using MyMap = std::map; MyMap WordsCount(const std::string& str) { + if (str.empty()) + { + return MyMap(); + } return MyMap{std::make_pair("singleWord", 1)}; } @@ -29,6 +33,7 @@ TEST(WordsCount, empty_line) TEST(WordsCount, single_word) { - MyMap expected {std::make_pair("singleWord", 1)}; - EXPECT_EQ(expected, WordsCount("singleWord")); + const std::string singleWord = "singleWord"; + MyMap expected {std::make_pair(singleWord, 1)}; + EXPECT_EQ(expected, WordsCount(singleWord)); } From 4164773a74d5724367139607f66f536e010ed459 Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:32:23 +0300 Subject: [PATCH 06/51] Code refactoring --- tdd_intro/homework/01_word_count/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index 7a77909..5732428 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -22,7 +22,7 @@ MyMap WordsCount(const std::string& str) { return MyMap(); } - return MyMap{std::make_pair("singleWord", 1)}; + return MyMap{std::make_pair(str, 1)}; } From 707a0601433d01b07f0f6dba2063a1e99bc4b19b Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:35:03 +0300 Subject: [PATCH 07/51] Red two different words --- tdd_intro/homework/01_word_count/test.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index 5732428..9b943dc 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -37,3 +37,10 @@ TEST(WordsCount, single_word) MyMap expected {std::make_pair(singleWord, 1)}; EXPECT_EQ(expected, WordsCount(singleWord)); } + +TEST(WordsCount, two_different_words) +{ + MyMap expected {std::make_pair("word_1", 1), + std::make_pair("word_2", 1)}; + EXPECT_EQ(expected, WordsCount("word_1 word_2")); +} From c958502ff091c3da7847a096769ccb98903ba943 Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:36:13 +0300 Subject: [PATCH 08/51] Green two different words --- tdd_intro/homework/01_word_count/test.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index 9b943dc..53c097f 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -22,7 +22,14 @@ MyMap WordsCount(const std::string& str) { return MyMap(); } - return MyMap{std::make_pair(str, 1)}; + + if (str == "singleWord") + { + return MyMap{std::make_pair(str, 1)}; + } + + return MyMap {std::make_pair("word_1", 1), + std::make_pair("word_2", 1)}; } From 0571b4782adcd79c820155c5c1efd1fecd1e0cad Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:46:16 +0300 Subject: [PATCH 09/51] Code refactoring --- tdd_intro/homework/01_word_count/test.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index 53c097f..c894c57 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -13,6 +13,7 @@ free: 1 #include #include #include +#include using MyMap = std::map; @@ -23,13 +24,18 @@ MyMap WordsCount(const std::string& str) return MyMap(); } - if (str == "singleWord") + MyMap result; + + std::istringstream stream(str); + std::string token; + + while(std::getline(stream, token, ' ')) { - return MyMap{std::make_pair(str, 1)}; + result[token] = 1; } - return MyMap {std::make_pair("word_1", 1), - std::make_pair("word_2", 1)}; + + return result; } From 7e28108982d54af33e44403cf6e95d20cc1aa133 Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:47:32 +0300 Subject: [PATCH 10/51] Red two same words --- tdd_intro/homework/01_word_count/test.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index c894c57..50eac92 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -34,7 +34,6 @@ MyMap WordsCount(const std::string& str) result[token] = 1; } - return result; } @@ -57,3 +56,9 @@ TEST(WordsCount, two_different_words) std::make_pair("word_2", 1)}; EXPECT_EQ(expected, WordsCount("word_1 word_2")); } + +TEST(WordsCount, two_same_words) +{ + MyMap expected {std::make_pair("word_1", 2)}; + EXPECT_EQ(expected, WordsCount("word_1 word_1")); +} From 1e9928b450a6b923c72c6585cffb3faa76827f67 Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:48:55 +0300 Subject: [PATCH 11/51] Green two same words --- tdd_intro/homework/01_word_count/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index 50eac92..182f0ac 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -19,6 +19,11 @@ using MyMap = std::map; MyMap WordsCount(const std::string& str) { + if (str == "word_1 word_1") + { + return {std::make_pair("word_1", 2)}; + } + if (str.empty()) { return MyMap(); From 6234fb4e8f9b3483486db7e856f462f95f186aa6 Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:49:34 +0300 Subject: [PATCH 12/51] Code refactoring --- tdd_intro/homework/01_word_count/test.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index 182f0ac..5566444 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -19,11 +19,6 @@ using MyMap = std::map; MyMap WordsCount(const std::string& str) { - if (str == "word_1 word_1") - { - return {std::make_pair("word_1", 2)}; - } - if (str.empty()) { return MyMap(); @@ -36,7 +31,7 @@ MyMap WordsCount(const std::string& str) while(std::getline(stream, token, ' ')) { - result[token] = 1; + ++result[token]; } return result; From 6bd527e5128452cdb8854f0637dfb22d64935783 Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:51:37 +0300 Subject: [PATCH 13/51] Red two different words with double space --- tdd_intro/homework/01_word_count/test.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index 5566444..e7eb8ef 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -62,3 +62,10 @@ TEST(WordsCount, two_same_words) MyMap expected {std::make_pair("word_1", 2)}; EXPECT_EQ(expected, WordsCount("word_1 word_1")); } + +TEST(WordsCount, two_different_words_with_double_space) +{ + MyMap expected {std::make_pair("word_1", 1), + std::make_pair("word_2", 1)}; + EXPECT_EQ(expected, WordsCount("word_1 word_2")); +} From fc77cbb8768d037d386072cf15bef76e3b1fca2c Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:52:42 +0300 Subject: [PATCH 14/51] Green two different words with double space --- tdd_intro/homework/01_word_count/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index e7eb8ef..94dba57 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -19,6 +19,11 @@ using MyMap = std::map; MyMap WordsCount(const std::string& str) { + if (str == "word_1 word_2") + { + return {std::make_pair("word_1", 1), std::make_pair("word_2", 1)}; + } + if (str.empty()) { return MyMap(); From 4fc41296d2bc59b903777d57c8bb954976185b00 Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:53:35 +0300 Subject: [PATCH 15/51] Code refactoring --- tdd_intro/homework/01_word_count/test.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index 94dba57..59fcfc6 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -19,11 +19,6 @@ using MyMap = std::map; MyMap WordsCount(const std::string& str) { - if (str == "word_1 word_2") - { - return {std::make_pair("word_1", 1), std::make_pair("word_2", 1)}; - } - if (str.empty()) { return MyMap(); @@ -36,7 +31,10 @@ MyMap WordsCount(const std::string& str) while(std::getline(stream, token, ' ')) { - ++result[token]; + if (!token.empty()) + { + ++result[token]; + } } return result; From ad30f79aa26fecf74d3d49093878b7de2a49a4a2 Mon Sep 17 00:00:00 2001 From: Krestol Date: Fri, 14 Sep 2018 11:55:54 +0300 Subject: [PATCH 16/51] acceptance --- tdd_intro/homework/01_word_count/test.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tdd_intro/homework/01_word_count/test.cpp b/tdd_intro/homework/01_word_count/test.cpp index 59fcfc6..fe0d40d 100644 --- a/tdd_intro/homework/01_word_count/test.cpp +++ b/tdd_intro/homework/01_word_count/test.cpp @@ -72,3 +72,12 @@ TEST(WordsCount, two_different_words_with_double_space) std::make_pair("word_2", 1)}; EXPECT_EQ(expected, WordsCount("word_1 word_2")); } + +TEST(WordsCount, acceptance) +{ + MyMap expected {std::make_pair("olly", 2), + std::make_pair("in", 1), + std::make_pair("come", 1), + std::make_pair("free", 1)}; + EXPECT_EQ(expected, WordsCount("olly olly in come free")); +} From 1c47d5c6ac60343d484ace4d2a187797442ba3cd Mon Sep 17 00:00:00 2001 From: krestol Date: Tue, 18 Sep 2018 06:48:45 +0300 Subject: [PATCH 17/51] red. one_return_false --- tdd_intro/homework/02_leap_year/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_leap_year/test.cpp b/tdd_intro/homework/02_leap_year/test.cpp index 4f186c8..60f3796 100644 --- a/tdd_intro/homework/02_leap_year/test.cpp +++ b/tdd_intro/homework/02_leap_year/test.cpp @@ -13,3 +13,8 @@ If your language provides a method in the standard library that does this look-u */ #include + +TEST(IsYearLeap, one_return_false) +{ + EXPECT_FALSE(IsLeapYear(1)); +} From 6aa614f9394a1d7d163e8144ff9461c137ffd0ad Mon Sep 17 00:00:00 2001 From: krestol Date: Tue, 18 Sep 2018 06:50:17 +0300 Subject: [PATCH 18/51] red. one_return_false --- tdd_intro/homework/02_leap_year/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_leap_year/test.cpp b/tdd_intro/homework/02_leap_year/test.cpp index 60f3796..7b9cf24 100644 --- a/tdd_intro/homework/02_leap_year/test.cpp +++ b/tdd_intro/homework/02_leap_year/test.cpp @@ -14,6 +14,11 @@ If your language provides a method in the standard library that does this look-u #include +bool IsLeapYear(int year) +{ + return true; +} + TEST(IsYearLeap, one_return_false) { EXPECT_FALSE(IsLeapYear(1)); From 823f5627cef831204ac552009db4cbafbd2afa17 Mon Sep 17 00:00:00 2001 From: krestol Date: Tue, 18 Sep 2018 06:50:53 +0300 Subject: [PATCH 19/51] green. one_return_false --- tdd_intro/homework/02_leap_year/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_leap_year/test.cpp b/tdd_intro/homework/02_leap_year/test.cpp index 7b9cf24..d389777 100644 --- a/tdd_intro/homework/02_leap_year/test.cpp +++ b/tdd_intro/homework/02_leap_year/test.cpp @@ -16,7 +16,7 @@ If your language provides a method in the standard library that does this look-u bool IsLeapYear(int year) { - return true; + return year != 1; } TEST(IsYearLeap, one_return_false) From 7fed5d4497a1cd5cad5602d88f424d0ac674de23 Mon Sep 17 00:00:00 2001 From: krestol Date: Tue, 18 Sep 2018 06:52:06 +0300 Subject: [PATCH 20/51] refactoring. one_return_false --- tdd_intro/homework/02_leap_year/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_leap_year/test.cpp b/tdd_intro/homework/02_leap_year/test.cpp index d389777..8547d61 100644 --- a/tdd_intro/homework/02_leap_year/test.cpp +++ b/tdd_intro/homework/02_leap_year/test.cpp @@ -16,7 +16,7 @@ If your language provides a method in the standard library that does this look-u bool IsLeapYear(int year) { - return year != 1; + return year % 4 == 0; } TEST(IsYearLeap, one_return_false) From 352734d10008c655dac92bea740d2d7c155999fd Mon Sep 17 00:00:00 2001 From: krestol Date: Tue, 18 Sep 2018 06:53:12 +0300 Subject: [PATCH 21/51] red. hundred_return_false --- tdd_intro/homework/02_leap_year/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_leap_year/test.cpp b/tdd_intro/homework/02_leap_year/test.cpp index 8547d61..838caf6 100644 --- a/tdd_intro/homework/02_leap_year/test.cpp +++ b/tdd_intro/homework/02_leap_year/test.cpp @@ -23,3 +23,8 @@ TEST(IsYearLeap, one_return_false) { EXPECT_FALSE(IsLeapYear(1)); } + +TEST(IsYearLeap, hundred_return_false) +{ + EXPECT_FALSE(IsLeapYear(100)); +} From eb4708f541363b29667a87ffd0a9929772dd3b89 Mon Sep 17 00:00:00 2001 From: krestol Date: Tue, 18 Sep 2018 06:54:02 +0300 Subject: [PATCH 22/51] green. hundred_return_false --- tdd_intro/homework/02_leap_year/test.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tdd_intro/homework/02_leap_year/test.cpp b/tdd_intro/homework/02_leap_year/test.cpp index 838caf6..ca738b6 100644 --- a/tdd_intro/homework/02_leap_year/test.cpp +++ b/tdd_intro/homework/02_leap_year/test.cpp @@ -16,6 +16,10 @@ If your language provides a method in the standard library that does this look-u bool IsLeapYear(int year) { + if (year == 100) + { + return false; + } return year % 4 == 0; } From 195057a217aca30f812300382f915fbbacbdfe39 Mon Sep 17 00:00:00 2001 From: krestol Date: Tue, 18 Sep 2018 06:55:20 +0300 Subject: [PATCH 23/51] refactoring. hundred_return_false --- tdd_intro/homework/02_leap_year/test.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tdd_intro/homework/02_leap_year/test.cpp b/tdd_intro/homework/02_leap_year/test.cpp index ca738b6..90a54ea 100644 --- a/tdd_intro/homework/02_leap_year/test.cpp +++ b/tdd_intro/homework/02_leap_year/test.cpp @@ -16,11 +16,7 @@ If your language provides a method in the standard library that does this look-u bool IsLeapYear(int year) { - if (year == 100) - { - return false; - } - return year % 4 == 0; + return year % 4 == 0 && year % 100 != 0; } TEST(IsYearLeap, one_return_false) From f7b8dbff46441af6b589fbf8aa48699cb334d570 Mon Sep 17 00:00:00 2001 From: krestol Date: Tue, 18 Sep 2018 06:56:17 +0300 Subject: [PATCH 24/51] red. four_hundred_return_true --- tdd_intro/homework/02_leap_year/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_leap_year/test.cpp b/tdd_intro/homework/02_leap_year/test.cpp index 90a54ea..ce26af3 100644 --- a/tdd_intro/homework/02_leap_year/test.cpp +++ b/tdd_intro/homework/02_leap_year/test.cpp @@ -28,3 +28,8 @@ TEST(IsYearLeap, hundred_return_false) { EXPECT_FALSE(IsLeapYear(100)); } + +TEST(IsYearLeap, four_hundred_return_true) +{ + EXPECT_TRUE(IsLeapYear(400)); +} From 87e1307653fef91b1a99195edd9701c8e8b34628 Mon Sep 17 00:00:00 2001 From: krestol Date: Tue, 18 Sep 2018 06:56:58 +0300 Subject: [PATCH 25/51] green. four_hundred_return_true --- tdd_intro/homework/02_leap_year/test.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tdd_intro/homework/02_leap_year/test.cpp b/tdd_intro/homework/02_leap_year/test.cpp index ce26af3..a2ba00d 100644 --- a/tdd_intro/homework/02_leap_year/test.cpp +++ b/tdd_intro/homework/02_leap_year/test.cpp @@ -16,6 +16,10 @@ If your language provides a method in the standard library that does this look-u bool IsLeapYear(int year) { + if (year == 400) + { + return true; + } return year % 4 == 0 && year % 100 != 0; } From d357df44f645d4c73f95fda2d4a070667dca9dae Mon Sep 17 00:00:00 2001 From: krestol Date: Tue, 18 Sep 2018 06:58:47 +0300 Subject: [PATCH 26/51] refactoring. four_hundred_return_true --- tdd_intro/homework/02_leap_year/test.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tdd_intro/homework/02_leap_year/test.cpp b/tdd_intro/homework/02_leap_year/test.cpp index a2ba00d..3f6a87c 100644 --- a/tdd_intro/homework/02_leap_year/test.cpp +++ b/tdd_intro/homework/02_leap_year/test.cpp @@ -16,11 +16,7 @@ If your language provides a method in the standard library that does this look-u bool IsLeapYear(int year) { - if (year == 400) - { - return true; - } - return year % 4 == 0 && year % 100 != 0; + return year % 400 == 0 || year % 4 == 0 && year % 100 != 0; } TEST(IsYearLeap, one_return_false) From aab847a863af85fcd2abf87df945a6c6abc8ca3b Mon Sep 17 00:00:00 2001 From: krestol Date: Tue, 18 Sep 2018 07:00:57 +0300 Subject: [PATCH 27/51] acceptance --- tdd_intro/homework/02_leap_year/test.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tdd_intro/homework/02_leap_year/test.cpp b/tdd_intro/homework/02_leap_year/test.cpp index 3f6a87c..30da571 100644 --- a/tdd_intro/homework/02_leap_year/test.cpp +++ b/tdd_intro/homework/02_leap_year/test.cpp @@ -33,3 +33,11 @@ TEST(IsYearLeap, four_hundred_return_true) { EXPECT_TRUE(IsLeapYear(400)); } + +TEST(IsYearLeap, acceptance) +{ + EXPECT_FALSE(IsLeapYear(1900)); + EXPECT_TRUE(IsLeapYear(1996)); + EXPECT_FALSE(IsLeapYear(1997)); + EXPECT_TRUE(IsLeapYear(2000)); +} From 24aad50195645be773f60b37f068f8e7b21fc966 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:28:26 +0300 Subject: [PATCH 28/51] red. CharToTernaryDigit input_zero --- tdd_intro/homework/02_trinary_numbers/test.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index c35967c..c720197 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -16,3 +16,9 @@ The last place in a trinary 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. */ + + +TEST(CharToTernary, zero) +{ + EXPECT_EQ(0, CharToTernaryDigit('0')); +} From e13dd8b325a98d53d3185e752ffe22e9502b5b7d Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:29:22 +0300 Subject: [PATCH 29/51] red. CharToTernaryDigit input_zero --- tdd_intro/homework/02_trinary_numbers/test.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index c720197..5411ee8 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -18,7 +18,12 @@ If your language provides a method in the standard library to perform the conver */ -TEST(CharToTernary, zero) +int CharToTernaryDigit(char ch) +{ + return 1; +} + +TEST(CharToTernaryDigit, input_zero) { EXPECT_EQ(0, CharToTernaryDigit('0')); } From db95249df375962d2a0dc6630f4a8063ca59c087 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:30:02 +0300 Subject: [PATCH 30/51] green. CharToTernaryDigit input_zero --- tdd_intro/homework/02_trinary_numbers/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index 5411ee8..8140f20 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -20,7 +20,7 @@ If your language provides a method in the standard library to perform the conver int CharToTernaryDigit(char ch) { - return 1; + return 0; } TEST(CharToTernaryDigit, input_zero) From 43c0727a60fc5508189b598076e19c3e89fb342b Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:31:07 +0300 Subject: [PATCH 31/51] refactoring. CharToTernaryDigit input_zero --- tdd_intro/homework/02_trinary_numbers/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index 8140f20..21b87fa 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -20,7 +20,7 @@ If your language provides a method in the standard library to perform the conver int CharToTernaryDigit(char ch) { - return 0; + return ch - '0'; } TEST(CharToTernaryDigit, input_zero) From cc7cbd15247cae402e855cf5b9a4ac6b169d55e2 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:34:23 +0300 Subject: [PATCH 32/51] red. CharToTernaryDigit input_four_throw --- tdd_intro/homework/02_trinary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index 21b87fa..1f063c7 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -27,3 +27,8 @@ TEST(CharToTernaryDigit, input_zero) { EXPECT_EQ(0, CharToTernaryDigit('0')); } + +TEST(CharToTernaryDigit, input_four_throw) +{ + EXPECT_THROW(CharToTernaryDigit('4'), std::runtime_error); +} From 382305c096f4c9d837c1cf021d01595f1abe9c54 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:41:59 +0300 Subject: [PATCH 33/51] green. CharToTernaryDigit input_four_throw --- tdd_intro/homework/02_trinary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index 1f063c7..ac4c1f6 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -20,6 +20,11 @@ If your language provides a method in the standard library to perform the conver int CharToTernaryDigit(char ch) { + if (ch == '4') + { + throw std::runtime_error("non ternary"); + } + return ch - '0'; } From 2103d5e5dadbe87b94e19c6846e6759ebdabcb6d Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:43:03 +0300 Subject: [PATCH 34/51] refactoring. CharToTernaryDigit input_four_throw --- tdd_intro/homework/02_trinary_numbers/test.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index ac4c1f6..e6eee45 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -20,12 +20,12 @@ If your language provides a method in the standard library to perform the conver int CharToTernaryDigit(char ch) { - if (ch == '4') + if (ch < '3') { - throw std::runtime_error("non ternary"); + return ch - '0'; } - return ch - '0'; + throw std::runtime_error("non ternary"); } TEST(CharToTernaryDigit, input_zero) From 7e87822ea6d9032d859e9c31f9826e5cf6931901 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:45:07 +0300 Subject: [PATCH 35/51] red. CharToTernaryDigit input_47_throw --- tdd_intro/homework/02_trinary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index e6eee45..29fc6bd 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -37,3 +37,8 @@ TEST(CharToTernaryDigit, input_four_throw) { EXPECT_THROW(CharToTernaryDigit('4'), std::runtime_error); } + +TEST(CharToTernaryDigit, input_47_throw) +{ + EXPECT_THROW(CharToTernaryDigit('/'), std::runtime_error); +} From 279152fadec29c1c83b428b5e27b2e6663f231cc Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:46:07 +0300 Subject: [PATCH 36/51] green. CharToTernaryDigit input_47_throw --- tdd_intro/homework/02_trinary_numbers/test.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index 29fc6bd..9ac1888 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -20,6 +20,10 @@ If your language provides a method in the standard library to perform the conver int CharToTernaryDigit(char ch) { + if (ch == '/') + { + throw std::runtime_error("non ternary"); + } if (ch < '3') { return ch - '0'; From 8c827b68cb69b740d87220f54a9aa77603d358e4 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:47:10 +0300 Subject: [PATCH 37/51] refactoring. CharToTernaryDigit input_47_throw --- tdd_intro/homework/02_trinary_numbers/test.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index 9ac1888..abe6374 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -20,11 +20,7 @@ If your language provides a method in the standard library to perform the conver int CharToTernaryDigit(char ch) { - if (ch == '/') - { - throw std::runtime_error("non ternary"); - } - if (ch < '3') + if (ch >= '0' && ch < '3') { return ch - '0'; } From e624d8e48f30cc4116f0dc9e74c3b51821ccc335 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:49:50 +0300 Subject: [PATCH 38/51] red. StringToTernaryNumber input_zero --- tdd_intro/homework/02_trinary_numbers/test.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index abe6374..bcca42b 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -38,7 +38,12 @@ TEST(CharToTernaryDigit, input_four_throw) EXPECT_THROW(CharToTernaryDigit('4'), std::runtime_error); } -TEST(CharToTernaryDigit, input_47_throw) +TEST(CharToTernaryDigit, input_0) { EXPECT_THROW(CharToTernaryDigit('/'), std::runtime_error); } + +TEST(StringToTernaryNumber, input_zero) +{ + EXPECT_EQ(0, StringToTernaryNumber("0")); +} From d0b0024ad7d47529bfd88bb1a7f9537e1b7953f2 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:50:33 +0300 Subject: [PATCH 39/51] red. StringToTernaryNumber input_zero --- tdd_intro/homework/02_trinary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index bcca42b..802427d 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -28,6 +28,11 @@ int CharToTernaryDigit(char ch) throw std::runtime_error("non ternary"); } +int StringToTernaryNumber(const std::string& number) +{ + return 1; +} + TEST(CharToTernaryDigit, input_zero) { EXPECT_EQ(0, CharToTernaryDigit('0')); From b3e101cb3a3ef4ec3071f263e16b1835df79910a Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:50:58 +0300 Subject: [PATCH 40/51] green. StringToTernaryNumber input_zero --- tdd_intro/homework/02_trinary_numbers/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index 802427d..c96a50c 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -30,7 +30,7 @@ int CharToTernaryDigit(char ch) int StringToTernaryNumber(const std::string& number) { - return 1; + return 0; } TEST(CharToTernaryDigit, input_zero) From 6b5bc443ec69531d3e0a8fa1c96ff50247c2f941 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:51:45 +0300 Subject: [PATCH 41/51] refactoring. StringToTernaryNumber input_zero --- tdd_intro/homework/02_trinary_numbers/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index c96a50c..a2bc573 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -30,7 +30,7 @@ int CharToTernaryDigit(char ch) int StringToTernaryNumber(const std::string& number) { - return 0; + return CharToTernaryDigit(number[0]); } TEST(CharToTernaryDigit, input_zero) From 1c6599eaff3d93e91836f1b4844c50f28cbddcd7 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:52:40 +0300 Subject: [PATCH 42/51] red. StringToTernaryNumber input_empty_string --- tdd_intro/homework/02_trinary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index a2bc573..86cebc5 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -52,3 +52,8 @@ TEST(StringToTernaryNumber, input_zero) { EXPECT_EQ(0, StringToTernaryNumber("0")); } + +TEST(StringToTernaryNumber, input_empty_string) +{ + EXPECT_EQ(0, StringToTernaryNumber("")); +} From 4e3bed435405fe2228b7ef2fba4b9616abca12ea Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:53:21 +0300 Subject: [PATCH 43/51] green. StringToTernaryNumber input_empty_string --- tdd_intro/homework/02_trinary_numbers/test.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index 86cebc5..c60373c 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -30,7 +30,12 @@ int CharToTernaryDigit(char ch) int StringToTernaryNumber(const std::string& number) { - return CharToTernaryDigit(number[0]); + if (!number.empty()) + { + return CharToTernaryDigit(number[0]); + } + + return 0; } TEST(CharToTernaryDigit, input_zero) From ffc2a927541d3048cc1b8ce012434e190f3d1940 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:57:50 +0300 Subject: [PATCH 44/51] red. StringToTernaryNumber input_10 --- tdd_intro/homework/02_trinary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index c60373c..491fc43 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -62,3 +62,8 @@ TEST(StringToTernaryNumber, input_empty_string) { EXPECT_EQ(0, StringToTernaryNumber("")); } + +TEST(StringToTernaryNumber, input_10) +{ + EXPECT_EQ(3, StringToTernaryNumber("10")); +} From aab42b78c724d0a82a28d245f1831d29072faa07 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 12:58:34 +0300 Subject: [PATCH 45/51] green. StringToTernaryNumber input_10 --- tdd_intro/homework/02_trinary_numbers/test.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index 491fc43..4291d74 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -30,6 +30,10 @@ int CharToTernaryDigit(char ch) int StringToTernaryNumber(const std::string& number) { + if (number == "10") + { + return 3; + } if (!number.empty()) { return CharToTernaryDigit(number[0]); From bb4092a051ae86e05c890a89c2f627fd17ba89b4 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 13:04:11 +0300 Subject: [PATCH 46/51] refactoring. StringToTernaryNumber input_10 --- tdd_intro/homework/02_trinary_numbers/test.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index 4291d74..4cc9d30 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -30,16 +30,16 @@ int CharToTernaryDigit(char ch) int StringToTernaryNumber(const std::string& number) { - if (number == "10") + int result = 0; + for (int i = number.size() - 1; i >= 0; --i) { - return 3; - } - if (!number.empty()) - { - return CharToTernaryDigit(number[0]); + if (!number.empty()) + { + result += CharToTernaryDigit(number[i]) * (std::pow(3, number.size() - i - 1)); + } } - return 0; + return result; } TEST(CharToTernaryDigit, input_zero) From 319bb5161218bf70246075d79f5e39807a1c573a Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 13:05:08 +0300 Subject: [PATCH 47/51] refactoring. StringToTernaryNumber input_10 --- tdd_intro/homework/02_trinary_numbers/test.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index 4cc9d30..c0a247d 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -31,11 +31,12 @@ int CharToTernaryDigit(char ch) int StringToTernaryNumber(const std::string& number) { int result = 0; - for (int i = number.size() - 1; i >= 0; --i) + const int numberOfDigits = number.size() - 1; + for (int i = numberOfDigits; i >= 0; --i) { if (!number.empty()) { - result += CharToTernaryDigit(number[i]) * (std::pow(3, number.size() - i - 1)); + result += CharToTernaryDigit(number[i]) * (std::pow(3, numberOfDigits - i)); } } From 04b1343448452f392731e74ae769fe70930830d0 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 13:06:07 +0300 Subject: [PATCH 48/51] red. StringToTernaryNumber input_invalid_string --- tdd_intro/homework/02_trinary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index c0a247d..6dfb639 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -72,3 +72,8 @@ TEST(StringToTernaryNumber, input_10) { EXPECT_EQ(3, StringToTernaryNumber("10")); } + +TEST(StringToTernaryNumber, input_invalid_number) +{ + EXPECT_EQ(0, StringToTernaryNumber("103")); +} From 7dc7c9c29d47ea843c92236878e1a388730b4332 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 13:07:17 +0300 Subject: [PATCH 49/51] green. StringToTernaryNumber input_invalid_string --- tdd_intro/homework/02_trinary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index 6dfb639..13121aa 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -30,6 +30,11 @@ int CharToTernaryDigit(char ch) int StringToTernaryNumber(const std::string& number) { + if (number == "103") + { + return 0; + } + int result = 0; const int numberOfDigits = number.size() - 1; for (int i = numberOfDigits; i >= 0; --i) From 07d862a2e4dbbce001b9bb6049a69f704c09f1a5 Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 13:08:32 +0300 Subject: [PATCH 50/51] refactoring. StringToTernaryNumber input_invalid_string --- .../homework/02_trinary_numbers/test.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index 13121aa..fff505a 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -30,21 +30,22 @@ int CharToTernaryDigit(char ch) int StringToTernaryNumber(const std::string& number) { - if (number == "103") - { - return 0; - } - int result = 0; const int numberOfDigits = number.size() - 1; - for (int i = numberOfDigits; i >= 0; --i) + try { - if (!number.empty()) + for (int i = numberOfDigits; i >= 0; --i) { - result += CharToTernaryDigit(number[i]) * (std::pow(3, numberOfDigits - i)); + if (!number.empty()) + { + result += CharToTernaryDigit(number[i]) * (std::pow(3, numberOfDigits - i)); + } } } - + catch (const std::runtime_error&) + { + result = 0; + } return result; } From 19c4012196bdcccde4347ae06b91d47481c7ceea Mon Sep 17 00:00:00 2001 From: Krestol Date: Tue, 18 Sep 2018 13:10:03 +0300 Subject: [PATCH 51/51] acceptance --- tdd_intro/homework/02_trinary_numbers/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/02_trinary_numbers/test.cpp b/tdd_intro/homework/02_trinary_numbers/test.cpp index fff505a..85c0aea 100644 --- a/tdd_intro/homework/02_trinary_numbers/test.cpp +++ b/tdd_intro/homework/02_trinary_numbers/test.cpp @@ -83,3 +83,8 @@ TEST(StringToTernaryNumber, input_invalid_number) { EXPECT_EQ(0, StringToTernaryNumber("103")); } + +TEST(StringToTernaryNumber, acceptance) +{ + EXPECT_EQ(302, StringToTernaryNumber("102012")); +}