From 4f632612ee510ced7fd23e9bae1de1918dae68b9 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:27:56 +0200 Subject: [PATCH 01/27] 03 - Bank OCR - Prepared test list --- tdd_intro/homework/03_bank_ocr/test.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index a01540b..410ba47 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -195,3 +195,15 @@ const Display s_display123456789 = { " _ _ _ _ _ _ _ ", " | _| _||_||_ |_ ||_||_|", " ||_ _| | _||_| ||_| _|" }; + +/* + *test list + *1) check strings with single digit 0 + *2) check strings with single digit 1 + *... + *10) check strings with single digit 9 + *11) check incorrect symbol + *11) check 9 similar symbols + *12) check 9 random symbols + *13) acceptance test + */ From 9783581bc2787bc98f67626b5c24f6f525c54716 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:29:40 +0200 Subject: [PATCH 02/27] 03 - Bank OCR - First 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 410ba47..a441fbe 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -207,3 +207,8 @@ const Display s_display123456789 = { " _ _ _ _ _ _ _ ", *12) check 9 random symbols *13) acceptance test */ + +TEST(BankOCR, CheckZeroDigit) +{ + ASSERT_EQ(0, ConverDigit(s_digit0)); +} From 440fd14ebbccec1fa39b7622e951e62ef456eec1 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:32:07 +0200 Subject: [PATCH 03/27] 03 - Bank OCR - Added fake for 1st 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 a441fbe..340d7f7 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -208,7 +208,12 @@ const Display s_display123456789 = { " _ _ _ _ _ _ _ ", *13) acceptance test */ +int ConvertDigit(const Digit &digit) +{ + return 0; +} + TEST(BankOCR, CheckZeroDigit) { - ASSERT_EQ(0, ConverDigit(s_digit0)); + ASSERT_EQ(0, ConvertDigit(s_digit0)); } From 9ac8076169b43fff670531fce7a99f29896e8bfc Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:33:53 +0200 Subject: [PATCH 04/27] 03 - Bank OCR - Added red test for digit 1 --- 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 340d7f7..07147bd 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -213,7 +213,12 @@ int ConvertDigit(const Digit &digit) return 0; } -TEST(BankOCR, CheckZeroDigit) +TEST(BankOCR, CheckDigitZero) { ASSERT_EQ(0, ConvertDigit(s_digit0)); } + +TEST(BankOCR, CheckDigitOne) +{ + ASSERT_EQ(1, ConvertDigit(s_digit1)); +} From 5a4970f5b6357dff26bc06587839d38397d0169a Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:36:59 +0200 Subject: [PATCH 05/27] 03 - Bank OCR - Fixed test for digit 1 --- tdd_intro/homework/03_bank_ocr/test.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 07147bd..62a4ea8 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -210,6 +210,10 @@ const Display s_display123456789 = { " _ _ _ _ _ _ _ ", int ConvertDigit(const Digit &digit) { + if (digit.lines[0] == " ") + { + return 1; + } return 0; } From eccfe88267c1333ea8669d5f6af830b3969fbd69 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:37:36 +0200 Subject: [PATCH 06/27] 03 - Bank OCR - Added red test for digit 2 --- 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 62a4ea8..68284e8 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -226,3 +226,8 @@ TEST(BankOCR, CheckDigitOne) { ASSERT_EQ(1, ConvertDigit(s_digit1)); } + +TEST(BankOCR, CheckDigitTwo) +{ + ASSERT_EQ(2, ConvertDigit(s_digit2)); +} From 4e72a3473d12cd61854d301155e56605b9b2c686 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:39:40 +0200 Subject: [PATCH 07/27] 03 - Bank OCR - Fixed test for digit 2 --- tdd_intro/homework/03_bank_ocr/test.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 68284e8..ff391ae 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -214,6 +214,10 @@ int ConvertDigit(const Digit &digit) { return 1; } + else if (digit.lines[1] == " _|") + { + return 2; + } return 0; } From 6a78a459390b89da14aa03679635cf9d0dfdc791 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:40:32 +0200 Subject: [PATCH 08/27] 03 - Bank OCR - Added red test for digit 3 --- tdd_intro/homework/03_bank_ocr/test.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index ff391ae..ac4cdf0 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -235,3 +235,10 @@ TEST(BankOCR, CheckDigitTwo) { ASSERT_EQ(2, ConvertDigit(s_digit2)); } + +TEST(BankOCR, CheckDigitThree) +{ + ASSERT_EQ(3, ConvertDigit(s_digit3)); +} + + From a8a15c032b83a48745c854731f8132f9742d0af1 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:43:46 +0200 Subject: [PATCH 09/27] 03 - Bank OCR - Fixed test for digit 3 --- tdd_intro/homework/03_bank_ocr/test.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index ac4cdf0..3740ffe 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -216,6 +216,10 @@ int ConvertDigit(const Digit &digit) } else if (digit.lines[1] == " _|") { + if (digit.lines[2] == " _|") + { + return 3; + } return 2; } return 0; From 941579f551302dc6d296e046c3b5b35a60fd0bf9 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:44:32 +0200 Subject: [PATCH 10/27] 03 - Bank OCR - Fixed test for digit 4 --- tdd_intro/homework/03_bank_ocr/test.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 3740ffe..51e6462 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -245,4 +245,8 @@ TEST(BankOCR, CheckDigitThree) ASSERT_EQ(3, ConvertDigit(s_digit3)); } +TEST(BankOCR, CheckDigitFour) +{ + ASSERT_EQ(4, ConvertDigit(s_digit4)); +} From 99592829d333b5e865f8341975afd725839f2d9f Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:49:29 +0200 Subject: [PATCH 11/27] 03 - Bank OCR - Fixed test for digit 4 --- tdd_intro/homework/03_bank_ocr/test.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 51e6462..5fe69fa 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -212,6 +212,10 @@ int ConvertDigit(const Digit &digit) { if (digit.lines[0] == " ") { + if (digit.lines[1] == "|_|") + { + return 4; + } return 1; } else if (digit.lines[1] == " _|") From d2c6e2f1e8376ccfcba103d0c05a97c48bf7db58 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:50:20 +0200 Subject: [PATCH 12/27] 03 - Bank OCR - Added red test for digit 5 --- tdd_intro/homework/03_bank_ocr/test.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 5fe69fa..68f4b73 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -254,3 +254,7 @@ TEST(BankOCR, CheckDigitFour) ASSERT_EQ(4, ConvertDigit(s_digit4)); } +TEST(BankOCR, CheckDigitFive) +{ + ASSERT_EQ(5, ConvertDigit(s_digit5)); +} From 551ca9c6deb8ad59ee64eaac1ae2d6eb538b7e82 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:53:31 +0200 Subject: [PATCH 13/27] 03 - Bank OCR - Fixed test for digit 5 but broke for 0 --- tdd_intro/homework/03_bank_ocr/test.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 68f4b73..f86b469 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -218,13 +218,20 @@ int ConvertDigit(const Digit &digit) } return 1; } - else if (digit.lines[1] == " _|") + else { - if (digit.lines[2] == " _|") + if (digit.lines[1] == " _|") { - return 3; + if (digit.lines[2] == " _|") + { + return 3; + } + return 2; + } + else + { + return 5; } - return 2; } return 0; } From 3fc999a87c1f25eee20ca994103a8f7c9f382a25 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:54:45 +0200 Subject: [PATCH 14/27] 03 - Bank OCR - Fixed test for digit 0 --- 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 f86b469..0c541f3 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -228,7 +228,7 @@ int ConvertDigit(const Digit &digit) } return 2; } - else + else if (digit.lines[1] == "|_ ") { return 5; } From 96886e89ed50a57cd0d888103b0d8d215be4e4e8 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 16:59:49 +0200 Subject: [PATCH 15/27] 03 - Bank OCR - Fixed test for digit 6 --- tdd_intro/homework/03_bank_ocr/test.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 0c541f3..e142044 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -230,6 +230,10 @@ int ConvertDigit(const Digit &digit) } else if (digit.lines[1] == "|_ ") { + if (digit.lines[2] == "|_|") + { + return 6; + } return 5; } } @@ -265,3 +269,8 @@ TEST(BankOCR, CheckDigitFive) { ASSERT_EQ(5, ConvertDigit(s_digit5)); } + +TEST(BankOCR, CheckDigitSix) +{ + ASSERT_EQ(6, ConvertDigit(s_digit6)); +} From f4f71f003f5b7e2a0eba88d3e737f644022533fa Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 17:02:12 +0200 Subject: [PATCH 16/27] 03 - Bank OCR - Added red test for digit 7 --- 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 e142044..c550579 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -274,3 +274,8 @@ TEST(BankOCR, CheckDigitSix) { ASSERT_EQ(6, ConvertDigit(s_digit6)); } + +TEST(BankOCR, CheckDigitSeven) +{ + ASSERT_EQ(7, ConvertDigit(s_digit7)); +} From 367ccd18b625daa4b84b66b4d4368fe0bd26b3f7 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 17:10:05 +0200 Subject: [PATCH 17/27] 03 - Bank OCR - Fixed test for digit 7 --- tdd_intro/homework/03_bank_ocr/test.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index c550579..ea7f08a 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -236,8 +236,11 @@ int ConvertDigit(const Digit &digit) } return 5; } + else if (digit.lines[1] == "| |") { + return 0; + } } - return 0; + return 7; } TEST(BankOCR, CheckDigitZero) From fa638863785bddddc4dea51a687eb736b246c344 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 17:13:40 +0200 Subject: [PATCH 18/27] 03 - Bank OCR - Added red test for digit 8 --- 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 ea7f08a..ed9a3e7 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -282,3 +282,8 @@ TEST(BankOCR, CheckDigitSeven) { ASSERT_EQ(7, ConvertDigit(s_digit7)); } + +TEST(BankOCR, CheckDigitEight) +{ + ASSERT_EQ(8, ConvertDigit(s_digit8)); +} From 4639745cc3420d3d28a8413c0e80cfd6a73976f0 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 17:16:39 +0200 Subject: [PATCH 19/27] 03 - Bank OCR - Fixed test for digit 8 --- 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 ed9a3e7..934283d 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -236,9 +236,14 @@ int ConvertDigit(const Digit &digit) } return 5; } - else if (digit.lines[1] == "| |") { + else if (digit.lines[1] == "| |") + { return 0; } + else if (digit.lines[1] == "|_|") + { + return 8; + } } return 7; } From 9bfd473f138875ed513ecd67ef34725edcd8eff2 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 17:32:12 +0200 Subject: [PATCH 20/27] 03 - Bank OCR - Added red test for digit 9 --- 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 934283d..895182a 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -292,3 +292,8 @@ TEST(BankOCR, CheckDigitEight) { ASSERT_EQ(8, ConvertDigit(s_digit8)); } + +TEST(BankOCR, CheckDigitNine) +{ + ASSERT_EQ(9, ConvertDigit(s_digit9)); +} From 983db334020d09f98509b8f32b9c8495ee99f289 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 19:54:35 +0200 Subject: [PATCH 21/27] 03 - Bank OCR - Refactoring --- tdd_intro/homework/03_bank_ocr/test.cpp | 77 ++++++++++++++----------- 1 file changed, 44 insertions(+), 33 deletions(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 895182a..db7d392 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -210,42 +210,53 @@ const Display s_display123456789 = { " _ _ _ _ _ _ _ ", int ConvertDigit(const Digit &digit) { - if (digit.lines[0] == " ") + std::string high = digit.lines[0]; + std::string mid = digit.lines[1]; + std::string low = digit.lines[2]; + + int mask = high.at(1) == '_' ? 1 : 0; + mask += mid.at(0) == '|' ? 2 : 0; + mask += mid.at(1) == '_' ? 4 : 0; + mask += mid.at(2) == '|' ? 8 : 0; + mask += low.at(0) == '|' ? 16 : 0; + + // 1 - 01000 - 8 + // 2 - 11101 - 29 + // 3 - 01101 - 13 + // 4 - 01110 - 14 + // 5 - 00111 - 7 + // 6 - 10111 - 23 + // 7 - 01001 - 9 + // 8 - 11111 - 31 + // 9 - 01111 - 15 + // 0 - 11011 - 27 + + switch(mask) { - if (digit.lines[1] == "|_|") - { - return 4; - } + case 8: return 1; + case 29: + return 2; + case 13: + return 3; + case 14: + return 4; + case 7: + return 5; + case 23: + return 6; + case 9: + return 7; + case 31: + return 8; + case 15: + return 9; + case 27: + return 0; + + default: + return mask; } - else - { - if (digit.lines[1] == " _|") - { - if (digit.lines[2] == " _|") - { - return 3; - } - return 2; - } - else if (digit.lines[1] == "|_ ") - { - if (digit.lines[2] == "|_|") - { - return 6; - } - return 5; - } - else if (digit.lines[1] == "| |") - { - return 0; - } - else if (digit.lines[1] == "|_|") - { - return 8; - } - } - return 7; } TEST(BankOCR, CheckDigitZero) From 279431e303ccd1ca5e9ac094a5fc0006b4cdb6fa Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 20:06:37 +0200 Subject: [PATCH 22/27] 03 - Bank OCR - Added test for incorrect symbols --- tdd_intro/homework/03_bank_ocr/test.cpp | 58 +++++++++++++++++-------- 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index db7d392..28ad1fe 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -140,6 +140,18 @@ const Digit s_digit9 = { " _ ", "|_|", " _|" }; +const Digit s_incorrectDigit1 = { " ", + "|_|", + " _|" + }; +const Digit s_incorrectDigit2 = { " ", + "| |", + "|_|" + }; +const Digit s_incorrectDigit3 = { " _ ", + "|_|", + "| |" + }; const Display s_displayAll0 = { " _ _ _ _ _ _ _ _ _ ", "| || || || || || || || || |", @@ -219,43 +231,44 @@ int ConvertDigit(const Digit &digit) mask += mid.at(1) == '_' ? 4 : 0; mask += mid.at(2) == '|' ? 8 : 0; mask += low.at(0) == '|' ? 16 : 0; - - // 1 - 01000 - 8 - // 2 - 11101 - 29 - // 3 - 01101 - 13 - // 4 - 01110 - 14 - // 5 - 00111 - 7 - // 6 - 10111 - 23 - // 7 - 01001 - 9 - // 8 - 11111 - 31 - // 9 - 01111 - 15 - // 0 - 11011 - 27 + mask += low.at(1) == '_' ? 32 : 0; + + // 1 - 001000 - 8 + // 2 - 111101 - 61 + // 3 - 101101 - 45 + // 4 - 001110 - 14 + // 5 - 100111 - 39 + // 6 - 110111 - 55 + // 7 - 001001 - 9 + // 8 - 111111 - 63 + // 9 - 101111 - 47 + // 0 - 111011 - 59 switch(mask) { case 8: return 1; - case 29: + case 61: return 2; - case 13: + case 45: return 3; case 14: return 4; - case 7: + case 39: return 5; - case 23: + case 55: return 6; case 9: return 7; - case 31: + case 63: return 8; - case 15: + case 47: return 9; - case 27: + case 59: return 0; default: - return mask; + throw std::runtime_error("Unknown symbol found"); } } @@ -308,3 +321,10 @@ TEST(BankOCR, CheckDigitNine) { ASSERT_EQ(9, ConvertDigit(s_digit9)); } + +TEST(BankOCR, CheckIncorectDigits) +{ + EXPECT_THROW(ConvertDigit(s_incorrectDigit1), std::runtime_error); + EXPECT_THROW(ConvertDigit(s_incorrectDigit2), std::runtime_error); + EXPECT_THROW(ConvertDigit(s_incorrectDigit3), std::runtime_error); +} From a04f870bf95437fb14bc1ed348d2483149d41f49 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 20:08:47 +0200 Subject: [PATCH 23/27] 03 - Bank OCR - Added red test fot all 0 number --- tdd_intro/homework/03_bank_ocr/test.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 28ad1fe..22a4114 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -328,3 +328,9 @@ TEST(BankOCR, CheckIncorectDigits) EXPECT_THROW(ConvertDigit(s_incorrectDigit2), std::runtime_error); EXPECT_THROW(ConvertDigit(s_incorrectDigit3), std::runtime_error); } + + +TEST(BankOCR, CheckNumberAll0) +{ + ASSERT_EQ(000000000, ConvertNumber(s_displayAll0)); +} From 5fdfea345031f37229bfb324942a354e47304137 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 20:25:45 +0200 Subject: [PATCH 24/27] 03 - Bank OCR - Fixed test fot all 0 number --- tdd_intro/homework/03_bank_ocr/test.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 22a4114..64cf3cb 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -86,6 +86,7 @@ Example input and output */ #include #include +#include const unsigned short g_digitLen = 3; const unsigned short g_linesInDigit = 3; @@ -272,6 +273,21 @@ int ConvertDigit(const Digit &digit) } } +int ConvertNumber(const Display &number) +{ + int result = 0; + for(int i = 0; i < g_digitsOnDisplay; ++i) + { + int position = i * g_digitLen; + int multiplier = std::pow(10, i); + result += multiplier * ConvertDigit({std::string(number.lines[0].c_str() + position), + std::string(number.lines[1].c_str() + position), + std::string(number.lines[2].c_str() + position)}); + } + return result; +} + + TEST(BankOCR, CheckDigitZero) { ASSERT_EQ(0, ConvertDigit(s_digit0)); From 1e1dc116925b9b329986238ca67057115d596bed Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 20:32:37 +0200 Subject: [PATCH 25/27] 03 - Bank OCR - Added all 0-9 green tests and 123456789 red test --- tdd_intro/homework/03_bank_ocr/test.cpp | 50 +++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index 64cf3cb..422bdc5 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -350,3 +350,53 @@ TEST(BankOCR, CheckNumberAll0) { ASSERT_EQ(000000000, ConvertNumber(s_displayAll0)); } + +TEST(BankOCR, CheckNumberAll1) +{ + ASSERT_EQ(111111111, ConvertNumber(s_displayAll1)); +} + +TEST(BankOCR, CheckNumberAll2) +{ + ASSERT_EQ(222222222, ConvertNumber(s_displayAll2)); +} + +TEST(BankOCR, CheckNumberAll3) +{ + ASSERT_EQ(333333333, ConvertNumber(s_displayAll3)); +} + +TEST(BankOCR, CheckNumberAll4) +{ + ASSERT_EQ(444444444, ConvertNumber(s_displayAll4)); +} + +TEST(BankOCR, CheckNumberAll5) +{ + ASSERT_EQ(555555555, ConvertNumber(s_displayAll5)); +} + +TEST(BankOCR, CheckNumberAll6) +{ + ASSERT_EQ(666666666, ConvertNumber(s_displayAll6)); +} + +TEST(BankOCR, CheckNumberAll7) +{ + ASSERT_EQ(777777777, ConvertNumber(s_displayAll7)); +} + +TEST(BankOCR, CheckNumberAll8) +{ + ASSERT_EQ(888888888, ConvertNumber(s_displayAll8)); +} + +TEST(BankOCR, CheckNumberAll9) +{ + ASSERT_EQ(999999999, ConvertNumber(s_displayAll9)); +} + +TEST(BankOCR, CheckNumberAll123456789) +{ + ASSERT_EQ(123456789, ConvertNumber(s_display123456789)); +} From 81e03d8c5fa483111f84e3a7c07ba425ca3aef57 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 20:35:36 +0200 Subject: [PATCH 26/27] 03 - Bank OCR - Fixed 123456789 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 422bdc5..fc0da30 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -279,7 +279,7 @@ int ConvertNumber(const Display &number) for(int i = 0; i < g_digitsOnDisplay; ++i) { int position = i * g_digitLen; - int multiplier = std::pow(10, i); + int multiplier = std::pow(10, g_digitsOnDisplay - i - 1); result += multiplier * ConvertDigit({std::string(number.lines[0].c_str() + position), std::string(number.lines[1].c_str() + position), std::string(number.lines[2].c_str() + position)}); From f4b636fbf63852ff30fc44107b436b49d933cc85 Mon Sep 17 00:00:00 2001 From: Gega Anatoly Date: Wed, 19 Dec 2018 20:39:32 +0200 Subject: [PATCH 27/27] 03 - Bank OCR - Added acceptance test --- tdd_intro/homework/03_bank_ocr/test.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tdd_intro/homework/03_bank_ocr/test.cpp b/tdd_intro/homework/03_bank_ocr/test.cpp index fc0da30..cf5a572 100644 --- a/tdd_intro/homework/03_bank_ocr/test.cpp +++ b/tdd_intro/homework/03_bank_ocr/test.cpp @@ -209,6 +209,11 @@ const Display s_display123456789 = { " _ _ _ _ _ _ _ ", " ||_ _| | _||_| ||_| _|" }; +const Display s_display234432234 = { " _ _ _ _ _ _ ", + " _| _||_||_| _| _| _| _||_|", + "|_ _| | | _||_ |_ _| |" +}; + /* *test list *1) check strings with single digit 0 @@ -400,3 +405,8 @@ TEST(BankOCR, CheckNumberAll123456789) { ASSERT_EQ(123456789, ConvertNumber(s_display123456789)); } + +TEST(BankOCR, Acceptance) +{ + ASSERT_EQ(234432234, ConvertNumber(s_display234432234)); +}