From c09e2dde38813019ada0da7e8fc1592a3928e9a6 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 14 Nov 2018 17:52:26 +0200 Subject: [PATCH 01/34] 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/34] 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/34] 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/34] 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 ead3e320d3245980bac4e540e82ce1ff06278086 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Tue, 18 Dec 2018 23:58:14 +0200 Subject: [PATCH 05/34] Practical class --- .../homework/02_ternary_numbers/test.cpp | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/tdd_intro/homework/02_ternary_numbers/test.cpp b/tdd_intro/homework/02_ternary_numbers/test.cpp index 1750302..e75a61a 100644 --- a/tdd_intro/homework/02_ternary_numbers/test.cpp +++ b/tdd_intro/homework/02_ternary_numbers/test.cpp @@ -16,3 +16,77 @@ 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. */ + +/* + * 1) 0 test + * 2) 1 test + * 3) 2 test + * 4) invalid digit test + * 5) Multiple digits tests + * 6) Invalid multiple digits tests + * 7) Acceptence test + */ + +bool TernaryNumber(int number) +{ + return number < 3; +} + +int ConvertTernaryNumbers(const std::string &number) +{ + int sum = 0; + for (int index = 0; index < number.size(); ++index) + { + int numberValue = std::stoi(std::string(1, number[number.size() - 1 - index])); + if (!TernaryNumber(numberValue)) + { + return 0; + } + sum += numberValue * std::pow(3, index); + } + + return sum; +} + +TEST(TernaryNumbers, ZeroTest) +{ + ASSERT_TRUE(TernaryNumber(0)); +} + +TEST(TernaryNumbers, CheckOne) +{ + ASSERT_TRUE(TernaryNumber(1)); +} + +TEST(TernaryNumbers, CheckTwo) +{ + ASSERT_TRUE(TernaryNumber(2)); +} + +TEST(TernaryNumbers, InvalidDigit) +{ + ASSERT_FALSE(TernaryNumber(3)); +} + +TEST(TernaryNumbers, MultipleDigits) +{ + ASSERT_EQ(0, ConvertTernaryNumbers("00")); +} + +TEST(TernaryNumbers, MultipleDigits111) +{ + ASSERT_EQ(13, ConvertTernaryNumbers("111")); +} + +TEST(TernaryNumbers, InvalidMultipleDigits) +{ + ASSERT_EQ(0, ConvertTernaryNumbers("113")); +} + +TEST(TernaryNumbers, Acceptance) +{ + ASSERT_EQ(0, ConvertTernaryNumbers("123")); + ASSERT_EQ(16, ConvertTernaryNumbers("121")); + ASSERT_EQ(439, ConvertTernaryNumbers("121021")); + ASSERT_EQ(597871, ConvertTernaryNumbers("1010101010101")); +} From b4d071e807482bb9c0015ed133590ad7084a6820 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:03:18 +0200 Subject: [PATCH 06/34] Added test list --- tdd_intro/homework/03_bank_ocr/test.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index a4b7ca8..9038354 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -86,3 +86,17 @@ Example input and output */ #include #include + + +/* + * - Get line + * - Wrong line + * - Get cell + * - Wrong cell + * - Parse number (test for each 1..9) + * - Wrong number + * - Get numbers + * - Aceptance + */ + + From 94996f49ce20ecf4bc9500ff4611794889c71dea Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:11:28 +0200 Subject: [PATCH 07/34] First red test --- tdd_intro/homework/03_bank_ocr/test.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 9038354..c2062e2 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -89,14 +89,17 @@ Example input and output /* + * - Parse digit (test for each 1..9) + * - Wrong digit * - Get line * - Wrong line * - Get cell * - Wrong cell - * - Parse number (test for each 1..9) - * - Wrong number * - Get numbers * - Aceptance */ - +TEST(BankOcr, MachineDigitToString0) +{ + ASSERT_("0", ParseNumberCell(" _ | ||_|")); +} From 93dc20880f1239883676a3320c766772a1732c7f Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:12:49 +0200 Subject: [PATCH 08/34] First green test --- tdd_intro/homework/03_bank_ocr/test.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index c2062e2..dce09c2 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -99,7 +99,12 @@ Example input and output * - Aceptance */ +std::string ParseNumberCell(const std::string &str) +{ + return "0"; +} + TEST(BankOcr, MachineDigitToString0) { - ASSERT_("0", ParseNumberCell(" _ | ||_|")); + ASSERT_EQ("0", ParseNumberCell(" _ | ||_|")); } From 57b9be15d9fb05c802365cd888f83cf9649fd6bf Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:14:11 +0200 Subject: [PATCH 09/34] First refactoring --- tdd_intro/homework/03_bank_ocr/test.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index dce09c2..324a540 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -99,6 +99,8 @@ Example input and output * - Aceptance */ +const std::string ZERO_DIGIT = " _ | ||_|"; + std::string ParseNumberCell(const std::string &str) { return "0"; @@ -106,5 +108,5 @@ std::string ParseNumberCell(const std::string &str) TEST(BankOcr, MachineDigitToString0) { - ASSERT_EQ("0", ParseNumberCell(" _ | ||_|")); + ASSERT_EQ("0", ParseNumberCell(ZERO_DIGIT)); } From 88067baf95355dc783918e8c04eaa58ec27c4b34 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:16:18 +0200 Subject: [PATCH 10/34] Second red test --- tdd_intro/homework/03_bank_ocr/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 324a540..760333b 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -110,3 +110,8 @@ TEST(BankOcr, MachineDigitToString0) { ASSERT_EQ("0", ParseNumberCell(ZERO_DIGIT)); } + +TEST(BankOcr, MachineWrongDigitToString) +{ + ASSERT_EQ("", ParseNumberCell("_---__--")); +} From d8ba4ab2d87095a9f43e3de1f90cb8a5a0ded95e Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:17:25 +0200 Subject: [PATCH 11/34] Second green test --- tdd_intro/homework/03_bank_ocr/test.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 760333b..641c2fe 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -103,7 +103,9 @@ const std::string ZERO_DIGIT = " _ | ||_|"; std::string ParseNumberCell(const std::string &str) { - return "0"; + if (str == ZERO_DIGIT) return "0"; + + return ""; } TEST(BankOcr, MachineDigitToString0) From be3f7163971dbb07fd86672b460430d721f11b7c Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:25:04 +0200 Subject: [PATCH 12/34] Third red-green-refactoring for 1-9 numbers (skip many similar commits) --- tdd_intro/homework/03_bank_ocr/test.cpp | 63 +++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 641c2fe..87ede85 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -100,10 +100,28 @@ Example input and output */ const std::string ZERO_DIGIT = " _ | ||_|"; +const std::string ONE_DIGIT = " | |"; +const std::string TWO_DIGIT = " _ _||_ "; +const std::string THREE_DIGIT = " _ _| _|"; +const std::string FOUR_DIGIT = " |_| |"; +const std::string FIVE_DIGIT = " _ |_ _|"; +const std::string SIX_DIGIT = " _ |_ |_|"; +const std::string SEVEN_DIGIT = " _ | |"; +const std::string EIGHT_DIGIT = " _ |_||_|"; +const std::string NINE_DIGIT = " _ |_| _|"; std::string ParseNumberCell(const std::string &str) { if (str == ZERO_DIGIT) return "0"; + if (str == ONE_DIGIT) return "1"; + if (str == TWO_DIGIT) return "2"; + if (str == THREE_DIGIT) return "3"; + if (str == FOUR_DIGIT) return "4"; + if (str == FIVE_DIGIT) return "5"; + if (str == SIX_DIGIT) return "6"; + if (str == SEVEN_DIGIT) return "7"; + if (str == EIGHT_DIGIT) return "8"; + if (str == NINE_DIGIT) return "9"; return ""; } @@ -117,3 +135,48 @@ TEST(BankOcr, MachineWrongDigitToString) { ASSERT_EQ("", ParseNumberCell("_---__--")); } + +TEST(BankOcr, MachineDigitToString1) +{ + ASSERT_EQ("1", ParseNumberCell(ONE_DIGIT)); +} + +TEST(BankOcr, MachineDigitToString2) +{ + ASSERT_EQ("2", ParseNumberCell(TWO_DIGIT)); +} + +TEST(BankOcr, MachineDigitToString3) +{ + ASSERT_EQ("3", ParseNumberCell(THREE_DIGIT)); +} + +TEST(BankOcr, MachineDigitToString4) +{ + ASSERT_EQ("4", ParseNumberCell(FOUR_DIGIT)); +} + +TEST(BankOcr, MachineDigitToString5) +{ + ASSERT_EQ("5", ParseNumberCell(FIVE_DIGIT)); +} + +TEST(BankOcr, MachineDigitToString6) +{ + ASSERT_EQ("6", ParseNumberCell(SIX_DIGIT)); +} + +TEST(BankOcr, MachineDigitToString7) +{ + ASSERT_EQ("7", ParseNumberCell(SEVEN_DIGIT)); +} + +TEST(BankOcr, MachineDigitToString8) +{ + ASSERT_EQ("8", ParseNumberCell(EIGHT_DIGIT)); +} + +TEST(BankOcr, MachineDigitToString9) +{ + ASSERT_EQ("9", ParseNumberCell(NINE_DIGIT)); +} From 4c9a79fc01b85a341978301aae7e795ae444755e Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:31:58 +0200 Subject: [PATCH 13/34] Fourth red test --- tdd_intro/homework/03_bank_ocr/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 87ede85..04c1ca2 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -180,3 +180,8 @@ TEST(BankOcr, MachineDigitToString9) { ASSERT_EQ("9", ParseNumberCell(NINE_DIGIT)); } + +TEST(BankOcr, GetFirstLineDigitZero) +{ + ASSERT_EQ(ZERO_DIGIT, GetDigitCell(ZERO_DIGIT + ONE_DIGIT + TWO_DIGIT + THREE_DIGIT + FOUR_DIGIT + FIVE_DIGIT + SIX_DIGIT + SEVEN_DIGIT + EIGHT_DIGIT)); +} From 9759135dd24b8558d2a593275b95c5f5726ded58 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:34:00 +0200 Subject: [PATCH 14/34] Fourth green test --- tdd_intro/homework/03_bank_ocr/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 04c1ca2..fd650e8 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -126,6 +126,11 @@ std::string ParseNumberCell(const std::string &str) return ""; } +std::string GetDigitCell(const std::string &str) +{ + return ZERO_DIGIT; +} + TEST(BankOcr, MachineDigitToString0) { ASSERT_EQ("0", ParseNumberCell(ZERO_DIGIT)); From 68f7a218e8b0a8c62f2b51d8c63c0670c9abbc71 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:37:11 +0200 Subject: [PATCH 15/34] Fifth red test --- tdd_intro/homework/03_bank_ocr/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index fd650e8..37fd6f6 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -190,3 +190,8 @@ TEST(BankOcr, GetFirstLineDigitZero) { ASSERT_EQ(ZERO_DIGIT, GetDigitCell(ZERO_DIGIT + ONE_DIGIT + TWO_DIGIT + THREE_DIGIT + FOUR_DIGIT + FIVE_DIGIT + SIX_DIGIT + SEVEN_DIGIT + EIGHT_DIGIT)); } + +TEST(BankOcr, GetFirstLineDigitOne) +{ + ASSERT_EQ(ONE_DIGIT, GetDigitCell(ONE_DIGIT + TWO_DIGIT + THREE_DIGIT + FOUR_DIGIT + FIVE_DIGIT + SIX_DIGIT + SEVEN_DIGIT + EIGHT_DIGIT + NINE_DIGIT)); +} From 10e41bd01cdf788e9f432f1ff54ab66668f1651e Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:45:07 +0200 Subject: [PATCH 16/34] Fifth green test --- tdd_intro/homework/03_bank_ocr/test.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 37fd6f6..895fb43 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -128,7 +128,11 @@ std::string ParseNumberCell(const std::string &str) std::string GetDigitCell(const std::string &str) { - return ZERO_DIGIT; + std::string number = str.substr(0, 3); + number += str.substr(27, 3); + number += str.substr(54, 3); + + return number; } TEST(BankOcr, MachineDigitToString0) @@ -188,10 +192,10 @@ TEST(BankOcr, MachineDigitToString9) TEST(BankOcr, GetFirstLineDigitZero) { - ASSERT_EQ(ZERO_DIGIT, GetDigitCell(ZERO_DIGIT + ONE_DIGIT + TWO_DIGIT + THREE_DIGIT + FOUR_DIGIT + FIVE_DIGIT + SIX_DIGIT + SEVEN_DIGIT + EIGHT_DIGIT)); + ASSERT_EQ(ZERO_DIGIT, GetDigitCell(" _ _ _ _ _ _ _ _ _ | || || || || || || || || ||_||_||_||_||_||_||_||_||_|")); } TEST(BankOcr, GetFirstLineDigitOne) { - ASSERT_EQ(ONE_DIGIT, GetDigitCell(ONE_DIGIT + TWO_DIGIT + THREE_DIGIT + FOUR_DIGIT + FIVE_DIGIT + SIX_DIGIT + SEVEN_DIGIT + EIGHT_DIGIT + NINE_DIGIT)); + ASSERT_EQ(ONE_DIGIT, GetDigitCell(" | | | | | | | | | | | | | | | | | |")); } From a698626d07cb855451f03d9b50e654ceac4bf1e0 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:48:45 +0200 Subject: [PATCH 17/34] Fifth refactoring --- tdd_intro/homework/03_bank_ocr/test.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 895fb43..67d77cc 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -110,6 +110,11 @@ const std::string SEVEN_DIGIT = " _ | |"; const std::string EIGHT_DIGIT = " _ |_||_|"; const std::string NINE_DIGIT = " _ |_| _|"; +const unsigned int DIGIT_WIDTH = 3; +const unsigned int DIGIT_FIRST_LINE_INDEX = 0; +const unsigned int DIGIT_SECOND_LINE_INDEX = 27; +const unsigned int DIGIT_THIRD_LINE_INDEX = 54; + std::string ParseNumberCell(const std::string &str) { if (str == ZERO_DIGIT) return "0"; @@ -128,9 +133,9 @@ std::string ParseNumberCell(const std::string &str) std::string GetDigitCell(const std::string &str) { - std::string number = str.substr(0, 3); - number += str.substr(27, 3); - number += str.substr(54, 3); + std::string number = str.substr(DIGIT_FIRST_LINE_INDEX, DIGIT_WIDTH); + number += str.substr(DIGIT_SECOND_LINE_INDEX, DIGIT_WIDTH); + number += str.substr(DIGIT_THIRD_LINE_INDEX, DIGIT_WIDTH); return number; } From b543a61d05fd12c2658eaf390d281764961d3234 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:50:40 +0200 Subject: [PATCH 18/34] Sixth red test --- tdd_intro/homework/03_bank_ocr/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 67d77cc..b287c5e 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -204,3 +204,8 @@ TEST(BankOcr, GetFirstLineDigitOne) { ASSERT_EQ(ONE_DIGIT, GetDigitCell(" | | | | | | | | | | | | | | | | | |")); } + +TEST(BankOcr, WrongLineLength) +{ + ASSERT_EQ("", GetDigitCell(" | | | | | | | | | | | | | | | | | |")); +} From 8eeb8d30956b1c505819c0fe9a2ebdd07a4aea34 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:51:41 +0200 Subject: [PATCH 19/34] Sixth green test --- tdd_intro/homework/03_bank_ocr/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index b287c5e..322c061 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -133,6 +133,11 @@ std::string ParseNumberCell(const std::string &str) std::string GetDigitCell(const std::string &str) { + if (str.size() != 81) + { + return ""; + } + std::string number = str.substr(DIGIT_FIRST_LINE_INDEX, DIGIT_WIDTH); number += str.substr(DIGIT_SECOND_LINE_INDEX, DIGIT_WIDTH); number += str.substr(DIGIT_THIRD_LINE_INDEX, DIGIT_WIDTH); From 31023c4996a3c3c12c688d57b4d31a6ddab93b63 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:52:58 +0200 Subject: [PATCH 20/34] Sixth refactoring --- tdd_intro/homework/03_bank_ocr/test.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 322c061..2f09f8f 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -115,6 +115,8 @@ const unsigned int DIGIT_FIRST_LINE_INDEX = 0; const unsigned int DIGIT_SECOND_LINE_INDEX = 27; const unsigned int DIGIT_THIRD_LINE_INDEX = 54; +const unsigned int MACHINE_LINE_LENGTH = 81; + std::string ParseNumberCell(const std::string &str) { if (str == ZERO_DIGIT) return "0"; @@ -133,7 +135,7 @@ std::string ParseNumberCell(const std::string &str) std::string GetDigitCell(const std::string &str) { - if (str.size() != 81) + if (str.size() != MACHINE_LINE_LENGTH) { return ""; } From 86ba71e07a29b77d42cccc53f1f633bc159df6a3 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 00:55:53 +0200 Subject: [PATCH 21/34] Seventh red test --- tdd_intro/homework/03_bank_ocr/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 2f09f8f..a42c1a4 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -216,3 +216,8 @@ TEST(BankOcr, WrongLineLength) { ASSERT_EQ("", GetDigitCell(" | | | | | | | | | | | | | | | | | |")); } + +TEST(BankOcr, GetSecondLineDigitFive) +{ + ASSERT_EQ(FIVE_DIGIT, GetDigitCell(" _ _ _ _ _ _ _ | _| _||_||_ |_ ||_||_| ||_ _| | _||_| ||_| _|" , 2)); +} From 096271c1a8f697d4ae5688d5de8dee0db6a13cbf Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 01:02:13 +0200 Subject: [PATCH 22/34] Seventh green test --- tdd_intro/homework/03_bank_ocr/test.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index a42c1a4..e3555c0 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -133,16 +133,16 @@ std::string ParseNumberCell(const std::string &str) return ""; } -std::string GetDigitCell(const std::string &str) +std::string GetDigitCell(const std::string &str, unsigned int digitIndex) { if (str.size() != MACHINE_LINE_LENGTH) { return ""; } - std::string number = str.substr(DIGIT_FIRST_LINE_INDEX, DIGIT_WIDTH); - number += str.substr(DIGIT_SECOND_LINE_INDEX, DIGIT_WIDTH); - number += str.substr(DIGIT_THIRD_LINE_INDEX, DIGIT_WIDTH); + std::string number = str.substr(DIGIT_FIRST_LINE_INDEX + (digitIndex - 1) * DIGIT_WIDTH, DIGIT_WIDTH); + number += str.substr(DIGIT_SECOND_LINE_INDEX + (digitIndex - 1) * DIGIT_WIDTH, DIGIT_WIDTH); + number += str.substr(DIGIT_THIRD_LINE_INDEX + (digitIndex - 1) * DIGIT_WIDTH, DIGIT_WIDTH); return number; } @@ -204,20 +204,20 @@ TEST(BankOcr, MachineDigitToString9) TEST(BankOcr, GetFirstLineDigitZero) { - ASSERT_EQ(ZERO_DIGIT, GetDigitCell(" _ _ _ _ _ _ _ _ _ | || || || || || || || || ||_||_||_||_||_||_||_||_||_|")); + ASSERT_EQ(ZERO_DIGIT, GetDigitCell(" _ _ _ _ _ _ _ _ _ | || || || || || || || || ||_||_||_||_||_||_||_||_||_|", 1)); } TEST(BankOcr, GetFirstLineDigitOne) { - ASSERT_EQ(ONE_DIGIT, GetDigitCell(" | | | | | | | | | | | | | | | | | |")); + ASSERT_EQ(ONE_DIGIT, GetDigitCell(" | | | | | | | | | | | | | | | | | |", 1)); } TEST(BankOcr, WrongLineLength) { - ASSERT_EQ("", GetDigitCell(" | | | | | | | | | | | | | | | | | |")); + ASSERT_EQ("", GetDigitCell(" | | | | | | | | | | | | | | | | | |", 1)); } TEST(BankOcr, GetSecondLineDigitFive) { - ASSERT_EQ(FIVE_DIGIT, GetDigitCell(" _ _ _ _ _ _ _ | _| _||_||_ |_ ||_||_| ||_ _| | _||_| ||_| _|" , 2)); + ASSERT_EQ(FIVE_DIGIT, GetDigitCell(" _ _ _ _ _ _ _ _ _ |_ |_ |_ |_ |_ |_ |_ |_ |_ _| _| _| _| _| _| _| _| _|" , 2)); } From c58b50665082b6feb4ca4a443a4df490eb99baf8 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 01:04:34 +0200 Subject: [PATCH 23/34] Seventh refactoring --- tdd_intro/homework/03_bank_ocr/test.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index e3555c0..c6892ce 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -140,9 +140,11 @@ std::string GetDigitCell(const std::string &str, unsigned int digitIndex) return ""; } - std::string number = str.substr(DIGIT_FIRST_LINE_INDEX + (digitIndex - 1) * DIGIT_WIDTH, DIGIT_WIDTH); - number += str.substr(DIGIT_SECOND_LINE_INDEX + (digitIndex - 1) * DIGIT_WIDTH, DIGIT_WIDTH); - number += str.substr(DIGIT_THIRD_LINE_INDEX + (digitIndex - 1) * DIGIT_WIDTH, DIGIT_WIDTH); + unsigned int digitOffset = (digitIndex - 1) * DIGIT_WIDTH; + + std::string number = str.substr(DIGIT_FIRST_LINE_INDEX + digitOffset, DIGIT_WIDTH); + number += str.substr(DIGIT_SECOND_LINE_INDEX + digitOffset, DIGIT_WIDTH); + number += str.substr(DIGIT_THIRD_LINE_INDEX + digitOffset, DIGIT_WIDTH); return number; } From e810dfaa4d818347d4e3cebad0f6e35bdbfc63af Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 01:06:36 +0200 Subject: [PATCH 24/34] Eigth red test --- tdd_intro/homework/03_bank_ocr/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index c6892ce..7be7a4d 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -223,3 +223,8 @@ TEST(BankOcr, GetSecondLineDigitFive) { ASSERT_EQ(FIVE_DIGIT, GetDigitCell(" _ _ _ _ _ _ _ _ _ |_ |_ |_ |_ |_ |_ |_ |_ |_ _| _| _| _| _| _| _| _| _|" , 2)); } + +TEST(BankOcr, GetWrongIndexDigit) +{ + ASSERT_EQ("", GetDigitCell(" _ _ _ _ _ _ _ _ _ |_ |_ |_ |_ |_ |_ |_ |_ |_ _| _| _| _| _| _| _| _| _|" , 10)); +} From 31c37616df2d4b99e4fe1e59cb0c6c46e53bc5ef Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 01:07:57 +0200 Subject: [PATCH 25/34] Eigth green test --- tdd_intro/homework/03_bank_ocr/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 7be7a4d..453f608 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -135,7 +135,7 @@ std::string ParseNumberCell(const std::string &str) std::string GetDigitCell(const std::string &str, unsigned int digitIndex) { - if (str.size() != MACHINE_LINE_LENGTH) + if (str.size() != MACHINE_LINE_LENGTH || digitIndex > 9) { return ""; } From d1c8349bddfc5b0750a8ed48b24af1cd593052f9 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 01:08:52 +0200 Subject: [PATCH 26/34] Eigth refactoring --- tdd_intro/homework/03_bank_ocr/test.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 453f608..df0476b 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -116,6 +116,7 @@ const unsigned int DIGIT_SECOND_LINE_INDEX = 27; const unsigned int DIGIT_THIRD_LINE_INDEX = 54; const unsigned int MACHINE_LINE_LENGTH = 81; +const unsigned int MAX_DIGIT_INDEX = 9; std::string ParseNumberCell(const std::string &str) { @@ -135,7 +136,7 @@ std::string ParseNumberCell(const std::string &str) std::string GetDigitCell(const std::string &str, unsigned int digitIndex) { - if (str.size() != MACHINE_LINE_LENGTH || digitIndex > 9) + if (str.size() != MACHINE_LINE_LENGTH || digitIndex > MAX_DIGIT_INDEX) { return ""; } From 6979ed1b04625b339cd9acedac4c92d2f10107ff Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 01:09:40 +0200 Subject: [PATCH 27/34] Nineth red test --- tdd_intro/homework/03_bank_ocr/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index df0476b..b92d28f 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -229,3 +229,8 @@ TEST(BankOcr, GetWrongIndexDigit) { ASSERT_EQ("", GetDigitCell(" _ _ _ _ _ _ _ _ _ |_ |_ |_ |_ |_ |_ |_ |_ |_ _| _| _| _| _| _| _| _| _|" , 10)); } + +TEST(BankOcr, GetZeroIndexDigit) +{ + ASSERT_EQ("", GetDigitCell(" _ _ _ _ _ _ _ _ _ |_ |_ |_ |_ |_ |_ |_ |_ |_ _| _| _| _| _| _| _| _| _|" , 0)); +} From 3cc2933725dc093f186f086a3c59718e9ed8d615 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 01:10:31 +0200 Subject: [PATCH 28/34] Nineth green test --- tdd_intro/homework/03_bank_ocr/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index b92d28f..87bc039 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -136,7 +136,7 @@ std::string ParseNumberCell(const std::string &str) std::string GetDigitCell(const std::string &str, unsigned int digitIndex) { - if (str.size() != MACHINE_LINE_LENGTH || digitIndex > MAX_DIGIT_INDEX) + if (str.size() != MACHINE_LINE_LENGTH || digitIndex > MAX_DIGIT_INDEX || digitIndex == 0) { return ""; } From 257afd682e4fc8c84e0223b124e1fa654e9fb642 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 01:13:51 +0200 Subject: [PATCH 29/34] Tenth red test --- tdd_intro/homework/03_bank_ocr/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 87bc039..1afb0a8 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -234,3 +234,8 @@ TEST(BankOcr, GetZeroIndexDigit) { ASSERT_EQ("", GetDigitCell(" _ _ _ _ _ _ _ _ _ |_ |_ |_ |_ |_ |_ |_ |_ |_ _| _| _| _| _| _| _| _| _|" , 0)); } + +TEST(BankOcr, GetSignleNumberWithIndex) +{ + ASSERT_EQ("123456789", GetNumbers(" _ _ _ _ _ _ _ | _| _||_||_ |_ ||_||_| ||_ _| | _||_| ||_| _|")); +} From a01725d9b5c8df068bfe0137f5e0f1ddf3e62442 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 01:14:51 +0200 Subject: [PATCH 30/34] Tenth green test --- tdd_intro/homework/03_bank_ocr/test.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 1afb0a8..a23910f 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -150,6 +150,11 @@ std::string GetDigitCell(const std::string &str, unsigned int digitIndex) return number; } +std::string GetNumbers(const std::string &machineNumber) +{ + return "123456789"; +} + TEST(BankOcr, MachineDigitToString0) { ASSERT_EQ("0", ParseNumberCell(ZERO_DIGIT)); From 164316098a6eb9ad689799f601ec1dd46faaaa25 Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 01:16:36 +0200 Subject: [PATCH 31/34] Eleventh red test --- tdd_intro/homework/03_bank_ocr/test.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index a23910f..9acb71f 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -240,7 +240,12 @@ TEST(BankOcr, GetZeroIndexDigit) ASSERT_EQ("", GetDigitCell(" _ _ _ _ _ _ _ _ _ |_ |_ |_ |_ |_ |_ |_ |_ |_ _| _| _| _| _| _| _| _| _|" , 0)); } -TEST(BankOcr, GetSignleNumberWithIndex) +TEST(BankOcr, GetNumbers123456789) { ASSERT_EQ("123456789", GetNumbers(" _ _ _ _ _ _ _ | _| _||_||_ |_ ||_||_| ||_ _| | _||_| ||_| _|")); } + +TEST(BankOcr, GetNumbers000000000) +{ + ASSERT_EQ("000000000", GetNumbers(" _ _ _ _ _ _ _ _ _ | || || || || || || || || ||_||_||_||_||_||_||_||_||_|")); +} From d929bd029716a292801bbfe930e1606a9931429d Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 01:18:28 +0200 Subject: [PATCH 32/34] Eleventh green test --- tdd_intro/homework/03_bank_ocr/test.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 9acb71f..97a96b1 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -152,7 +152,15 @@ std::string GetDigitCell(const std::string &str, unsigned int digitIndex) std::string GetNumbers(const std::string &machineNumber) { - return "123456789"; + std::string parsedNumbers; + for (unsigned int index = 0; index < 9; index++) + { + std::string number = GetDigitCell(machineNumber, index + 1); + std::string parsedNumber = ParseNumberCell(number); + parsedNumbers += parsedNumber; + } + + return parsedNumbers; } TEST(BankOcr, MachineDigitToString0) From dcbf641ccfa4791f3f292e6e8b4be51237de6aaa Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 01:19:02 +0200 Subject: [PATCH 33/34] Eleventh refactoring --- tdd_intro/homework/03_bank_ocr/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 97a96b1..6c4c81d 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -153,7 +153,7 @@ std::string GetDigitCell(const std::string &str, unsigned int digitIndex) std::string GetNumbers(const std::string &machineNumber) { std::string parsedNumbers; - for (unsigned int index = 0; index < 9; index++) + for (unsigned int index = 0; index < MAX_DIGIT_INDEX; index++) { std::string number = GetDigitCell(machineNumber, index + 1); std::string parsedNumber = ParseNumberCell(number); From a440103940476bde21501db1431562ce3ee3fe6c Mon Sep 17 00:00:00 2001 From: Viacheslav Konstantinov Date: Wed, 19 Dec 2018 01:29:36 +0200 Subject: [PATCH 34/34] Acceptance --- tdd_intro/homework/03_bank_ocr/test.cpp | 46 ++++++++++++++++++++----- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 6c4c81d..0236831 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -220,40 +220,70 @@ TEST(BankOcr, MachineDigitToString9) TEST(BankOcr, GetFirstLineDigitZero) { - ASSERT_EQ(ZERO_DIGIT, GetDigitCell(" _ _ _ _ _ _ _ _ _ | || || || || || || || || ||_||_||_||_||_||_||_||_||_|", 1)); + ASSERT_EQ(ZERO_DIGIT, GetDigitCell(" _ _ _ _ _ _ _ _ _ " + "| || || || || || || || || |" + "|_||_||_||_||_||_||_||_||_|", 1)); } TEST(BankOcr, GetFirstLineDigitOne) { - ASSERT_EQ(ONE_DIGIT, GetDigitCell(" | | | | | | | | | | | | | | | | | |", 1)); + ASSERT_EQ(ONE_DIGIT, GetDigitCell(" " + " | | | | | | | | |" + " | | | | | | | | |", 1)); } TEST(BankOcr, WrongLineLength) { - ASSERT_EQ("", GetDigitCell(" | | | | | | | | | | | | | | | | | |", 1)); + ASSERT_EQ("", GetDigitCell(" " + "| | | | | | | | | " + "| | | | | | | | |", 1)); } TEST(BankOcr, GetSecondLineDigitFive) { - ASSERT_EQ(FIVE_DIGIT, GetDigitCell(" _ _ _ _ _ _ _ _ _ |_ |_ |_ |_ |_ |_ |_ |_ |_ _| _| _| _| _| _| _| _| _|" , 2)); + ASSERT_EQ(FIVE_DIGIT, GetDigitCell(" _ _ _ _ _ _ _ _ _ " + "|_ |_ |_ |_ |_ |_ |_ |_ |_ " + " _| _| _| _| _| _| _| _| _|" , 2)); } TEST(BankOcr, GetWrongIndexDigit) { - ASSERT_EQ("", GetDigitCell(" _ _ _ _ _ _ _ _ _ |_ |_ |_ |_ |_ |_ |_ |_ |_ _| _| _| _| _| _| _| _| _|" , 10)); + ASSERT_EQ("", GetDigitCell(" _ _ _ _ _ _ _ _ _ " + "|_ |_ |_ |_ |_ |_ |_ |_ |_ " + " _| _| _| _| _| _| _| _| _|" , 10)); } TEST(BankOcr, GetZeroIndexDigit) { - ASSERT_EQ("", GetDigitCell(" _ _ _ _ _ _ _ _ _ |_ |_ |_ |_ |_ |_ |_ |_ |_ _| _| _| _| _| _| _| _| _|" , 0)); + ASSERT_EQ("", GetDigitCell(" _ _ _ _ _ _ _ _ _ " + "|_ |_ |_ |_ |_ |_ |_ |_ |_ " + " _| _| _| _| _| _| _| _| _|" , 0)); } TEST(BankOcr, GetNumbers123456789) { - ASSERT_EQ("123456789", GetNumbers(" _ _ _ _ _ _ _ | _| _||_||_ |_ ||_||_| ||_ _| | _||_| ||_| _|")); + ASSERT_EQ("123456789", GetNumbers(" _ _ _ _ _ _ _ " + " | _| _||_||_ |_ ||_||_|" + " ||_ _| | _||_| ||_| _|")); } TEST(BankOcr, GetNumbers000000000) { - ASSERT_EQ("000000000", GetNumbers(" _ _ _ _ _ _ _ _ _ | || || || || || || || || ||_||_||_||_||_||_||_||_||_|")); + ASSERT_EQ("000000000", GetNumbers(" _ _ _ _ _ _ _ _ _ " + "| || || || || || || || || |" + "|_||_||_||_||_||_||_||_||_|")); +} + +TEST(BankOcr, Acceptance) +{ + ASSERT_EQ("", GetNumbers(" _ _ _ _ _ _ _ _ _ | || || " + "|| || || || || || ||_| || || ||_||_" + "||_||_||_||_||_||_|| || || ||_||_||_" + "||_||_||_||_||_|||")); + ASSERT_EQ("666666666", GetNumbers(" _ _ _ _ _ _ _ _ _ " + "|_ |_ |_ |_ |_ |_ |_ |_ |_ " + "|_||_||_||_||_||_||_||_||_|")); + ASSERT_EQ("868266669", GetNumbers(" _ _ _ _ _ _ _ _ _ " + "|_||_ |_| _||_ |_ |_ |_ |_|" + "|_||_||_||_ |_||_||_||_| _|")); }