From bba4c503af37d3f2de1634de3baf8c5992a50b2b Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Mon, 5 Jul 2021 19:40:29 +0300 Subject: [PATCH 01/36] AS commit --- gradlew | 0 src/main/java/Main.java | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 gradlew diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 2d0c0720..ab797f04 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -2,7 +2,7 @@ public class Main { public static void main(String[] args) { - System.out.println("Hello, Epam! ;) "); + System.out.println("Hello, Hello From AS"); } } From 39cd05fde8627beb1713a4933890ea1e789a3084 Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Mon, 5 Jul 2021 20:03:31 +0300 Subject: [PATCH 02/36] AS commit git ignore --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8a0a60d2..2b1fb1b8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ # Project exclude paths /.gradle/ /build/ -/build/classes/java/main/ \ No newline at end of file +/build/classes/java/main/ +/.idea/ +/gradle/ +/.DS_Store/ \ No newline at end of file From 26433ce857cc72704bc0d5ce9172bc781013377e Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Mon, 5 Jul 2021 21:46:35 +0300 Subject: [PATCH 03/36] 05.07 Home Work 1 --- src/main/java/Main.java | 8 -------- src/main/java/homework_1/Main.java | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) delete mode 100644 src/main/java/Main.java create mode 100644 src/main/java/homework_1/Main.java diff --git a/src/main/java/Main.java b/src/main/java/Main.java deleted file mode 100644 index ab797f04..00000000 --- a/src/main/java/Main.java +++ /dev/null @@ -1,8 +0,0 @@ -public class Main { - - public static void main(String[] args) { - - System.out.println("Hello, Hello From AS"); - } - -} diff --git a/src/main/java/homework_1/Main.java b/src/main/java/homework_1/Main.java new file mode 100644 index 00000000..311e00b3 --- /dev/null +++ b/src/main/java/homework_1/Main.java @@ -0,0 +1,16 @@ +package homework_1; + +public class Main { + + public static void main(String[] args) { + + for (String i: args) { + if(i.equals("ошибка")){ + System.out.println("Тревога"); + break; + } + System.out.println(i + ": " + i.length()); + } + } + +} From c21fa4ecefa018f74822eccec4055b95be023f99 Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Tue, 6 Jul 2021 13:08:41 +0300 Subject: [PATCH 04/36] 06.07.21 Home Work 1.1 with Red Color --- src/main/java/homework_1/Main.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/homework_1/Main.java b/src/main/java/homework_1/Main.java index 311e00b3..5beb91c6 100644 --- a/src/main/java/homework_1/Main.java +++ b/src/main/java/homework_1/Main.java @@ -1,12 +1,14 @@ package homework_1; public class Main { + public static final String ANSI_RESET = "\u001B[0m"; + public static final String ANSI_RED = "\u001B[31m"; public static void main(String[] args) { for (String i: args) { - if(i.equals("ошибка")){ - System.out.println("Тревога"); + if(i.equals("error")){ + System.out.println(ANSI_RED + "Alarm!" + ANSI_RESET); break; } System.out.println(i + ": " + i.length()); From 12b4c21dc3f0fa3b5afcede06cc2668699040577 Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Mon, 5 Jul 2021 19:40:29 +0300 Subject: [PATCH 05/36] AS commit --- gradlew | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 gradlew diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 From 5c04832496103442a63024ae57a6b6880eebe41e Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Mon, 5 Jul 2021 21:46:35 +0300 Subject: [PATCH 06/36] 05.07 Home Work 1 --- src/main/java/homework_1/Main.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/java/homework_1/Main.java diff --git a/src/main/java/homework_1/Main.java b/src/main/java/homework_1/Main.java new file mode 100644 index 00000000..311e00b3 --- /dev/null +++ b/src/main/java/homework_1/Main.java @@ -0,0 +1,16 @@ +package homework_1; + +public class Main { + + public static void main(String[] args) { + + for (String i: args) { + if(i.equals("ошибка")){ + System.out.println("Тревога"); + break; + } + System.out.println(i + ": " + i.length()); + } + } + +} From ed9c6b0265e6ac1c435f8c2edce416e0e86b71b1 Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Sun, 11 Jul 2021 12:51:43 +0300 Subject: [PATCH 07/36] homework_1 with red "Alarm" + read.me: added link to main --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d686e9f..4cf93026 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,6 @@ | Number | Solution | Short description | --- | --- | --- | -| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/master/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) From 4df468626dd171cf4063506650f6c6f87374bfec Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Sun, 11 Jul 2021 12:56:22 +0300 Subject: [PATCH 08/36] homework_1 with red "Alarm" + read.me: added link to main and Name changed --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4cf93026..f28ce875 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Java Core June 2021 -## *Nikolaev Artem* +## *Anton Segodnik* | Number | Solution | Short description | --- | --- | --- | From 0788e6c60ab0546aec1deb47cd05248da7616eeb Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Wed, 14 Jul 2021 21:32:04 +0300 Subject: [PATCH 09/36] homework_2 with BufferReaders methods --- src/main/java/homework_2/BufferReader.java | 49 ++++++++++++++++++ src/main/java/homework_2/PyramidPrinter.java | 16 ++++++ .../java/homework_2/RandomCharsTable.java | 50 +++++++++++++++++++ src/main/java/homework_2/Traffic_light.java | 33 ++++++++++++ 4 files changed, 148 insertions(+) create mode 100644 src/main/java/homework_2/BufferReader.java create mode 100644 src/main/java/homework_2/PyramidPrinter.java create mode 100644 src/main/java/homework_2/RandomCharsTable.java create mode 100644 src/main/java/homework_2/Traffic_light.java diff --git a/src/main/java/homework_2/BufferReader.java b/src/main/java/homework_2/BufferReader.java new file mode 100644 index 00000000..f7bd4f8e --- /dev/null +++ b/src/main/java/homework_2/BufferReader.java @@ -0,0 +1,49 @@ +package homework_2; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class BufferReader { + public static int bufferReaderConsole() throws IOException { + System.out.print("Please, enter number of seconds..."); + try(BufferedReader reader = new BufferedReader(new InputStreamReader (System.in))){ + try { + int i = Integer.parseInt(reader.readLine()); + if(i < 0){ + System.err.println("Error, negative numbers are not valid"); + return bufferReaderConsole(); + } else if( i >= 86400){ + System.err.println("it's a new day..."); + return bufferReaderConsole (); + } + return i; + }catch (NumberFormatException ex){ + System.err.println ("Text isn't allowed"); + return bufferReaderConsole (); + } + } + } + + public static String bufferReaderConsoleForRandom() throws IOException { + try(BufferedReader reader = new BufferedReader(new InputStreamReader (System.in))) { + return reader.readLine(); + } + } + public static int bufferReaderForPyramid() throws IOException { + try(BufferedReader reader = new BufferedReader(new InputStreamReader (System.in))){ + try { + int i = Integer.parseInt(reader.readLine()); + if(i < 0){ + System.err.println("Error, negative numbers are not valid"); + return bufferReaderForPyramid(); + } + return i; + }catch (NumberFormatException ex){ + System.err.println ("Text isn't allowed"); + return bufferReaderForPyramid (); + } + } + } + +} diff --git a/src/main/java/homework_2/PyramidPrinter.java b/src/main/java/homework_2/PyramidPrinter.java new file mode 100644 index 00000000..a197579f --- /dev/null +++ b/src/main/java/homework_2/PyramidPrinter.java @@ -0,0 +1,16 @@ +package homework_2; + +import java.io.IOException; +import static homework_2.BufferReader.bufferReaderForPyramid; + +public class PyramidPrinter { + public static void main(String[] args) throws IOException { + int level = bufferReaderForPyramid(); + for (int i = 0; i < level; i++) { + for(int j = 0; j <= i; j ++) { + System.out.print("x "); + } + System.out.println(); + } + } +} diff --git a/src/main/java/homework_2/RandomCharsTable.java b/src/main/java/homework_2/RandomCharsTable.java new file mode 100644 index 00000000..ac013159 --- /dev/null +++ b/src/main/java/homework_2/RandomCharsTable.java @@ -0,0 +1,50 @@ +package homework_2; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static homework_2.BufferReader.bufferReaderConsoleForRandom; + +public class RandomCharsTable { + public static void main(String[] args) throws IOException { + String inputString = bufferReaderConsoleForRandom(); + String[] arrayWithInputData = inputString.split(" "); + + int row = Integer.parseInt(arrayWithInputData[0]); + int column = Integer.parseInt(arrayWithInputData[1]); + String typeOfParity = arrayWithInputData[2]; + + returnAnswer(generateArrays (row, column), typeOfParity); + } + + private static char[][] generateArrays(int j, int k){ + char[][] arr = new char[j][k]; + for (int row = 0; row < j; row ++) { + for (int col = 0; col < k; col++) { + arr[row][col] = (char) (Math.random () * 26 + 'A'); + } + } + return arr; + } + + private static void returnAnswer(char[][] arr, String type){ + List result = new ArrayList<> (); + String array = ""; + for (int row = 0; row < arr.length; row ++) { + for (int col = 0; col < arr[row].length; col++) { + + array += "|" + arr[row][col] + "|"; + + if ((type.equals ("even") && arr[row][col] % 2 == 0) || (type.equals ("odd") && arr[row][col] % 2 != 0)) { + result.add(String.valueOf(arr[row][col])); + } + } + array += "\n"; + } + + System.out.println(array); + System.out.println(type + " letters - " + String.join(", ", result)); + } +} diff --git a/src/main/java/homework_2/Traffic_light.java b/src/main/java/homework_2/Traffic_light.java new file mode 100644 index 00000000..d5bf771c --- /dev/null +++ b/src/main/java/homework_2/Traffic_light.java @@ -0,0 +1,33 @@ +package homework_2; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.sql.SQLOutput; + +import static homework_2.BufferReader.bufferReaderConsole; + +public class Traffic_light { + + public static final String ANSI_RESET = "\u001B[0m"; + public static final String ANSI_STRIKEOUT_RED = "\u001B[31;9m"; + public static final String ANSI_STRIKEOUT_GREEN = "\u001B[32;9m"; + public static final String ANSI_STRIKEOUT_YELLOW = "\u001B[33;9m"; + + public static void main(String[] args) throws IOException { + + int time = bufferReaderConsole(); + checkColor(time); + } + + private static void checkColor(int time) { + int sec = time % 60; + if (sec < 35) { + System.out.println (ANSI_STRIKEOUT_GREEN + "Green" + ANSI_RESET); + } else if (sec < 40) { + System.out.println (ANSI_STRIKEOUT_YELLOW + "Yellow" + ANSI_RESET); + } else { + System.out.println (ANSI_STRIKEOUT_RED + "Red" + ANSI_RESET); + } + } +} From df79a677e8f448274c2c81b45ace1e7293455e0f Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Wed, 14 Jul 2021 21:38:27 +0300 Subject: [PATCH 10/36] homework_2 with BufferReaders methods + Read me --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f28ce875..037654c3 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ | Number | Solution | Short description | --- | --- | --- | -| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +| +HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +HW2 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_2) | The app that reads input arguments and prints them, until "error" argument | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) From 3968d87667ec8eb168eaedfcb58e6ada557f6e1b Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Wed, 14 Jul 2021 21:57:04 +0300 Subject: [PATCH 11/36] homework_2 with BufferReaders methods + Read me again --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 037654c3..6a581a09 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,7 @@ | Number | Solution | Short description | --- | --- | --- | -| -HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | -HW2 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_2) | The app that reads input arguments and prints them, until "error" argument | +|HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +|HW2 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_2) | The app that reads input arguments and prints them, until "error" argument | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) From 85299bdfee90655331a747c105a30110e88f6ccd Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Wed, 21 Jul 2021 17:53:54 +0300 Subject: [PATCH 12/36] homework_2 with hierarchy and run() --- README.md | 1 + src/main/java/homework_2/PyramidPrinter.java | 16 --------- src/main/java/homework_2/Traffic_light.java | 33 ------------------- .../{ => bufferReaders}/BufferReader.java | 16 +++++---- .../java/homework_2/pyramid_printer/Main.java | 11 +++++++ .../pyramid_printer/PyramidPrinter.java | 17 ++++++++++ .../homework_2/random_chars_table/Main.java | 11 +++++++ .../RandomCharsTable.java | 29 +++++++++++----- .../java/homework_2/traffic_light/Main.java | 12 +++++++ .../traffic_light/Traffic_light.java | 28 ++++++++++++++++ 10 files changed, 109 insertions(+), 65 deletions(-) delete mode 100644 src/main/java/homework_2/PyramidPrinter.java delete mode 100644 src/main/java/homework_2/Traffic_light.java rename src/main/java/homework_2/{ => bufferReaders}/BufferReader.java (80%) create mode 100644 src/main/java/homework_2/pyramid_printer/Main.java create mode 100644 src/main/java/homework_2/pyramid_printer/PyramidPrinter.java create mode 100644 src/main/java/homework_2/random_chars_table/Main.java rename src/main/java/homework_2/{ => random_chars_table}/RandomCharsTable.java (62%) create mode 100644 src/main/java/homework_2/traffic_light/Main.java create mode 100644 src/main/java/homework_2/traffic_light/Traffic_light.java diff --git a/README.md b/README.md index 6a581a09..bd2a9d65 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,4 @@ |HW2 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_2) | The app that reads input arguments and prints them, until "error" argument | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) +[Link to CodingBat](https://codingbat.com/done?user=segodnik@gmail.com&tag=8130222420) diff --git a/src/main/java/homework_2/PyramidPrinter.java b/src/main/java/homework_2/PyramidPrinter.java deleted file mode 100644 index a197579f..00000000 --- a/src/main/java/homework_2/PyramidPrinter.java +++ /dev/null @@ -1,16 +0,0 @@ -package homework_2; - -import java.io.IOException; -import static homework_2.BufferReader.bufferReaderForPyramid; - -public class PyramidPrinter { - public static void main(String[] args) throws IOException { - int level = bufferReaderForPyramid(); - for (int i = 0; i < level; i++) { - for(int j = 0; j <= i; j ++) { - System.out.print("x "); - } - System.out.println(); - } - } -} diff --git a/src/main/java/homework_2/Traffic_light.java b/src/main/java/homework_2/Traffic_light.java deleted file mode 100644 index d5bf771c..00000000 --- a/src/main/java/homework_2/Traffic_light.java +++ /dev/null @@ -1,33 +0,0 @@ -package homework_2; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.sql.SQLOutput; - -import static homework_2.BufferReader.bufferReaderConsole; - -public class Traffic_light { - - public static final String ANSI_RESET = "\u001B[0m"; - public static final String ANSI_STRIKEOUT_RED = "\u001B[31;9m"; - public static final String ANSI_STRIKEOUT_GREEN = "\u001B[32;9m"; - public static final String ANSI_STRIKEOUT_YELLOW = "\u001B[33;9m"; - - public static void main(String[] args) throws IOException { - - int time = bufferReaderConsole(); - checkColor(time); - } - - private static void checkColor(int time) { - int sec = time % 60; - if (sec < 35) { - System.out.println (ANSI_STRIKEOUT_GREEN + "Green" + ANSI_RESET); - } else if (sec < 40) { - System.out.println (ANSI_STRIKEOUT_YELLOW + "Yellow" + ANSI_RESET); - } else { - System.out.println (ANSI_STRIKEOUT_RED + "Red" + ANSI_RESET); - } - } -} diff --git a/src/main/java/homework_2/BufferReader.java b/src/main/java/homework_2/bufferReaders/BufferReader.java similarity index 80% rename from src/main/java/homework_2/BufferReader.java rename to src/main/java/homework_2/bufferReaders/BufferReader.java index f7bd4f8e..a07b838e 100644 --- a/src/main/java/homework_2/BufferReader.java +++ b/src/main/java/homework_2/bufferReaders/BufferReader.java @@ -1,13 +1,14 @@ -package homework_2; +package homework_2.bufferReaders; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class BufferReader { - public static int bufferReaderConsole() throws IOException { + + public int bufferReaderConsole() throws IOException { System.out.print("Please, enter number of seconds..."); - try(BufferedReader reader = new BufferedReader(new InputStreamReader (System.in))){ + try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){ try { int i = Integer.parseInt(reader.readLine()); if(i < 0){ @@ -15,22 +16,23 @@ public static int bufferReaderConsole() throws IOException { return bufferReaderConsole(); } else if( i >= 86400){ System.err.println("it's a new day..."); - return bufferReaderConsole (); + return bufferReaderConsole(); } return i; }catch (NumberFormatException ex){ System.err.println ("Text isn't allowed"); - return bufferReaderConsole (); + return bufferReaderConsole(); } } } - public static String bufferReaderConsoleForRandom() throws IOException { + public String bufferReaderConsoleForRandom() throws IOException { try(BufferedReader reader = new BufferedReader(new InputStreamReader (System.in))) { return reader.readLine(); } } - public static int bufferReaderForPyramid() throws IOException { + + public int bufferReaderForPyramid() throws IOException { try(BufferedReader reader = new BufferedReader(new InputStreamReader (System.in))){ try { int i = Integer.parseInt(reader.readLine()); diff --git a/src/main/java/homework_2/pyramid_printer/Main.java b/src/main/java/homework_2/pyramid_printer/Main.java new file mode 100644 index 00000000..9cd98626 --- /dev/null +++ b/src/main/java/homework_2/pyramid_printer/Main.java @@ -0,0 +1,11 @@ +package homework_2.pyramid_printer; + +import java.io.IOException; + +public class Main { + + public static void main(String[] args) throws IOException { + PyramidPrinter pyramidPrinter = new PyramidPrinter(); + pyramidPrinter.run(); + } +} diff --git a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java new file mode 100644 index 00000000..c609b03c --- /dev/null +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -0,0 +1,17 @@ +package homework_2.pyramid_printer; + +import homework_2.bufferReaders.BufferReader; +import java.io.IOException; + +public class PyramidPrinter { + public void run() throws IOException { + BufferReader bufferReaderForPyramid = new BufferReader(); + int pyramidLength = bufferReaderForPyramid.bufferReaderForPyramid(); + for (int i = 0; i < pyramidLength; i++) { + for(int j = 0; j <= i; j ++) { + System.out.print("x "); + } + System.out.println(); + } + } +} diff --git a/src/main/java/homework_2/random_chars_table/Main.java b/src/main/java/homework_2/random_chars_table/Main.java new file mode 100644 index 00000000..9c47d5a3 --- /dev/null +++ b/src/main/java/homework_2/random_chars_table/Main.java @@ -0,0 +1,11 @@ +package homework_2.random_chars_table; + +import java.io.IOException; + +public class Main { + public static void main(String[] args) throws IOException { + + RandomCharsTable randomCharsTable = new RandomCharsTable(); + randomCharsTable.run(); + } +} diff --git a/src/main/java/homework_2/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java similarity index 62% rename from src/main/java/homework_2/RandomCharsTable.java rename to src/main/java/homework_2/random_chars_table/RandomCharsTable.java index ac013159..3f7b9661 100644 --- a/src/main/java/homework_2/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -1,25 +1,36 @@ -package homework_2; +package homework_2.random_chars_table; + +import homework_2.bufferReaders.BufferReader; import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; -import static homework_2.BufferReader.bufferReaderConsoleForRandom; - public class RandomCharsTable { - public static void main(String[] args) throws IOException { - String inputString = bufferReaderConsoleForRandom(); - String[] arrayWithInputData = inputString.split(" "); + + public void run() throws IOException { + BufferReader randomBufferReader = new BufferReader(); + String inputString = randomBufferReader.bufferReaderConsoleForRandom(); + String[] arrayWithInputData = inputString.trim().split(" "); + + if(arrayWithInputData.length != 3){ + System.out.println("Should be typed 3 parameters (e.g. 3 3 odd)"); + return; + } int row = Integer.parseInt(arrayWithInputData[0]); int column = Integer.parseInt(arrayWithInputData[1]); String typeOfParity = arrayWithInputData[2]; + if(!typeOfParity.equals("even") && !typeOfParity.equals("odd")){ + System.out.println("Wrong type parameter"); + return; + } + returnAnswer(generateArrays (row, column), typeOfParity); } - private static char[][] generateArrays(int j, int k){ + private char[][] generateArrays(int j, int k){ char[][] arr = new char[j][k]; for (int row = 0; row < j; row ++) { for (int col = 0; col < k; col++) { @@ -29,7 +40,7 @@ private static char[][] generateArrays(int j, int k){ return arr; } - private static void returnAnswer(char[][] arr, String type){ + private void returnAnswer(char[][] arr, String type){ List result = new ArrayList<> (); String array = ""; for (int row = 0; row < arr.length; row ++) { diff --git a/src/main/java/homework_2/traffic_light/Main.java b/src/main/java/homework_2/traffic_light/Main.java new file mode 100644 index 00000000..a2991079 --- /dev/null +++ b/src/main/java/homework_2/traffic_light/Main.java @@ -0,0 +1,12 @@ +package homework_2.traffic_light; + +import java.io.IOException; + +public class Main { + + public static void main(String[] args) throws IOException { + + Traffic_light traffic_light = new Traffic_light(); + traffic_light.run(); + } +} diff --git a/src/main/java/homework_2/traffic_light/Traffic_light.java b/src/main/java/homework_2/traffic_light/Traffic_light.java new file mode 100644 index 00000000..a1ac1cd4 --- /dev/null +++ b/src/main/java/homework_2/traffic_light/Traffic_light.java @@ -0,0 +1,28 @@ +package homework_2.traffic_light; + +import homework_2.bufferReaders.BufferReader; +import java.io.IOException; + +public class Traffic_light { + + private static final String ANSI_RESET = "\u001B[0m"; + private static final String ANSI_STRIKEOUT_RED = "\u001B[31;9m"; + private static final String ANSI_STRIKEOUT_GREEN = "\u001B[32;9m"; + private static final String ANSI_STRIKEOUT_YELLOW = "\u001B[33;9m"; + + public void run() throws IOException { + BufferReader bufferReader = new BufferReader(); + checkColor(bufferReader.bufferReaderConsole()); + } + + private void checkColor(int time) { + int sec = time % 60; + if (sec < 35) { + System.out.println (ANSI_STRIKEOUT_GREEN + "Green" + ANSI_RESET); + } else if (sec < 40) { + System.out.println (ANSI_STRIKEOUT_YELLOW + "Yellow" + ANSI_RESET); + } else { + System.out.println (ANSI_STRIKEOUT_RED + "Red" + ANSI_RESET); + } + } +} From 6a714789bdd526fd346ce4c2d68e6ca37e46bc53 Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Wed, 21 Jul 2021 18:19:29 +0300 Subject: [PATCH 13/36] homework_2 with hierarchy and run() + read.me --- README.md | 8 ++-- build.gradle | 2 + .../pyramid_printer/PyramidPrinter.java | 1 + .../homework_2/random_chars_table/Main.java | 2 +- .../random_chars_table/RandomCharsTable.java | 1 - .../java/homework_2/traffic_light/Main.java | 1 - src/test/java/test.java | 40 +++++++++++++++++++ 7 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 src/test/java/test.java diff --git a/README.md b/README.md index bd2a9d65..42492b2d 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,9 @@ | Number | Solution | Short description | --- | --- | --- | |HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | -|HW2 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_2) | The app that reads input arguments and prints them, until "error" argument | +|HW2 | [pyramid_printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_2/pyramid_printer) | The app that reads input arguments and prints pyramid | +|HW2 | [random_chars_table](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_2/random_chars_table) | The app that reads input arguments and creates random table | +|HW2 | [traffic_light](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_2/traffic_light) | The app that reads input arguments and prints traffic light | -[Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) -[Link to CodingBat](https://codingbat.com/done?user=segodnik@gmail.com&tag=8130222420) +[Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) | +[Link to CodingBat](https://codingbat.com/done?user=segodnik@gmail.com&tag=8130222420) diff --git a/build.gradle b/build.gradle index b91dc843..c96d84ea 100644 --- a/build.gradle +++ b/build.gradle @@ -10,6 +10,8 @@ repositories { } dependencies { + implementation 'junit:junit:4.12' + implementation 'org.junit.jupiter:junit-jupiter:5.4.2' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' } diff --git a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java index c609b03c..d92c6c64 100644 --- a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -4,6 +4,7 @@ import java.io.IOException; public class PyramidPrinter { + public void run() throws IOException { BufferReader bufferReaderForPyramid = new BufferReader(); int pyramidLength = bufferReaderForPyramid.bufferReaderForPyramid(); diff --git a/src/main/java/homework_2/random_chars_table/Main.java b/src/main/java/homework_2/random_chars_table/Main.java index 9c47d5a3..aaab9316 100644 --- a/src/main/java/homework_2/random_chars_table/Main.java +++ b/src/main/java/homework_2/random_chars_table/Main.java @@ -3,8 +3,8 @@ import java.io.IOException; public class Main { - public static void main(String[] args) throws IOException { + public static void main(String[] args) throws IOException { RandomCharsTable randomCharsTable = new RandomCharsTable(); randomCharsTable.run(); } diff --git a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java index 3f7b9661..94d26891 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -26,7 +26,6 @@ public void run() throws IOException { System.out.println("Wrong type parameter"); return; } - returnAnswer(generateArrays (row, column), typeOfParity); } diff --git a/src/main/java/homework_2/traffic_light/Main.java b/src/main/java/homework_2/traffic_light/Main.java index a2991079..39e17e88 100644 --- a/src/main/java/homework_2/traffic_light/Main.java +++ b/src/main/java/homework_2/traffic_light/Main.java @@ -5,7 +5,6 @@ public class Main { public static void main(String[] args) throws IOException { - Traffic_light traffic_light = new Traffic_light(); traffic_light.run(); } diff --git a/src/test/java/test.java b/src/test/java/test.java new file mode 100644 index 00000000..d16a102a --- /dev/null +++ b/src/test/java/test.java @@ -0,0 +1,40 @@ +import homework_2.pyramid_printer.PyramidPrinter; +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class test { + + @Test + void givenHello_whenReturnCountedString_thenReturnArgs() throws IOException { + // given + final String expected = "Hello!!"; + + // then + PyramidPrinter pyramidPrinter = new PyramidPrinter(); + final String actual = " Hello!! "; + + // then + assertEquals(expected, actual.trim()); + } + +// @Test +// void givenHelloAndGoodbye_whenReturnCountedString_thenReturnArgs() { +// final String[] expected = {"Hello!", "Goodbye!"}; +// final String[] actual = new CharCounter().returnCountedString(expected); +// +// assertEquals(expected, actual); +// } +// +// @Test +// void givenHello_whenReturnCountedString_thenThrowRuntimeEx() { +// final String[] given = {"error"}; +// +// assertThrows(RuntimeException.class, +// () -> new CharCounter().returnCountedString(given)); +// } + + } + From 2ce4e3ee2835fe13966233fb5d63f1a1bd295f0d Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Wed, 21 Jul 2021 18:50:39 +0300 Subject: [PATCH 14/36] homework_3 --- src/main/java/homework_3/FinalClass.java | 29 ++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/java/homework_3/FinalClass.java diff --git a/src/main/java/homework_3/FinalClass.java b/src/main/java/homework_3/FinalClass.java new file mode 100644 index 00000000..50a5d9dd --- /dev/null +++ b/src/main/java/homework_3/FinalClass.java @@ -0,0 +1,29 @@ +package homework_3; + +// The class must be declared as final (So that child classes can’t be created) +// Data members in the class must be declared as private (So that direct access is not allowed) +// Data members in the class must be declared as final (So that we can’t change the value of it after object creation) +// A parameterized constructor should initialize all the fields performing a deep copy (So that data members can’t be modified with object reference) +// Deep Copy of objects should be performed in the getter methods (To return a copy rather than returning the actual object reference) +// No setters (To not have the option to change the value of the instance variable) + +public final class FinalClass { + + private final String string ; + private final int intVal; + + private FinalClass(String string, int intVal) { + this.string = string; + this.intVal = intVal; + } + + private FinalClass() { + this.string = "defaultVal"; + this.intVal = 0; + } + + private FinalClass createNewObj() { + return new FinalClass(); + } + +} \ No newline at end of file From 2e7c00cddb72dcd57ea227732e4cc6966daa0aad Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Thu, 22 Jul 2021 18:16:37 +0300 Subject: [PATCH 15/36] homework_3 + tests --- build.gradle | 2 -- src/test/java/base/UnitBase.java | 40 +++++++++++++++++++------------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/build.gradle b/build.gradle index c96d84ea..b91dc843 100644 --- a/build.gradle +++ b/build.gradle @@ -10,8 +10,6 @@ repositories { } dependencies { - implementation 'junit:junit:4.12' - implementation 'org.junit.jupiter:junit-jupiter:5.4.2' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' } diff --git a/src/test/java/base/UnitBase.java b/src/test/java/base/UnitBase.java index 97e2685b..60739483 100644 --- a/src/test/java/base/UnitBase.java +++ b/src/test/java/base/UnitBase.java @@ -1,12 +1,15 @@ package base; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintStream; +import homework_2.pyramid_printer.PyramidPrinter; +import org.junit.Assert; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.*; + +import static org.junit.jupiter.api.Assertions.assertEquals; + public abstract class UnitBase { @@ -58,16 +61,21 @@ protected void printOut() { System.setOut(new PrintStream(mockedOut)); } -// @Test -// void example() { -// setInput("2"); -// -// new PyramidPrinter().run(); -// printOut(); -// removeFromOutput("Please input number"): -// -// assertEquals("x", getOutputLines()[0]); -// assertEquals("xx", getOutputLines()[1]); -// } + @Test + public void example() throws IOException { + setInput("2"); + + PyramidPrinter pyramidPrinter = new PyramidPrinter(); + pyramidPrinter.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("x", getOutputLines()[0]); + assertEquals("xx", getOutputLines()[1]); + } + @Test + public void test() { + Assert.assertEquals ("x", "x"); + } } From b4a2b846fac6eb7de9e8dc370904c2645d764b04 Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Sun, 25 Jul 2021 21:12:55 +0300 Subject: [PATCH 16/36] homework_3 + tests finish version --- build.gradle | 1 + .../bufferReaders/BufferReader.java | 46 ++++----- .../pyramid_printer/PyramidPrinter.java | 3 +- .../random_chars_table/InputData.java | 14 +++ .../random_chars_table/ParserError.java | 8 ++ .../random_chars_table/ParserInputData.java | 32 ++++++ .../random_chars_table/RandomCharsTable.java | 38 +++---- .../traffic_light/Traffic_light.java | 8 +- src/test/java/base/UnitBase.java | 22 ----- .../pyramid_printer/PyramidPrinter_test.java | 89 +++++++++++++++++ .../RandomCharsPrinter.java | 76 ++++++++++++++ .../trafficLighter/TrafficLighter.java | 98 +++++++++++++++++++ src/test/java/test.java | 40 -------- 13 files changed, 360 insertions(+), 115 deletions(-) create mode 100644 src/main/java/homework_2/random_chars_table/InputData.java create mode 100644 src/main/java/homework_2/random_chars_table/ParserError.java create mode 100644 src/main/java/homework_2/random_chars_table/ParserInputData.java create mode 100644 src/test/java/homework_2/pyramid_printer/PyramidPrinter_test.java create mode 100644 src/test/java/homework_2/random_chars_printer/RandomCharsPrinter.java create mode 100644 src/test/java/homework_2/trafficLighter/TrafficLighter.java delete mode 100644 src/test/java/test.java diff --git a/build.gradle b/build.gradle index b91dc843..62958b93 100644 --- a/build.gradle +++ b/build.gradle @@ -10,6 +10,7 @@ repositories { } dependencies { + implementation 'org.junit.jupiter:junit-jupiter:5.4.2' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' } diff --git a/src/main/java/homework_2/bufferReaders/BufferReader.java b/src/main/java/homework_2/bufferReaders/BufferReader.java index a07b838e..eeca4e9c 100644 --- a/src/main/java/homework_2/bufferReaders/BufferReader.java +++ b/src/main/java/homework_2/bufferReaders/BufferReader.java @@ -7,45 +7,39 @@ public class BufferReader { public int bufferReaderConsole() throws IOException { - System.out.print("Please, enter number of seconds..."); - try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){ - try { - int i = Integer.parseInt(reader.readLine()); - if(i < 0){ - System.err.println("Error, negative numbers are not valid"); - return bufferReaderConsole(); - } else if( i >= 86400){ - System.err.println("it's a new day..."); - return bufferReaderConsole(); + try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { + + int i = Integer.parseInt (reader.readLine ()); + if (i < 0) { + System.out.println ("Error, negative numbers are not valid"); + } else if (i >= 86400) { + System.out.println ("it's a new day..."); } return i; - }catch (NumberFormatException ex){ - System.err.println ("Text isn't allowed"); - return bufferReaderConsole(); - } + } catch (NumberFormatException ex) { + System.out.println ("Invalid data format, please enter integer"); + return -1; } } public String bufferReaderConsoleForRandom() throws IOException { - try(BufferedReader reader = new BufferedReader(new InputStreamReader (System.in))) { - return reader.readLine(); + try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { + return reader.readLine (); } } public int bufferReaderForPyramid() throws IOException { - try(BufferedReader reader = new BufferedReader(new InputStreamReader (System.in))){ - try { - int i = Integer.parseInt(reader.readLine()); - if(i < 0){ - System.err.println("Error, negative numbers are not valid"); - return bufferReaderForPyramid(); - } + try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { + int i = Integer.parseInt (reader.readLine ()); + if (i < 0) { + System.out.println ("Error, negative numbers are not valid"); + } else { return i; - }catch (NumberFormatException ex){ - System.err.println ("Text isn't allowed"); - return bufferReaderForPyramid (); } + } catch (NumberFormatException ex) { + System.out.println ("invalid format data, please enter integer"); } + return 0; } } diff --git a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java index d92c6c64..95ccf101 100644 --- a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -8,9 +8,10 @@ public class PyramidPrinter { public void run() throws IOException { BufferReader bufferReaderForPyramid = new BufferReader(); int pyramidLength = bufferReaderForPyramid.bufferReaderForPyramid(); + for (int i = 0; i < pyramidLength; i++) { for(int j = 0; j <= i; j ++) { - System.out.print("x "); + System.out.print("x"); } System.out.println(); } diff --git a/src/main/java/homework_2/random_chars_table/InputData.java b/src/main/java/homework_2/random_chars_table/InputData.java new file mode 100644 index 00000000..ea1cb424 --- /dev/null +++ b/src/main/java/homework_2/random_chars_table/InputData.java @@ -0,0 +1,14 @@ +package homework_2.random_chars_table; + +public class InputData { + + public int row; + public int column; + public String type; + + public InputData(int row, int column, String type) { + this.row = row; + this.column = column; + this.type = type; + } +} diff --git a/src/main/java/homework_2/random_chars_table/ParserError.java b/src/main/java/homework_2/random_chars_table/ParserError.java new file mode 100644 index 00000000..06ba6542 --- /dev/null +++ b/src/main/java/homework_2/random_chars_table/ParserError.java @@ -0,0 +1,8 @@ +package homework_2.random_chars_table; + +public class ParserError extends Exception { + public ParserError(String errorMessage) { + super(errorMessage); + } +} + diff --git a/src/main/java/homework_2/random_chars_table/ParserInputData.java b/src/main/java/homework_2/random_chars_table/ParserInputData.java new file mode 100644 index 00000000..98fe5855 --- /dev/null +++ b/src/main/java/homework_2/random_chars_table/ParserInputData.java @@ -0,0 +1,32 @@ +package homework_2.random_chars_table; + +public class ParserInputData { + + public InputData parserInputRandomData(String input) throws ParserError { + + String[] arrayWithInputData = input.trim ().split (" "); + try { + int row = Integer.parseInt (arrayWithInputData[0]); + int column = Integer.parseInt (arrayWithInputData[1]); + + String typeOfParity = arrayWithInputData[2]; + + if (arrayWithInputData.length != 3) { + throw new ParserError ("Should be typed 3 parameters (e.g. 3 3 odd)"); + } + + if (row < 0 || column < 0) { + throw new ParserError ("negative isn't allowed"); + } + + if (!typeOfParity.equals ("even") && !typeOfParity.equals ("odd")) { + throw new ParserError ("Wrong type parameter"); + } + + return new InputData (row, column, typeOfParity); + + } catch (NumberFormatException ex) { + throw new ParserError ("Invalid data"); + } + } +} diff --git a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java index 94d26891..c3fd0c83 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -9,29 +9,21 @@ public class RandomCharsTable { public void run() throws IOException { - BufferReader randomBufferReader = new BufferReader(); - String inputString = randomBufferReader.bufferReaderConsoleForRandom(); - String[] arrayWithInputData = inputString.trim().split(" "); - - if(arrayWithInputData.length != 3){ - System.out.println("Should be typed 3 parameters (e.g. 3 3 odd)"); + BufferReader randomBufferReader = new BufferReader (); + String inputString = randomBufferReader.bufferReaderConsoleForRandom (); + try { + var x = new ParserInputData ().parserInputRandomData (inputString); + returnAnswer (generateArrays (x.row, x.column), x.type); + } catch (ParserError ex) { + System.out.print (ex.getMessage ()); return; } - int row = Integer.parseInt(arrayWithInputData[0]); - int column = Integer.parseInt(arrayWithInputData[1]); - String typeOfParity = arrayWithInputData[2]; - - if(!typeOfParity.equals("even") && !typeOfParity.equals("odd")){ - System.out.println("Wrong type parameter"); - return; - } - returnAnswer(generateArrays (row, column), typeOfParity); } - private char[][] generateArrays(int j, int k){ + private char[][] generateArrays(int j, int k) { char[][] arr = new char[j][k]; - for (int row = 0; row < j; row ++) { + for (int row = 0; row < j; row++) { for (int col = 0; col < k; col++) { arr[row][col] = (char) (Math.random () * 26 + 'A'); } @@ -39,22 +31,22 @@ private char[][] generateArrays(int j, int k){ return arr; } - private void returnAnswer(char[][] arr, String type){ - List result = new ArrayList<> (); + private void returnAnswer(char[][] arr, String type) { + List result = new ArrayList<> (); String array = ""; - for (int row = 0; row < arr.length; row ++) { + for (int row = 0; row < arr.length; row++) { for (int col = 0; col < arr[row].length; col++) { array += "|" + arr[row][col] + "|"; if ((type.equals ("even") && arr[row][col] % 2 == 0) || (type.equals ("odd") && arr[row][col] % 2 != 0)) { - result.add(String.valueOf(arr[row][col])); + result.add (String.valueOf (arr[row][col])); } } array += "\n"; } - System.out.println(array); - System.out.println(type + " letters - " + String.join(", ", result)); + System.out.println (array); + System.out.println (type + " letters - " + String.join (", ", result)); } } diff --git a/src/main/java/homework_2/traffic_light/Traffic_light.java b/src/main/java/homework_2/traffic_light/Traffic_light.java index a1ac1cd4..91f08752 100644 --- a/src/main/java/homework_2/traffic_light/Traffic_light.java +++ b/src/main/java/homework_2/traffic_light/Traffic_light.java @@ -16,13 +16,15 @@ public void run() throws IOException { } private void checkColor(int time) { + if(time < 0 || time >= 86400) return; + int sec = time % 60; if (sec < 35) { - System.out.println (ANSI_STRIKEOUT_GREEN + "Green" + ANSI_RESET); + System.out.println(ANSI_STRIKEOUT_GREEN + "Green" + ANSI_RESET); } else if (sec < 40) { - System.out.println (ANSI_STRIKEOUT_YELLOW + "Yellow" + ANSI_RESET); + System.out.println(ANSI_STRIKEOUT_YELLOW + "Yellow" + ANSI_RESET); } else { - System.out.println (ANSI_STRIKEOUT_RED + "Red" + ANSI_RESET); + System.out.println(ANSI_STRIKEOUT_RED + "Red" + ANSI_RESET); } } } diff --git a/src/test/java/base/UnitBase.java b/src/test/java/base/UnitBase.java index 60739483..5178e63e 100644 --- a/src/test/java/base/UnitBase.java +++ b/src/test/java/base/UnitBase.java @@ -1,15 +1,10 @@ package base; -import homework_2.pyramid_printer.PyramidPrinter; -import org.junit.Assert; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; import java.io.*; -import static org.junit.jupiter.api.Assertions.assertEquals; - public abstract class UnitBase { @@ -61,21 +56,4 @@ protected void printOut() { System.setOut(new PrintStream(mockedOut)); } - @Test - public void example() throws IOException { - setInput("2"); - - PyramidPrinter pyramidPrinter = new PyramidPrinter(); - pyramidPrinter.run(); - printOut(); - removeFromOutput("Please input number"); - - assertEquals("x", getOutputLines()[0]); - assertEquals("xx", getOutputLines()[1]); - } - @Test - public void test() { - Assert.assertEquals ("x", "x"); - } - } diff --git a/src/test/java/homework_2/pyramid_printer/PyramidPrinter_test.java b/src/test/java/homework_2/pyramid_printer/PyramidPrinter_test.java new file mode 100644 index 00000000..37e8268a --- /dev/null +++ b/src/test/java/homework_2/pyramid_printer/PyramidPrinter_test.java @@ -0,0 +1,89 @@ +package homework_2.pyramid_printer; + +import base.UnitBase; +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class PyramidPrinter_test extends UnitBase { + + @Test + void testGivenZero() throws IOException { + + setInput("0"); + + PyramidPrinter pyramidPrinter2 = new PyramidPrinter(); + pyramidPrinter2.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("", getOutputLines()[0]); +} + + @Test + public void testInput2() throws IOException { + setInput("2"); + + PyramidPrinter pyramidPrinter = new PyramidPrinter(); + pyramidPrinter.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("x", getOutputLines()[0]); + assertEquals("xx", getOutputLines()[1]); +} + + @Test + public void testInput3() throws IOException { + setInput("3"); + + PyramidPrinter pyramidPrinter = new PyramidPrinter(); + pyramidPrinter.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("x", getOutputLines()[0]); + assertEquals("xx", getOutputLines()[1]); + assertEquals("xxx", getOutputLines()[2]); + } + + @Test + public void testInputNegative1() throws IOException { + setInput("-1"); + + PyramidPrinter pyramidPrinter = new PyramidPrinter(); + pyramidPrinter.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("Error, negative numbers are not valid", getOutputLines()[0]); + } + + @Test + public void testInputBig1234567890123456() throws IOException { + setInput("1234567890123456"); + + PyramidPrinter pyramidPrinter = new PyramidPrinter(); + pyramidPrinter.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("invalid format data, please enter integer", getOutputLines()[0]); + } + + @Test + public void testInputText() throws IOException { + setInput("text"); + + PyramidPrinter pyramidPrinter = new PyramidPrinter(); + pyramidPrinter.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("invalid format data, please enter integer", getOutputLines()[0]); + } + +} + diff --git a/src/test/java/homework_2/random_chars_printer/RandomCharsPrinter.java b/src/test/java/homework_2/random_chars_printer/RandomCharsPrinter.java new file mode 100644 index 00000000..c86e1e08 --- /dev/null +++ b/src/test/java/homework_2/random_chars_printer/RandomCharsPrinter.java @@ -0,0 +1,76 @@ +package homework_2.random_chars_printer; + +import base.UnitBase; +import homework_2.random_chars_table.RandomCharsTable; +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class RandomCharsPrinter extends UnitBase { + + @Test + public void testInput2x2Odd() throws IOException { + setInput("2 2 odd"); + + RandomCharsTable randomCharsTable = new RandomCharsTable(); + randomCharsTable.run(); + printOut(); + removeFromOutput("Please input number"); + + assertTrue(getOutputLines()[3].contains("odd letters - ")); + } + + @Test + public void testInput2x2Even() throws IOException { + setInput("2 2 even"); + + RandomCharsTable randomCharsTable = new RandomCharsTable(); + randomCharsTable.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals(6, getOutputLines()[0].length()); + assertEquals(6, getOutputLines()[1].length()); + assertEquals(0, getOutputLines()[2].length()); + assertTrue(getOutputLines()[3].contains("even letters - ")); + } + + @Test + public void testInputNegativeRow() throws IOException { + setInput("-2 2 even"); + + RandomCharsTable randomCharsTable = new RandomCharsTable(); + randomCharsTable.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("negative isn't allowed", getOutputLines()[0]); + } + + @Test + public void testInputNegativeColumn() throws IOException { + setInput("2 -2 odd"); + + RandomCharsTable randomCharsTable = new RandomCharsTable(); + randomCharsTable.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("negative isn't allowed", getOutputLines()[0]); + } + + @Test + public void testInputWrongOperator() throws IOException { + setInput("2 2 asd"); + + RandomCharsTable randomCharsTable = new RandomCharsTable(); + randomCharsTable.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("Wrong type parameter", getOutputLines()[0]); + } +} diff --git a/src/test/java/homework_2/trafficLighter/TrafficLighter.java b/src/test/java/homework_2/trafficLighter/TrafficLighter.java new file mode 100644 index 00000000..8b924bab --- /dev/null +++ b/src/test/java/homework_2/trafficLighter/TrafficLighter.java @@ -0,0 +1,98 @@ +package homework_2.trafficLighter; + +import base.UnitBase; +import homework_2.traffic_light.Traffic_light; +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class TrafficLighter extends UnitBase { + + @Test + public void testInput61ToSeeGreen() throws IOException { + setInput("61"); + + Traffic_light traffic_light = new Traffic_light(); + traffic_light.run(); + printOut(); + removeFromOutput("Please input number"); + + assertTrue(getOutputLines()[0].contains("Green")); + } + + @Test + public void testInput86400() throws IOException { + setInput("86400"); + + Traffic_light traffic_light = new Traffic_light(); + traffic_light.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("it's a new day...", getOutputLines()[0]); + } + + @Test + public void testInputZero() throws IOException { + setInput("0"); + + Traffic_light traffic_light = new Traffic_light(); + traffic_light.run(); + printOut(); + removeFromOutput("Please input number"); + + assertTrue(getOutputLines()[0].contains("Green")); + } + + @Test + public void testInputNegativeValue() throws IOException { + setInput("-2"); + + Traffic_light traffic_light = new Traffic_light(); + traffic_light.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("Error, negative numbers are not valid", getOutputLines()[0]); + } + + @Test + public void testInput45() throws IOException { + setInput("45"); + + Traffic_light traffic_light = new Traffic_light(); + traffic_light.run(); + printOut(); + removeFromOutput("Please input number"); + + assertTrue(getOutputLines()[0].contains("Red")); + } + + @Test + public void testInput39() throws IOException { + setInput("39"); + + Traffic_light traffic_light = new Traffic_light(); + traffic_light.run(); + printOut(); + removeFromOutput("Please input number"); + + assertTrue(getOutputLines()[0].contains("Yellow")); + } + + @Test + public void testInputText() throws IOException { + setInput("text"); + + Traffic_light traffic_light = new Traffic_light(); + traffic_light.run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("Invalid data format, please enter integer", getOutputLines()[0]); + } + +} diff --git a/src/test/java/test.java b/src/test/java/test.java deleted file mode 100644 index d16a102a..00000000 --- a/src/test/java/test.java +++ /dev/null @@ -1,40 +0,0 @@ -import homework_2.pyramid_printer.PyramidPrinter; -import org.junit.jupiter.api.Test; - -import java.io.IOException; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -public class test { - - @Test - void givenHello_whenReturnCountedString_thenReturnArgs() throws IOException { - // given - final String expected = "Hello!!"; - - // then - PyramidPrinter pyramidPrinter = new PyramidPrinter(); - final String actual = " Hello!! "; - - // then - assertEquals(expected, actual.trim()); - } - -// @Test -// void givenHelloAndGoodbye_whenReturnCountedString_thenReturnArgs() { -// final String[] expected = {"Hello!", "Goodbye!"}; -// final String[] actual = new CharCounter().returnCountedString(expected); -// -// assertEquals(expected, actual); -// } -// -// @Test -// void givenHello_whenReturnCountedString_thenThrowRuntimeEx() { -// final String[] given = {"error"}; -// -// assertThrows(RuntimeException.class, -// () -> new CharCounter().returnCountedString(given)); -// } - - } - From c092c42368841405a9a2cc0a2af9576a2f0edaff Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Sun, 25 Jul 2021 22:33:19 +0300 Subject: [PATCH 17/36] homework_3 + fixed version --- build.gradle | 1 - .../bufferReaders/BufferReader.java | 45 ---------------- .../homework_2/bufferReaders/IOHelper.java | 53 +++++++++++++++++++ .../pyramid_printer/PyramidPrinter.java | 9 ++-- .../random_chars_table/RandomCharsTable.java | 15 +++--- .../java/homework_2/traffic_light/Main.java | 4 +- .../{Traffic_light.java => TrafficLight.java} | 11 ++-- .../{FinalClass.java => ImmutableClass.java} | 10 ++-- .../trafficLighter/TrafficLighter.java | 16 +++--- 9 files changed, 84 insertions(+), 80 deletions(-) delete mode 100644 src/main/java/homework_2/bufferReaders/BufferReader.java create mode 100644 src/main/java/homework_2/bufferReaders/IOHelper.java rename src/main/java/homework_2/traffic_light/{Traffic_light.java => TrafficLight.java} (74%) rename src/main/java/homework_3/{FinalClass.java => ImmutableClass.java} (81%) diff --git a/build.gradle b/build.gradle index 62958b93..b91dc843 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,6 @@ repositories { } dependencies { - implementation 'org.junit.jupiter:junit-jupiter:5.4.2' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' } diff --git a/src/main/java/homework_2/bufferReaders/BufferReader.java b/src/main/java/homework_2/bufferReaders/BufferReader.java deleted file mode 100644 index eeca4e9c..00000000 --- a/src/main/java/homework_2/bufferReaders/BufferReader.java +++ /dev/null @@ -1,45 +0,0 @@ -package homework_2.bufferReaders; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; - -public class BufferReader { - - public int bufferReaderConsole() throws IOException { - try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { - - int i = Integer.parseInt (reader.readLine ()); - if (i < 0) { - System.out.println ("Error, negative numbers are not valid"); - } else if (i >= 86400) { - System.out.println ("it's a new day..."); - } - return i; - } catch (NumberFormatException ex) { - System.out.println ("Invalid data format, please enter integer"); - return -1; - } - } - - public String bufferReaderConsoleForRandom() throws IOException { - try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { - return reader.readLine (); - } - } - - public int bufferReaderForPyramid() throws IOException { - try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { - int i = Integer.parseInt (reader.readLine ()); - if (i < 0) { - System.out.println ("Error, negative numbers are not valid"); - } else { - return i; - } - } catch (NumberFormatException ex) { - System.out.println ("invalid format data, please enter integer"); - } - return 0; - } - -} diff --git a/src/main/java/homework_2/bufferReaders/IOHelper.java b/src/main/java/homework_2/bufferReaders/IOHelper.java new file mode 100644 index 00000000..0a3b045e --- /dev/null +++ b/src/main/java/homework_2/bufferReaders/IOHelper.java @@ -0,0 +1,53 @@ +package homework_2.bufferReaders; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class IOHelper { + + public int bufferReaderConsole() { + try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { + + int i = Integer.parseInt (reader.readLine ()); + if (i < 0) { + System.out.println ("Error, negative numbers are not valid"); + } else if (i >= 86400) { + System.out.println ("it's a new day..."); + } + return i; + } catch (NumberFormatException ex) { + System.out.println ("Invalid data format, please enter integer"); + return -1; + } catch (IOException e) { + System.out.println ("System error"); + return -1; + } + } + + public String bufferReaderConsoleForRandom() { + try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { + return reader.readLine (); + } catch (IOException ex){ + System.out.println ("System Error"); + return ""; + } + } + + public int bufferReaderForPyramid() { + try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { + int i = Integer.parseInt (reader.readLine ()); + if (i < 0) { + System.out.println ("Error, negative numbers are not valid"); + } else { + return i; + } + } catch (NumberFormatException ex) { + System.out.println ("invalid format data, please enter integer"); + } catch (IOException e) { + System.out.println ("System Error"); + } + return 0; + } + +} diff --git a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java index 95ccf101..eef57b35 100644 --- a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -1,13 +1,12 @@ package homework_2.pyramid_printer; -import homework_2.bufferReaders.BufferReader; -import java.io.IOException; +import homework_2.bufferReaders.IOHelper; public class PyramidPrinter { - public void run() throws IOException { - BufferReader bufferReaderForPyramid = new BufferReader(); - int pyramidLength = bufferReaderForPyramid.bufferReaderForPyramid(); + public void run() { + IOHelper IOHelperForPyramid = new IOHelper (); + int pyramidLength = IOHelperForPyramid.bufferReaderForPyramid(); for (int i = 0; i < pyramidLength; i++) { for(int j = 0; j <= i; j ++) { diff --git a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java index c3fd0c83..a3d6526a 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -1,24 +1,23 @@ package homework_2.random_chars_table; -import homework_2.bufferReaders.BufferReader; +import homework_2.bufferReaders.IOHelper; -import java.io.IOException; import java.util.ArrayList; import java.util.List; public class RandomCharsTable { - public void run() throws IOException { - BufferReader randomBufferReader = new BufferReader (); - String inputString = randomBufferReader.bufferReaderConsoleForRandom (); + public void run() { + IOHelper randomIOHelper = new IOHelper (); + try { - var x = new ParserInputData ().parserInputRandomData (inputString); - returnAnswer (generateArrays (x.row, x.column), x.type); + String inputString = randomIOHelper.bufferReaderConsoleForRandom (); + InputData inputData = new ParserInputData ().parserInputRandomData (inputString); + returnAnswer (generateArrays (inputData.row, inputData.column), inputData.type); } catch (ParserError ex) { System.out.print (ex.getMessage ()); return; } - } private char[][] generateArrays(int j, int k) { diff --git a/src/main/java/homework_2/traffic_light/Main.java b/src/main/java/homework_2/traffic_light/Main.java index 39e17e88..dfbf63c9 100644 --- a/src/main/java/homework_2/traffic_light/Main.java +++ b/src/main/java/homework_2/traffic_light/Main.java @@ -4,8 +4,8 @@ public class Main { - public static void main(String[] args) throws IOException { - Traffic_light traffic_light = new Traffic_light(); + public static void main(String[] args) { + TrafficLight traffic_light = new TrafficLight (); traffic_light.run(); } } diff --git a/src/main/java/homework_2/traffic_light/Traffic_light.java b/src/main/java/homework_2/traffic_light/TrafficLight.java similarity index 74% rename from src/main/java/homework_2/traffic_light/Traffic_light.java rename to src/main/java/homework_2/traffic_light/TrafficLight.java index 91f08752..dc422213 100644 --- a/src/main/java/homework_2/traffic_light/Traffic_light.java +++ b/src/main/java/homework_2/traffic_light/TrafficLight.java @@ -1,18 +1,17 @@ package homework_2.traffic_light; -import homework_2.bufferReaders.BufferReader; -import java.io.IOException; +import homework_2.bufferReaders.IOHelper; -public class Traffic_light { +public class TrafficLight { private static final String ANSI_RESET = "\u001B[0m"; private static final String ANSI_STRIKEOUT_RED = "\u001B[31;9m"; private static final String ANSI_STRIKEOUT_GREEN = "\u001B[32;9m"; private static final String ANSI_STRIKEOUT_YELLOW = "\u001B[33;9m"; - public void run() throws IOException { - BufferReader bufferReader = new BufferReader(); - checkColor(bufferReader.bufferReaderConsole()); + public void run() { + IOHelper IOHelper = new IOHelper (); + checkColor(IOHelper.bufferReaderConsole()); } private void checkColor(int time) { diff --git a/src/main/java/homework_3/FinalClass.java b/src/main/java/homework_3/ImmutableClass.java similarity index 81% rename from src/main/java/homework_3/FinalClass.java rename to src/main/java/homework_3/ImmutableClass.java index 50a5d9dd..c347da5c 100644 --- a/src/main/java/homework_3/FinalClass.java +++ b/src/main/java/homework_3/ImmutableClass.java @@ -7,23 +7,23 @@ // Deep Copy of objects should be performed in the getter methods (To return a copy rather than returning the actual object reference) // No setters (To not have the option to change the value of the instance variable) -public final class FinalClass { +public final class ImmutableClass { private final String string ; private final int intVal; - private FinalClass(String string, int intVal) { + private ImmutableClass(String string, int intVal) { this.string = string; this.intVal = intVal; } - private FinalClass() { + private ImmutableClass() { this.string = "defaultVal"; this.intVal = 0; } - private FinalClass createNewObj() { - return new FinalClass(); + private ImmutableClass createNewObj() { + return new ImmutableClass (); } } \ No newline at end of file diff --git a/src/test/java/homework_2/trafficLighter/TrafficLighter.java b/src/test/java/homework_2/trafficLighter/TrafficLighter.java index 8b924bab..6531d431 100644 --- a/src/test/java/homework_2/trafficLighter/TrafficLighter.java +++ b/src/test/java/homework_2/trafficLighter/TrafficLighter.java @@ -1,7 +1,7 @@ package homework_2.trafficLighter; import base.UnitBase; -import homework_2.traffic_light.Traffic_light; +import homework_2.traffic_light.TrafficLight; import org.junit.jupiter.api.Test; import java.io.IOException; @@ -15,7 +15,7 @@ public class TrafficLighter extends UnitBase { public void testInput61ToSeeGreen() throws IOException { setInput("61"); - Traffic_light traffic_light = new Traffic_light(); + TrafficLight traffic_light = new TrafficLight (); traffic_light.run(); printOut(); removeFromOutput("Please input number"); @@ -27,7 +27,7 @@ public void testInput61ToSeeGreen() throws IOException { public void testInput86400() throws IOException { setInput("86400"); - Traffic_light traffic_light = new Traffic_light(); + TrafficLight traffic_light = new TrafficLight (); traffic_light.run(); printOut(); removeFromOutput("Please input number"); @@ -39,7 +39,7 @@ public void testInput86400() throws IOException { public void testInputZero() throws IOException { setInput("0"); - Traffic_light traffic_light = new Traffic_light(); + TrafficLight traffic_light = new TrafficLight (); traffic_light.run(); printOut(); removeFromOutput("Please input number"); @@ -51,7 +51,7 @@ public void testInputZero() throws IOException { public void testInputNegativeValue() throws IOException { setInput("-2"); - Traffic_light traffic_light = new Traffic_light(); + TrafficLight traffic_light = new TrafficLight (); traffic_light.run(); printOut(); removeFromOutput("Please input number"); @@ -63,7 +63,7 @@ public void testInputNegativeValue() throws IOException { public void testInput45() throws IOException { setInput("45"); - Traffic_light traffic_light = new Traffic_light(); + TrafficLight traffic_light = new TrafficLight (); traffic_light.run(); printOut(); removeFromOutput("Please input number"); @@ -75,7 +75,7 @@ public void testInput45() throws IOException { public void testInput39() throws IOException { setInput("39"); - Traffic_light traffic_light = new Traffic_light(); + TrafficLight traffic_light = new TrafficLight (); traffic_light.run(); printOut(); removeFromOutput("Please input number"); @@ -87,7 +87,7 @@ public void testInput39() throws IOException { public void testInputText() throws IOException { setInput("text"); - Traffic_light traffic_light = new Traffic_light(); + TrafficLight traffic_light = new TrafficLight (); traffic_light.run(); printOut(); removeFromOutput("Please input number"); From 7667c80a9e9b2a752ee403a82c76c6718a747fbe Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Sat, 7 Aug 2021 18:02:04 +0300 Subject: [PATCH 18/36] homework_4 without annotation tests --- build.gradle | 2 + .../java/homework_4/customAnnotation/Cat.java | 13 ++ .../homework_4/customAnnotation/Main.java | 9 ++ .../customAnnotation/MyAnnotation.java | 9 ++ .../customFileReader/CustomFileReader.java | 65 ++++++++ .../homework_4/customFileReader/Main.java | 12 ++ src/main/java/homework_4/singleton/Main.java | 10 ++ .../java/homework_4/singleton/Singleton.java | 28 ++++ src/main/resources/custom_file_reader.txt | 3 + .../customAnnotation/CustomAnnotation.java | 4 + .../CustomFileReader_test.java | 146 ++++++++++++++++++ .../homework_4/singleton/Singleton_test.java | 14 ++ 12 files changed, 315 insertions(+) create mode 100644 src/main/java/homework_4/customAnnotation/Cat.java create mode 100644 src/main/java/homework_4/customAnnotation/Main.java create mode 100644 src/main/java/homework_4/customAnnotation/MyAnnotation.java create mode 100644 src/main/java/homework_4/customFileReader/CustomFileReader.java create mode 100644 src/main/java/homework_4/customFileReader/Main.java create mode 100644 src/main/java/homework_4/singleton/Main.java create mode 100644 src/main/java/homework_4/singleton/Singleton.java create mode 100644 src/main/resources/custom_file_reader.txt create mode 100644 src/test/java/homework_4/customAnnotation/CustomAnnotation.java create mode 100644 src/test/java/homework_4/customFileReader/CustomFileReader_test.java create mode 100644 src/test/java/homework_4/singleton/Singleton_test.java diff --git a/build.gradle b/build.gradle index b91dc843..f17aa516 100644 --- a/build.gradle +++ b/build.gradle @@ -12,8 +12,10 @@ repositories { dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' + testCompile("org.junit.jupiter:junit-jupiter-params:5.7.0") } + test { useJUnitPlatform() } \ No newline at end of file diff --git a/src/main/java/homework_4/customAnnotation/Cat.java b/src/main/java/homework_4/customAnnotation/Cat.java new file mode 100644 index 00000000..3241f917 --- /dev/null +++ b/src/main/java/homework_4/customAnnotation/Cat.java @@ -0,0 +1,13 @@ +package homework_4.customAnnotation; + +import java.lang.annotation.Annotation; + +@MyAnnotation(value = "default_value") +public class Cat { + + public Annotation value; + + public Cat() { + this.value = Cat.class.getAnnotations()[0]; + } +} diff --git a/src/main/java/homework_4/customAnnotation/Main.java b/src/main/java/homework_4/customAnnotation/Main.java new file mode 100644 index 00000000..3811c695 --- /dev/null +++ b/src/main/java/homework_4/customAnnotation/Main.java @@ -0,0 +1,9 @@ +package homework_4.customAnnotation; + +public class Main { + + public static void main(String[] args) throws NoSuchMethodException { + Cat cat = new Cat (); + System.out.println (cat.value); + } +} diff --git a/src/main/java/homework_4/customAnnotation/MyAnnotation.java b/src/main/java/homework_4/customAnnotation/MyAnnotation.java new file mode 100644 index 00000000..d1d81b57 --- /dev/null +++ b/src/main/java/homework_4/customAnnotation/MyAnnotation.java @@ -0,0 +1,9 @@ +package homework_4.customAnnotation; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +public @interface MyAnnotation { + String value() default "value"; +} diff --git a/src/main/java/homework_4/customFileReader/CustomFileReader.java b/src/main/java/homework_4/customFileReader/CustomFileReader.java new file mode 100644 index 00000000..256cc973 --- /dev/null +++ b/src/main/java/homework_4/customFileReader/CustomFileReader.java @@ -0,0 +1,65 @@ +package homework_4.customFileReader; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Scanner; + +public class CustomFileReader { + + private String path; + + public CustomFileReader(String file) { + this.path = file; + } + + public void run1() { + String line; + try (BufferedReader reader = new BufferedReader (new FileReader (path))) { + while ((line = reader.readLine ()) != null) { + System.out.println (line.replaceAll ("[,.]", "")); + } + + } catch (IOException ex) { + System.out.println (ex.getMessage ()); + } + } + + public void run2() { + StringBuilder line = new StringBuilder (); + Scanner scanner = null; + try { + scanner = new Scanner (new File (path)); + scanner.useDelimiter (""); + while (scanner.hasNext ()) { + line.append (scanner.next ()); + } + System.out.println (line.toString ().replaceAll ("[,.]", "")); + + } catch (FileNotFoundException ex) { + System.out.println (ex.getMessage ()); + } finally { + if (scanner != null) { + scanner.close (); + } + } + } + + //NIO + public void run3() { + Path path = Paths.get (this.path); + try { + List read = Files.readAllLines (path); + + for (String list : read) { + System.out.println (list.replaceAll ("[,.]", "")); + } + + } catch (IOException ex) { + System.out.println ("Internal Error"); + } + } + +} diff --git a/src/main/java/homework_4/customFileReader/Main.java b/src/main/java/homework_4/customFileReader/Main.java new file mode 100644 index 00000000..96913c89 --- /dev/null +++ b/src/main/java/homework_4/customFileReader/Main.java @@ -0,0 +1,12 @@ +package homework_4.customFileReader; + +public class Main { + + public static void main(String[] args) { + String path = "src/main/resources/custom_file_reader.txts"; + CustomFileReader fileRiders = new CustomFileReader (path); + fileRiders.run1 (); + fileRiders.run2 (); + fileRiders.run3 (); + } +} diff --git a/src/main/java/homework_4/singleton/Main.java b/src/main/java/homework_4/singleton/Main.java new file mode 100644 index 00000000..f7eba0ed --- /dev/null +++ b/src/main/java/homework_4/singleton/Main.java @@ -0,0 +1,10 @@ +package homework_4.singleton; + +public class Main { + public static void main(String[] args) { + Singleton singleton = Singleton.getInstance (); + Singleton singleton2 = Singleton.getInstance (); + System.out.println (singleton.getName () + " " + singleton.getId ()); + System.out.println (singleton2.getName () + " " + singleton2.getId ()); + } +} diff --git a/src/main/java/homework_4/singleton/Singleton.java b/src/main/java/homework_4/singleton/Singleton.java new file mode 100644 index 00000000..b87a204f --- /dev/null +++ b/src/main/java/homework_4/singleton/Singleton.java @@ -0,0 +1,28 @@ +package homework_4.singleton; + +public final class Singleton { + + private static Singleton instance; + private final int id; + private final String name; + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + private Singleton(int id, String name) { + this.id = id; + this.name = name; + } + + public static Singleton getInstance() { + if (instance == null) { + instance = new Singleton (1, "Chel"); + } + return instance; + } +} diff --git a/src/main/resources/custom_file_reader.txt b/src/main/resources/custom_file_reader.txt new file mode 100644 index 00000000..f9d7b97c --- /dev/null +++ b/src/main/resources/custom_file_reader.txt @@ -0,0 +1,3 @@ +asdas dasd.as. d,as.d asdasdas.d +test +asd.as, dasd \ No newline at end of file diff --git a/src/test/java/homework_4/customAnnotation/CustomAnnotation.java b/src/test/java/homework_4/customAnnotation/CustomAnnotation.java new file mode 100644 index 00000000..a24fa1eb --- /dev/null +++ b/src/test/java/homework_4/customAnnotation/CustomAnnotation.java @@ -0,0 +1,4 @@ +package homework_4.customAnnotation; + +public class CustomAnnotation { +} diff --git a/src/test/java/homework_4/customFileReader/CustomFileReader_test.java b/src/test/java/homework_4/customFileReader/CustomFileReader_test.java new file mode 100644 index 00000000..35e3d023 --- /dev/null +++ b/src/test/java/homework_4/customFileReader/CustomFileReader_test.java @@ -0,0 +1,146 @@ +package homework_4.customFileReader; + +import base.UnitBase; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.io.*; +import java.nio.file.Path; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.*; + +public class CustomFileReader_test extends UnitBase { + + File file; + + @BeforeEach + public void setUp(@TempDir Path tempDir) { + this.file = new File ((tempDir.resolve ("textFile.txt")).toString ()); + } + + public void writeToFile(String text) { + try (BufferedWriter bw1 = new BufferedWriter (new FileWriter (file))) { + bw1.write (text); + } catch (IOException e) { + System.err.println ("Error message "); + } + } + + public static Stream testCasesInOneRow() { + return Stream.of ( + Arguments.of ("test,.test", "testtest"), + Arguments.of (",", ""), + Arguments.of (".", ""), + Arguments.of ("", ""), + Arguments.of (",....asd,. asd", "asd asd") + ); + } + + + @ParameterizedTest + @MethodSource("testCasesInOneRow") + void testRun1InputInOneRow(String in, String expected) { + writeToFile (in); + CustomFileReader fileReader = new CustomFileReader (file.getPath ()); + fileReader.run1 (); + printOut (); + + assertEquals (expected, getOutputLines ()[0]); + } + + @ParameterizedTest + @MethodSource("testCasesInOneRow") + void testRun2InputInOneRow(String in, String expected) { + writeToFile (in); + CustomFileReader fileReader = new CustomFileReader (file.getPath ()); + fileReader.run2 (); + printOut (); + + assertEquals (expected, getOutputLines ()[0]); + } + + @ParameterizedTest + @MethodSource("testCasesInOneRow") + void testRun3InputInOneRow(String in, String expected) { + writeToFile (in); + CustomFileReader fileReader = new CustomFileReader (file.getPath ()); + fileReader.run3 (); + printOut (); + + assertEquals (expected, getOutputLines ()[0]); + } + + //getOutPut using trim(), so it's remove "\n" too + public static Stream testCasesInTwoRows() { + return Stream.of ( + Arguments.of ("te\nst,.test", "te\nsttest"), + Arguments.of ("\n,", ""), + Arguments.of ("\n.\n..", ""), + Arguments.of ("\n\n", ""), + Arguments.of (",\n...\n.asd,. \nasd", "asd \nasd") + ); + } + + @ParameterizedTest + @MethodSource("testCasesInTwoRows") + void testRun1InputInTwoRow(String in, String expected) { + writeToFile (in); + CustomFileReader fileReader = new CustomFileReader (file.getPath ()); + fileReader.run1 (); + printOut (); + + assertEquals (expected, getOutput ()); + } + + @ParameterizedTest + @MethodSource("testCasesInTwoRows") + void testRun2InputInTwoRow(String in, String expected) { + writeToFile (in); + CustomFileReader fileReader = new CustomFileReader (file.getPath ()); + fileReader.run2 (); + printOut (); + + assertEquals (expected, getOutput ()); + } + + @ParameterizedTest + @MethodSource("testCasesInTwoRows") + void testRun3InputInTwoRow(String in, String expected) { + writeToFile (in); + CustomFileReader fileReader = new CustomFileReader (file.getPath ()); + fileReader.run3 (); + printOut (); + + assertEquals (expected, getOutput ()); + } + + @Test + void testRun1FileNotFound() { + + CustomFileReader fileReader = new CustomFileReader (""); + fileReader.run1 (); + String expectedMessage = "(No such file or directory)"; + assertTrue(getOutput ().contains(expectedMessage)); + } + + @Test + void testRun2FileNotFound() { + CustomFileReader fileReader = new CustomFileReader (""); + fileReader.run2 (); + String expectedMessage = "(No such file or directory)"; + assertTrue(getOutput ().contains(expectedMessage)); + } + + @Test + void testRun3FileNotFound() { + CustomFileReader fileReader = new CustomFileReader (""); + fileReader.run3 (); + String expectedMessage = "Internal Error"; + assertTrue(getOutput ().contains (expectedMessage)); + } +} diff --git a/src/test/java/homework_4/singleton/Singleton_test.java b/src/test/java/homework_4/singleton/Singleton_test.java new file mode 100644 index 00000000..5bcc1b2c --- /dev/null +++ b/src/test/java/homework_4/singleton/Singleton_test.java @@ -0,0 +1,14 @@ +package homework_4.singleton; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class Singleton_test { + + @Test + void testSingleton() { + + assertTrue(Singleton.getInstance() == (Singleton.getInstance ())); + } +} From 2d788396cdd5ba4f3a0820d71f0ea9ac928c7706 Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Tue, 10 Aug 2021 22:28:22 +0300 Subject: [PATCH 19/36] homework_4 without annotation tests --- README.md | 1 + .../{CustomAnnotation.java => CustomAnnotation_test.java} | 2 +- src/test/java/homework_4/singleton/Singleton_test.java | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) rename src/test/java/homework_4/customAnnotation/{CustomAnnotation.java => CustomAnnotation_test.java} (51%) diff --git a/README.md b/README.md index 42492b2d..5fbe8c61 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ |HW2 | [pyramid_printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_2/pyramid_printer) | The app that reads input arguments and prints pyramid | |HW2 | [random_chars_table](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_2/random_chars_table) | The app that reads input arguments and creates random table | |HW2 | [traffic_light](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_2/traffic_light) | The app that reads input arguments and prints traffic light | +|HW3 | [immutable class](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_3) | The app that reads input arguments and prints traffic light | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) | [Link to CodingBat](https://codingbat.com/done?user=segodnik@gmail.com&tag=8130222420) diff --git a/src/test/java/homework_4/customAnnotation/CustomAnnotation.java b/src/test/java/homework_4/customAnnotation/CustomAnnotation_test.java similarity index 51% rename from src/test/java/homework_4/customAnnotation/CustomAnnotation.java rename to src/test/java/homework_4/customAnnotation/CustomAnnotation_test.java index a24fa1eb..d970657c 100644 --- a/src/test/java/homework_4/customAnnotation/CustomAnnotation.java +++ b/src/test/java/homework_4/customAnnotation/CustomAnnotation_test.java @@ -1,4 +1,4 @@ package homework_4.customAnnotation; -public class CustomAnnotation { +public class CustomAnnotation_test { } diff --git a/src/test/java/homework_4/singleton/Singleton_test.java b/src/test/java/homework_4/singleton/Singleton_test.java index 5bcc1b2c..dea83b93 100644 --- a/src/test/java/homework_4/singleton/Singleton_test.java +++ b/src/test/java/homework_4/singleton/Singleton_test.java @@ -8,7 +8,6 @@ public class Singleton_test { @Test void testSingleton() { - assertTrue(Singleton.getInstance() == (Singleton.getInstance ())); } } From a1aff4be954306d9a9bbe32a4ff3aeffca4f2ac4 Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Tue, 10 Aug 2021 23:35:36 +0300 Subject: [PATCH 20/36] homework_4 whithout read me --- .../java/homework_4/customAnnotation/Cat.java | 17 ++++++++++++----- .../java/homework_4/customAnnotation/Main.java | 4 ++-- .../customAnnotation/MyAnnotation.java | 2 +- .../customAnnotation/CustomAnnotationTest.java | 14 ++++++++++++++ .../customAnnotation/CustomAnnotation_test.java | 4 ---- ...ader_test.java => CustomFileReaderTest.java} | 2 +- .../{Singleton_test.java => SingletonTest.java} | 2 +- 7 files changed, 31 insertions(+), 14 deletions(-) create mode 100644 src/test/java/homework_4/customAnnotation/CustomAnnotationTest.java delete mode 100644 src/test/java/homework_4/customAnnotation/CustomAnnotation_test.java rename src/test/java/homework_4/customFileReader/{CustomFileReader_test.java => CustomFileReaderTest.java} (98%) rename src/test/java/homework_4/singleton/{Singleton_test.java => SingletonTest.java} (89%) diff --git a/src/main/java/homework_4/customAnnotation/Cat.java b/src/main/java/homework_4/customAnnotation/Cat.java index 3241f917..85e7dfd0 100644 --- a/src/main/java/homework_4/customAnnotation/Cat.java +++ b/src/main/java/homework_4/customAnnotation/Cat.java @@ -1,13 +1,20 @@ package homework_4.customAnnotation; -import java.lang.annotation.Annotation; +import java.lang.reflect.Constructor; + -@MyAnnotation(value = "default_value") public class Cat { - public Annotation value; + String testValue; - public Cat() { - this.value = Cat.class.getAnnotations()[0]; + @MyAnnotation + public Cat() { + try { + Constructor constructor = this.getClass ().getConstructor (null); + MyAnnotation myAnnotation = (MyAnnotation) constructor.getAnnotation (MyAnnotation.class); + this.testValue = myAnnotation.value (); + } catch (NoSuchMethodException e) { + e.printStackTrace (); + } } } diff --git a/src/main/java/homework_4/customAnnotation/Main.java b/src/main/java/homework_4/customAnnotation/Main.java index 3811c695..c48c788e 100644 --- a/src/main/java/homework_4/customAnnotation/Main.java +++ b/src/main/java/homework_4/customAnnotation/Main.java @@ -2,8 +2,8 @@ public class Main { - public static void main(String[] args) throws NoSuchMethodException { + public static void main(String[] args) { Cat cat = new Cat (); - System.out.println (cat.value); + System.out.println (cat.testValue); } } diff --git a/src/main/java/homework_4/customAnnotation/MyAnnotation.java b/src/main/java/homework_4/customAnnotation/MyAnnotation.java index d1d81b57..866364bf 100644 --- a/src/main/java/homework_4/customAnnotation/MyAnnotation.java +++ b/src/main/java/homework_4/customAnnotation/MyAnnotation.java @@ -5,5 +5,5 @@ @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { - String value() default "value"; + String value() default "defValue"; } diff --git a/src/test/java/homework_4/customAnnotation/CustomAnnotationTest.java b/src/test/java/homework_4/customAnnotation/CustomAnnotationTest.java new file mode 100644 index 00000000..9786c0fc --- /dev/null +++ b/src/test/java/homework_4/customAnnotation/CustomAnnotationTest.java @@ -0,0 +1,14 @@ +package homework_4.customAnnotation; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class CustomAnnotationTest { + + @Test + void testAnnotationDefaultConstructorValue() { + Cat cat = new Cat (); + assertEquals ("defValue", cat.testValue); + } +} diff --git a/src/test/java/homework_4/customAnnotation/CustomAnnotation_test.java b/src/test/java/homework_4/customAnnotation/CustomAnnotation_test.java deleted file mode 100644 index d970657c..00000000 --- a/src/test/java/homework_4/customAnnotation/CustomAnnotation_test.java +++ /dev/null @@ -1,4 +0,0 @@ -package homework_4.customAnnotation; - -public class CustomAnnotation_test { -} diff --git a/src/test/java/homework_4/customFileReader/CustomFileReader_test.java b/src/test/java/homework_4/customFileReader/CustomFileReaderTest.java similarity index 98% rename from src/test/java/homework_4/customFileReader/CustomFileReader_test.java rename to src/test/java/homework_4/customFileReader/CustomFileReaderTest.java index 35e3d023..9f850a16 100644 --- a/src/test/java/homework_4/customFileReader/CustomFileReader_test.java +++ b/src/test/java/homework_4/customFileReader/CustomFileReaderTest.java @@ -14,7 +14,7 @@ import static org.junit.jupiter.api.Assertions.*; -public class CustomFileReader_test extends UnitBase { +public class CustomFileReaderTest extends UnitBase { File file; diff --git a/src/test/java/homework_4/singleton/Singleton_test.java b/src/test/java/homework_4/singleton/SingletonTest.java similarity index 89% rename from src/test/java/homework_4/singleton/Singleton_test.java rename to src/test/java/homework_4/singleton/SingletonTest.java index dea83b93..6880892f 100644 --- a/src/test/java/homework_4/singleton/Singleton_test.java +++ b/src/test/java/homework_4/singleton/SingletonTest.java @@ -4,7 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; -public class Singleton_test { +public class SingletonTest { @Test void testSingleton() { From 10b9e6287cb72544dd161da3c9a0ed3cb67e7e92 Mon Sep 17 00:00:00 2001 From: "Anton.Segodnik" Date: Tue, 10 Aug 2021 23:40:11 +0300 Subject: [PATCH 21/36] homework_4 all --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 5fbe8c61..8f69789f 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,9 @@ |HW2 | [random_chars_table](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_2/random_chars_table) | The app that reads input arguments and creates random table | |HW2 | [traffic_light](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_2/traffic_light) | The app that reads input arguments and prints traffic light | |HW3 | [immutable class](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_3) | The app that reads input arguments and prints traffic light | +|HW4 | [customAnnotation](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_4/customAnnotation) | The app create object with default value from constructor using annotation | +|HW4 | [customFileReader](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_4/customFileReader) | The app that reads from file | +|HW4 | [singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_4/singleton) | The singleton app | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) | [Link to CodingBat](https://codingbat.com/done?user=segodnik@gmail.com&tag=8130222420) From 1b68701482b76bcd4a52545b41ce593d467e79bd Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Mon, 23 Aug 2021 09:14:56 +0300 Subject: [PATCH 22/36] homework_5 all --- README.md | 2 + build.gradle | 1 + .../homework_5/customRegexMatcher/Main.java | 16 ++++++ .../customRegexMatcher/PowerOfNumber.java | 51 +++++++++++++++++++ .../powerOfNumber/CustomRegexMatcher.java | 11 ++++ .../java/homework_5/powerOfNumber/Main.java | 11 ++++ .../CustomRegexMatcherTest.java | 36 +++++++++++++ .../powerOfNumber/PowerOfNumberTest.java | 42 +++++++++++++++ 8 files changed, 170 insertions(+) create mode 100644 src/main/java/homework_5/customRegexMatcher/Main.java create mode 100644 src/main/java/homework_5/customRegexMatcher/PowerOfNumber.java create mode 100644 src/main/java/homework_5/powerOfNumber/CustomRegexMatcher.java create mode 100644 src/main/java/homework_5/powerOfNumber/Main.java create mode 100644 src/test/java/homework_5/CustomRegexMatcher/CustomRegexMatcherTest.java create mode 100644 src/test/java/homework_5/powerOfNumber/PowerOfNumberTest.java diff --git a/README.md b/README.md index 8f69789f..bc02921b 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,8 @@ |HW4 | [customAnnotation](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_4/customAnnotation) | The app create object with default value from constructor using annotation | |HW4 | [customFileReader](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_4/customFileReader) | The app that reads from file | |HW4 | [singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_4/singleton) | The singleton app | +|HW5 | [singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_5/singleton) | The singleton app | +|HW5 | [singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_5/singleton) | The singleton app | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) | [Link to CodingBat](https://codingbat.com/done?user=segodnik@gmail.com&tag=8130222420) diff --git a/build.gradle b/build.gradle index f17aa516..762cbf03 100644 --- a/build.gradle +++ b/build.gradle @@ -10,6 +10,7 @@ repositories { } dependencies { + implementation 'org.jetbrains:annotations:20.1.0' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' testCompile("org.junit.jupiter:junit-jupiter-params:5.7.0") diff --git a/src/main/java/homework_5/customRegexMatcher/Main.java b/src/main/java/homework_5/customRegexMatcher/Main.java new file mode 100644 index 00000000..0c8932c8 --- /dev/null +++ b/src/main/java/homework_5/customRegexMatcher/Main.java @@ -0,0 +1,16 @@ +package homework_5.customRegexMatcher; + +public class Main { + public static void main(String[] args) { + PowerOfNumber powerOfNumber = new PowerOfNumber (); +// System.out.println (powerOfNumber.recursion (2, 2)); +// System.out.println (powerOfNumber.recursion (2, 1)); +// System.out.println (powerOfNumber.recursion (2, 0)); +// System.out.println (powerOfNumber.recursion (0, 2)); +// System.out.println (Math.pow(2,2)); +// System.out.println (Math.pow(2,1)); +// System.out.println (Math.pow(2,0)); +// System.out.println (Math.pow(0,2)); + powerOfNumber.run (); + } +} diff --git a/src/main/java/homework_5/customRegexMatcher/PowerOfNumber.java b/src/main/java/homework_5/customRegexMatcher/PowerOfNumber.java new file mode 100644 index 00000000..0677cf94 --- /dev/null +++ b/src/main/java/homework_5/customRegexMatcher/PowerOfNumber.java @@ -0,0 +1,51 @@ +package homework_5.customRegexMatcher; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class PowerOfNumber { + + private int number; + private int power; + + public int recursion(int firstNumber, int secondNumber) { + if (secondNumber < 1) return 1; + return firstNumber * recursion (firstNumber, secondNumber - 1); + } + + public void run() { + String inputString = bufferReaderConsole (); + if (validator (inputString)) { + System.out.println (recursion (number, power)); + } else { + System.out.println ("Only 2 non-negative integers are allowed"); + } + } + + public String bufferReaderConsole() { + try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { + return reader.readLine (); + } catch (IOException ex) { + return ""; + } + } + + public boolean validator(String input) { + try { + String[] arr = input.split (" "); + if (arr.length != 2) { + return false; + } + number = Integer.parseInt (arr[0]); + power = Integer.parseInt (arr[1]); + if (number < 0 || power < 0) { + return false; + } + } catch (NumberFormatException | NullPointerException ex) { + return false; + } + return true; + } + +} diff --git a/src/main/java/homework_5/powerOfNumber/CustomRegexMatcher.java b/src/main/java/homework_5/powerOfNumber/CustomRegexMatcher.java new file mode 100644 index 00000000..530752f5 --- /dev/null +++ b/src/main/java/homework_5/powerOfNumber/CustomRegexMatcher.java @@ -0,0 +1,11 @@ +package homework_5.powerOfNumber; + +import java.util.regex.Pattern; + +public class CustomRegexMatcher { + + public void run(String str) { + System.out.println (Pattern.matches ("(GET |POST |PUT |DELETE )\\/api/v1/.*", str)); + } + +} diff --git a/src/main/java/homework_5/powerOfNumber/Main.java b/src/main/java/homework_5/powerOfNumber/Main.java new file mode 100644 index 00000000..2f2ee5c9 --- /dev/null +++ b/src/main/java/homework_5/powerOfNumber/Main.java @@ -0,0 +1,11 @@ +package homework_5.powerOfNumber; + +public class Main { + public static void main(String[] args) { + + String string = "192.168.00.00 - - [10/Jun/2021:07:21:22 +0000] PUT /api/v1/user/favorites HTTP/1.1 200 45 https://test.lab/login"; + + CustomRegexMatcher customRegexMatcher = new CustomRegexMatcher (); + customRegexMatcher.run (string); + } +} diff --git a/src/test/java/homework_5/CustomRegexMatcher/CustomRegexMatcherTest.java b/src/test/java/homework_5/CustomRegexMatcher/CustomRegexMatcherTest.java new file mode 100644 index 00000000..95dd5f4b --- /dev/null +++ b/src/test/java/homework_5/CustomRegexMatcher/CustomRegexMatcherTest.java @@ -0,0 +1,36 @@ +package homework_5.CustomRegexMatcher; + +import base.UnitBase; +import homework_5.powerOfNumber.CustomRegexMatcher; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class CustomRegexMatcherTest extends UnitBase { + + public static Stream regex() { + return Stream.of ( + Arguments.of ("PUT /api/v1/ HTTP/1.1 200 45 https://test.lab/login", "true"), + Arguments.of ("GET 1", "false"), + Arguments.of (" GET /api/v1/", "false"), + Arguments.of ("POST /api/v1/", "true"), + Arguments.of ("POST /api/1/", "false"), + Arguments.of ("POST/api/v1/", "false"), + Arguments.of ("DELETE /api/v1/", "true"), + Arguments.of ("DELET /api/v1/", "false") + ); + } + + @ParameterizedTest + @MethodSource("regex") + void testRun1InputInOneRow(String in, String expected) { + CustomRegexMatcher customRegexMatcher = new CustomRegexMatcher (); + customRegexMatcher.run (in); + + assertEquals (expected, getOutput ()); + } +} diff --git a/src/test/java/homework_5/powerOfNumber/PowerOfNumberTest.java b/src/test/java/homework_5/powerOfNumber/PowerOfNumberTest.java new file mode 100644 index 00000000..ba1279dc --- /dev/null +++ b/src/test/java/homework_5/powerOfNumber/PowerOfNumberTest.java @@ -0,0 +1,42 @@ +package homework_5.powerOfNumber; + +import base.UnitBase; +import homework_5.customRegexMatcher.PowerOfNumber; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class PowerOfNumberTest extends UnitBase { + + static String expectedError = "Only 2 non-negative integers are allowed"; + + public static Stream recursionTests() { + return Stream.of ( + Arguments.of ("2 2", "4"), + Arguments.of ("2 1", "2"), + Arguments.of ("2 0", "1"), + Arguments.of ("0 2", "0"), + Arguments.of ("3 3", "27"), + Arguments.of ("asd,. asd", expectedError), + Arguments.of ("1", expectedError), + Arguments.of ("-1 2", expectedError), + Arguments.of ("", expectedError), + Arguments.of (" ", expectedError), + Arguments.of ("5. 2", expectedError) + ); + } + + @ParameterizedTest + @MethodSource("recursionTests") + void testRun1InputInOneRow(String in, String expected) { + setInput (in); + PowerOfNumber powerOfNumber = new PowerOfNumber (); + powerOfNumber.run (); + + assertEquals (expected, getOutputLines ()[0]); + } +} From 5f57dd9cec1db6f1416d23d341a861fb61086245 Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Mon, 23 Aug 2021 09:19:18 +0300 Subject: [PATCH 23/36] homework_5 with read me and correct packaging --- README.md | 4 ++-- .../CustomRegexMatcher.java | 2 +- .../java/homework_5/customRegexMatcher/Main.java | 15 +++++---------- src/main/java/homework_5/powerOfNumber/Main.java | 15 ++++++++++----- .../PowerOfNumber.java | 2 +- .../CustomRegexMatcherTest.java | 2 +- .../powerOfNumber/PowerOfNumberTest.java | 1 - 7 files changed, 20 insertions(+), 21 deletions(-) rename src/main/java/homework_5/{powerOfNumber => customRegexMatcher}/CustomRegexMatcher.java (84%) rename src/main/java/homework_5/{customRegexMatcher => powerOfNumber}/PowerOfNumber.java (97%) diff --git a/README.md b/README.md index bc02921b..d0051a43 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,8 @@ |HW4 | [customAnnotation](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_4/customAnnotation) | The app create object with default value from constructor using annotation | |HW4 | [customFileReader](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_4/customFileReader) | The app that reads from file | |HW4 | [singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_4/singleton) | The singleton app | -|HW5 | [singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_5/singleton) | The singleton app | -|HW5 | [singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_5/singleton) | The singleton app | +|HW5 | [customRegexMatcher](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_5/customRegexMatcher) | The singleton app | +|HW5 | [PowerOfNumber](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_5/PowerOfNumber) | The singleton app | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) | [Link to CodingBat](https://codingbat.com/done?user=segodnik@gmail.com&tag=8130222420) diff --git a/src/main/java/homework_5/powerOfNumber/CustomRegexMatcher.java b/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java similarity index 84% rename from src/main/java/homework_5/powerOfNumber/CustomRegexMatcher.java rename to src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java index 530752f5..012f3cc1 100644 --- a/src/main/java/homework_5/powerOfNumber/CustomRegexMatcher.java +++ b/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java @@ -1,4 +1,4 @@ -package homework_5.powerOfNumber; +package homework_5.customRegexMatcher; import java.util.regex.Pattern; diff --git a/src/main/java/homework_5/customRegexMatcher/Main.java b/src/main/java/homework_5/customRegexMatcher/Main.java index 0c8932c8..56668cce 100644 --- a/src/main/java/homework_5/customRegexMatcher/Main.java +++ b/src/main/java/homework_5/customRegexMatcher/Main.java @@ -2,15 +2,10 @@ public class Main { public static void main(String[] args) { - PowerOfNumber powerOfNumber = new PowerOfNumber (); -// System.out.println (powerOfNumber.recursion (2, 2)); -// System.out.println (powerOfNumber.recursion (2, 1)); -// System.out.println (powerOfNumber.recursion (2, 0)); -// System.out.println (powerOfNumber.recursion (0, 2)); -// System.out.println (Math.pow(2,2)); -// System.out.println (Math.pow(2,1)); -// System.out.println (Math.pow(2,0)); -// System.out.println (Math.pow(0,2)); - powerOfNumber.run (); + + String string = "192.168.00.00 - - [10/Jun/2021:07:21:22 +0000] PUT /api/v1/user/favorites HTTP/1.1 200 45 https://test.lab/login"; + + CustomRegexMatcher customRegexMatcher = new CustomRegexMatcher (); + customRegexMatcher.run (string); } } diff --git a/src/main/java/homework_5/powerOfNumber/Main.java b/src/main/java/homework_5/powerOfNumber/Main.java index 2f2ee5c9..e9c5c187 100644 --- a/src/main/java/homework_5/powerOfNumber/Main.java +++ b/src/main/java/homework_5/powerOfNumber/Main.java @@ -2,10 +2,15 @@ public class Main { public static void main(String[] args) { - - String string = "192.168.00.00 - - [10/Jun/2021:07:21:22 +0000] PUT /api/v1/user/favorites HTTP/1.1 200 45 https://test.lab/login"; - - CustomRegexMatcher customRegexMatcher = new CustomRegexMatcher (); - customRegexMatcher.run (string); + PowerOfNumber powerOfNumber = new PowerOfNumber (); +// System.out.println (powerOfNumber.recursion (2, 2)); +// System.out.println (powerOfNumber.recursion (2, 1)); +// System.out.println (powerOfNumber.recursion (2, 0)); +// System.out.println (powerOfNumber.recursion (0, 2)); +// System.out.println (Math.pow(2,2)); +// System.out.println (Math.pow(2,1)); +// System.out.println (Math.pow(2,0)); +// System.out.println (Math.pow(0,2)); + powerOfNumber.run (); } } diff --git a/src/main/java/homework_5/customRegexMatcher/PowerOfNumber.java b/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java similarity index 97% rename from src/main/java/homework_5/customRegexMatcher/PowerOfNumber.java rename to src/main/java/homework_5/powerOfNumber/PowerOfNumber.java index 0677cf94..f9e949be 100644 --- a/src/main/java/homework_5/customRegexMatcher/PowerOfNumber.java +++ b/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java @@ -1,4 +1,4 @@ -package homework_5.customRegexMatcher; +package homework_5.powerOfNumber; import java.io.BufferedReader; import java.io.IOException; diff --git a/src/test/java/homework_5/CustomRegexMatcher/CustomRegexMatcherTest.java b/src/test/java/homework_5/CustomRegexMatcher/CustomRegexMatcherTest.java index 95dd5f4b..e7e6f909 100644 --- a/src/test/java/homework_5/CustomRegexMatcher/CustomRegexMatcherTest.java +++ b/src/test/java/homework_5/CustomRegexMatcher/CustomRegexMatcherTest.java @@ -1,7 +1,7 @@ package homework_5.CustomRegexMatcher; import base.UnitBase; -import homework_5.powerOfNumber.CustomRegexMatcher; +import homework_5.customRegexMatcher.CustomRegexMatcher; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; diff --git a/src/test/java/homework_5/powerOfNumber/PowerOfNumberTest.java b/src/test/java/homework_5/powerOfNumber/PowerOfNumberTest.java index ba1279dc..f376fd57 100644 --- a/src/test/java/homework_5/powerOfNumber/PowerOfNumberTest.java +++ b/src/test/java/homework_5/powerOfNumber/PowerOfNumberTest.java @@ -1,7 +1,6 @@ package homework_5.powerOfNumber; import base.UnitBase; -import homework_5.customRegexMatcher.PowerOfNumber; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; From f1f5ecc9233e3b7f568023b645679bd6b6a46727 Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Mon, 23 Aug 2021 17:41:14 +0300 Subject: [PATCH 24/36] homework_5 with read me and correct packaging + private methods --- src/main/java/homework_5/powerOfNumber/PowerOfNumber.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java b/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java index f9e949be..8c038f54 100644 --- a/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java +++ b/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java @@ -9,7 +9,7 @@ public class PowerOfNumber { private int number; private int power; - public int recursion(int firstNumber, int secondNumber) { + private int recursion(int firstNumber, int secondNumber) { if (secondNumber < 1) return 1; return firstNumber * recursion (firstNumber, secondNumber - 1); } @@ -23,7 +23,7 @@ public void run() { } } - public String bufferReaderConsole() { + private String bufferReaderConsole() { try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { return reader.readLine (); } catch (IOException ex) { From 4cff6d588c7234bdd24acbcadc8a05983bcc3ea7 Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Thu, 2 Sep 2021 20:40:27 +0300 Subject: [PATCH 25/36] homework_2 fixed, Random Chars Table wasn't fixed (not enough details) --- .../homework_2/bufferReaders/IOHelper.java | 53 ------------------- .../pyramid_printer/InputPyramidReader.java | 24 +++++++++ .../pyramid_printer/PyramidPrinter.java | 10 ++-- .../InputRandomCharsReader.java | 17 ++++++ .../random_chars_table/ParserError.java | 1 + .../random_chars_table/ParserInputData.java | 24 ++++----- .../random_chars_table/RandomCharsTable.java | 36 ++++++------- .../InputTrafficLightReader.java | 27 ++++++++++ .../java/homework_2/traffic_light/Main.java | 5 +- .../traffic_light/TrafficLight.java | 8 ++- src/main/java/homework_3/ImmutableClass.java | 6 +-- .../java/homework_4/customAnnotation/Cat.java | 10 ++-- .../homework_4/customAnnotation/Main.java | 4 +- .../customFileReader/CustomFileReader.java | 42 +++++++-------- .../homework_4/customFileReader/Main.java | 8 +-- src/main/java/homework_4/singleton/Main.java | 9 ++-- .../java/homework_4/singleton/Singleton.java | 4 +- .../CustomRegexMatcher.java | 2 +- .../homework_5/customRegexMatcher/Main.java | 4 +- .../java/homework_5/powerOfNumber/Main.java | 4 +- .../powerOfNumber/PowerOfNumber.java | 30 +++++------ .../RandomCharsPrinter.java | 5 +- .../trafficLighter/TrafficLighter.java | 12 +++++ 23 files changed, 184 insertions(+), 161 deletions(-) delete mode 100644 src/main/java/homework_2/bufferReaders/IOHelper.java create mode 100644 src/main/java/homework_2/pyramid_printer/InputPyramidReader.java create mode 100644 src/main/java/homework_2/random_chars_table/InputRandomCharsReader.java create mode 100644 src/main/java/homework_2/traffic_light/InputTrafficLightReader.java diff --git a/src/main/java/homework_2/bufferReaders/IOHelper.java b/src/main/java/homework_2/bufferReaders/IOHelper.java deleted file mode 100644 index 0a3b045e..00000000 --- a/src/main/java/homework_2/bufferReaders/IOHelper.java +++ /dev/null @@ -1,53 +0,0 @@ -package homework_2.bufferReaders; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; - -public class IOHelper { - - public int bufferReaderConsole() { - try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { - - int i = Integer.parseInt (reader.readLine ()); - if (i < 0) { - System.out.println ("Error, negative numbers are not valid"); - } else if (i >= 86400) { - System.out.println ("it's a new day..."); - } - return i; - } catch (NumberFormatException ex) { - System.out.println ("Invalid data format, please enter integer"); - return -1; - } catch (IOException e) { - System.out.println ("System error"); - return -1; - } - } - - public String bufferReaderConsoleForRandom() { - try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { - return reader.readLine (); - } catch (IOException ex){ - System.out.println ("System Error"); - return ""; - } - } - - public int bufferReaderForPyramid() { - try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { - int i = Integer.parseInt (reader.readLine ()); - if (i < 0) { - System.out.println ("Error, negative numbers are not valid"); - } else { - return i; - } - } catch (NumberFormatException ex) { - System.out.println ("invalid format data, please enter integer"); - } catch (IOException e) { - System.out.println ("System Error"); - } - return 0; - } - -} diff --git a/src/main/java/homework_2/pyramid_printer/InputPyramidReader.java b/src/main/java/homework_2/pyramid_printer/InputPyramidReader.java new file mode 100644 index 00000000..76eea796 --- /dev/null +++ b/src/main/java/homework_2/pyramid_printer/InputPyramidReader.java @@ -0,0 +1,24 @@ +package homework_2.pyramid_printer; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class InputPyramidReader { + + public int bufferReaderForPyramid() { + try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { + int i = Integer.parseInt(reader.readLine()); + if(i < 0) { + System.out.println("Error, negative numbers are not valid"); + } else { + return i; + } + } catch(NumberFormatException ex) { + System.out.println("Error, only numbers are allowed"); + } catch(IOException e) { + System.out.println("System Error"); + } + return 0; + } +} diff --git a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java index eef57b35..f03c2a19 100644 --- a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -1,15 +1,13 @@ package homework_2.pyramid_printer; -import homework_2.bufferReaders.IOHelper; - public class PyramidPrinter { public void run() { - IOHelper IOHelperForPyramid = new IOHelper (); - int pyramidLength = IOHelperForPyramid.bufferReaderForPyramid(); + InputPyramidReader IOHelperForPyramid = new InputPyramidReader(); + int pyramidLength = IOHelperForPyramid.bufferReaderForPyramid(); - for (int i = 0; i < pyramidLength; i++) { - for(int j = 0; j <= i; j ++) { + for(int i = 0; i < pyramidLength; i++) { + for(int j = 0; j <= i; j++) { System.out.print("x"); } System.out.println(); diff --git a/src/main/java/homework_2/random_chars_table/InputRandomCharsReader.java b/src/main/java/homework_2/random_chars_table/InputRandomCharsReader.java new file mode 100644 index 00000000..4bc2e0f4 --- /dev/null +++ b/src/main/java/homework_2/random_chars_table/InputRandomCharsReader.java @@ -0,0 +1,17 @@ +package homework_2.random_chars_table; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class InputRandomCharsReader { + + public String bufferReaderConsoleForRandom() { + try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { + return reader.readLine(); + } catch(IOException ex) { + System.out.println("System Error"); + return ""; + } + } +} diff --git a/src/main/java/homework_2/random_chars_table/ParserError.java b/src/main/java/homework_2/random_chars_table/ParserError.java index 06ba6542..910c7d83 100644 --- a/src/main/java/homework_2/random_chars_table/ParserError.java +++ b/src/main/java/homework_2/random_chars_table/ParserError.java @@ -1,6 +1,7 @@ package homework_2.random_chars_table; public class ParserError extends Exception { + public ParserError(String errorMessage) { super(errorMessage); } diff --git a/src/main/java/homework_2/random_chars_table/ParserInputData.java b/src/main/java/homework_2/random_chars_table/ParserInputData.java index 98fe5855..bd8580d1 100644 --- a/src/main/java/homework_2/random_chars_table/ParserInputData.java +++ b/src/main/java/homework_2/random_chars_table/ParserInputData.java @@ -4,29 +4,29 @@ public class ParserInputData { public InputData parserInputRandomData(String input) throws ParserError { - String[] arrayWithInputData = input.trim ().split (" "); + String[] arrayWithInputData = input.trim().split(" "); try { - int row = Integer.parseInt (arrayWithInputData[0]); - int column = Integer.parseInt (arrayWithInputData[1]); + int row = Integer.parseInt(arrayWithInputData[0]); + int column = Integer.parseInt(arrayWithInputData[1]); String typeOfParity = arrayWithInputData[2]; - if (arrayWithInputData.length != 3) { - throw new ParserError ("Should be typed 3 parameters (e.g. 3 3 odd)"); + if(arrayWithInputData.length != 3) { + throw new ParserError("Should be typed 3 parameters (e.g. 3 3 odd)"); } - if (row < 0 || column < 0) { - throw new ParserError ("negative isn't allowed"); + if(row < 0 || column < 0) { + throw new ParserError("negative isn't allowed"); } - if (!typeOfParity.equals ("even") && !typeOfParity.equals ("odd")) { - throw new ParserError ("Wrong type parameter"); + if(!typeOfParity.equals("even") && !typeOfParity.equals("odd")) { + throw new ParserError("Wrong type parameter"); } - return new InputData (row, column, typeOfParity); + return new InputData(row, column, typeOfParity); - } catch (NumberFormatException ex) { - throw new ParserError ("Invalid data"); + } catch(NumberFormatException ex) { + throw new ParserError("Invalid data"); } } } diff --git a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java index a3d6526a..3e681ebc 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -1,51 +1,49 @@ package homework_2.random_chars_table; -import homework_2.bufferReaders.IOHelper; - import java.util.ArrayList; import java.util.List; public class RandomCharsTable { - public void run() { - IOHelper randomIOHelper = new IOHelper (); + public void run() { + InputRandomCharsReader randomIOHelper = new InputRandomCharsReader(); try { - String inputString = randomIOHelper.bufferReaderConsoleForRandom (); - InputData inputData = new ParserInputData ().parserInputRandomData (inputString); - returnAnswer (generateArrays (inputData.row, inputData.column), inputData.type); - } catch (ParserError ex) { - System.out.print (ex.getMessage ()); + String inputString = randomIOHelper.bufferReaderConsoleForRandom(); + InputData inputData = new ParserInputData().parserInputRandomData(inputString); + returnAnswer(generateArrays(inputData.row, inputData.column), inputData.type); + } catch(ParserError ex) { + System.out.print(ex.getMessage()); return; } } private char[][] generateArrays(int j, int k) { char[][] arr = new char[j][k]; - for (int row = 0; row < j; row++) { - for (int col = 0; col < k; col++) { - arr[row][col] = (char) (Math.random () * 26 + 'A'); + for(int row = 0; row < j; row++) { + for(int col = 0; col < k; col++) { + arr[row][col] = (char) (Math.random() * 26 + 'A'); } } return arr; } private void returnAnswer(char[][] arr, String type) { - List result = new ArrayList<> (); + List result = new ArrayList<>(); String array = ""; - for (int row = 0; row < arr.length; row++) { - for (int col = 0; col < arr[row].length; col++) { + for(int row = 0; row < arr.length; row++) { + for(int col = 0; col < arr[row].length; col++) { array += "|" + arr[row][col] + "|"; - if ((type.equals ("even") && arr[row][col] % 2 == 0) || (type.equals ("odd") && arr[row][col] % 2 != 0)) { - result.add (String.valueOf (arr[row][col])); + if((type.equals("even") && arr[row][col] % 2 == 0) || (type.equals("odd") && arr[row][col] % 2 != 0)) { + result.add(String.valueOf(arr[row][col])); } } array += "\n"; } - System.out.println (array); - System.out.println (type + " letters - " + String.join (", ", result)); + System.out.println(array); + System.out.println(type + " letters - " + String.join(", ", result)); } } diff --git a/src/main/java/homework_2/traffic_light/InputTrafficLightReader.java b/src/main/java/homework_2/traffic_light/InputTrafficLightReader.java new file mode 100644 index 00000000..cd16740b --- /dev/null +++ b/src/main/java/homework_2/traffic_light/InputTrafficLightReader.java @@ -0,0 +1,27 @@ +package homework_2.traffic_light; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class InputTrafficLightReader { + + public int bufferReaderConsole() { + try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { + + int i = Integer.parseInt(reader.readLine()); + if(i < 0) { + System.out.println("Error, negative numbers are not allowed"); + } else if(i >= 86400) { + System.out.println("Error, the day is over"); + } + return i; + } catch(NumberFormatException ex) { + System.out.println("Error, invalid data format, please enter integer"); + return -1; + } catch(IOException e) { + System.out.println("System error"); + return -1; + } + } +} diff --git a/src/main/java/homework_2/traffic_light/Main.java b/src/main/java/homework_2/traffic_light/Main.java index dfbf63c9..1d481453 100644 --- a/src/main/java/homework_2/traffic_light/Main.java +++ b/src/main/java/homework_2/traffic_light/Main.java @@ -1,11 +1,10 @@ package homework_2.traffic_light; -import java.io.IOException; - public class Main { public static void main(String[] args) { - TrafficLight traffic_light = new TrafficLight (); + + TrafficLight traffic_light = new TrafficLight(); traffic_light.run(); } } diff --git a/src/main/java/homework_2/traffic_light/TrafficLight.java b/src/main/java/homework_2/traffic_light/TrafficLight.java index dc422213..4fb780d5 100644 --- a/src/main/java/homework_2/traffic_light/TrafficLight.java +++ b/src/main/java/homework_2/traffic_light/TrafficLight.java @@ -1,7 +1,5 @@ package homework_2.traffic_light; -import homework_2.bufferReaders.IOHelper; - public class TrafficLight { private static final String ANSI_RESET = "\u001B[0m"; @@ -10,7 +8,7 @@ public class TrafficLight { private static final String ANSI_STRIKEOUT_YELLOW = "\u001B[33;9m"; public void run() { - IOHelper IOHelper = new IOHelper (); + InputTrafficLightReader IOHelper = new InputTrafficLightReader(); checkColor(IOHelper.bufferReaderConsole()); } @@ -18,9 +16,9 @@ private void checkColor(int time) { if(time < 0 || time >= 86400) return; int sec = time % 60; - if (sec < 35) { + if(sec < 35) { System.out.println(ANSI_STRIKEOUT_GREEN + "Green" + ANSI_RESET); - } else if (sec < 40) { + } else if(sec < 40 || sec >= 55) { System.out.println(ANSI_STRIKEOUT_YELLOW + "Yellow" + ANSI_RESET); } else { System.out.println(ANSI_STRIKEOUT_RED + "Red" + ANSI_RESET); diff --git a/src/main/java/homework_3/ImmutableClass.java b/src/main/java/homework_3/ImmutableClass.java index c347da5c..f2f4d67d 100644 --- a/src/main/java/homework_3/ImmutableClass.java +++ b/src/main/java/homework_3/ImmutableClass.java @@ -9,8 +9,8 @@ public final class ImmutableClass { - private final String string ; - private final int intVal; + private final String string; + private final int intVal; private ImmutableClass(String string, int intVal) { this.string = string; @@ -23,7 +23,7 @@ private ImmutableClass() { } private ImmutableClass createNewObj() { - return new ImmutableClass (); + return new ImmutableClass(); } } \ No newline at end of file diff --git a/src/main/java/homework_4/customAnnotation/Cat.java b/src/main/java/homework_4/customAnnotation/Cat.java index 85e7dfd0..3140a41b 100644 --- a/src/main/java/homework_4/customAnnotation/Cat.java +++ b/src/main/java/homework_4/customAnnotation/Cat.java @@ -10,11 +10,11 @@ public class Cat { @MyAnnotation public Cat() { try { - Constructor constructor = this.getClass ().getConstructor (null); - MyAnnotation myAnnotation = (MyAnnotation) constructor.getAnnotation (MyAnnotation.class); - this.testValue = myAnnotation.value (); - } catch (NoSuchMethodException e) { - e.printStackTrace (); + Constructor constructor = this.getClass().getConstructor(null); + MyAnnotation myAnnotation = (MyAnnotation) constructor.getAnnotation(MyAnnotation.class); + this.testValue = myAnnotation.value(); + } catch(NoSuchMethodException e) { + e.printStackTrace(); } } } diff --git a/src/main/java/homework_4/customAnnotation/Main.java b/src/main/java/homework_4/customAnnotation/Main.java index c48c788e..558fcfe6 100644 --- a/src/main/java/homework_4/customAnnotation/Main.java +++ b/src/main/java/homework_4/customAnnotation/Main.java @@ -3,7 +3,7 @@ public class Main { public static void main(String[] args) { - Cat cat = new Cat (); - System.out.println (cat.testValue); + Cat cat = new Cat(); + System.out.println(cat.testValue); } } diff --git a/src/main/java/homework_4/customFileReader/CustomFileReader.java b/src/main/java/homework_4/customFileReader/CustomFileReader.java index 256cc973..2870b08a 100644 --- a/src/main/java/homework_4/customFileReader/CustomFileReader.java +++ b/src/main/java/homework_4/customFileReader/CustomFileReader.java @@ -17,48 +17,48 @@ public CustomFileReader(String file) { public void run1() { String line; - try (BufferedReader reader = new BufferedReader (new FileReader (path))) { - while ((line = reader.readLine ()) != null) { - System.out.println (line.replaceAll ("[,.]", "")); + try(BufferedReader reader = new BufferedReader(new FileReader(path))) { + while((line = reader.readLine()) != null) { + System.out.println(line.replaceAll("[,.]", "")); } - } catch (IOException ex) { - System.out.println (ex.getMessage ()); + } catch(IOException ex) { + System.out.println(ex.getMessage()); } } public void run2() { - StringBuilder line = new StringBuilder (); + StringBuilder line = new StringBuilder(); Scanner scanner = null; try { - scanner = new Scanner (new File (path)); - scanner.useDelimiter (""); - while (scanner.hasNext ()) { - line.append (scanner.next ()); + scanner = new Scanner(new File(path)); + scanner.useDelimiter(""); + while(scanner.hasNext()) { + line.append(scanner.next()); } - System.out.println (line.toString ().replaceAll ("[,.]", "")); + System.out.println(line.toString().replaceAll("[,.]", "")); - } catch (FileNotFoundException ex) { - System.out.println (ex.getMessage ()); + } catch(FileNotFoundException ex) { + System.out.println(ex.getMessage()); } finally { - if (scanner != null) { - scanner.close (); + if(scanner != null) { + scanner.close(); } } } //NIO public void run3() { - Path path = Paths.get (this.path); + Path path = Paths.get(this.path); try { - List read = Files.readAllLines (path); + List read = Files.readAllLines(path); - for (String list : read) { - System.out.println (list.replaceAll ("[,.]", "")); + for(String list : read) { + System.out.println(list.replaceAll("[,.]", "")); } - } catch (IOException ex) { - System.out.println ("Internal Error"); + } catch(IOException ex) { + System.out.println("Internal Error"); } } diff --git a/src/main/java/homework_4/customFileReader/Main.java b/src/main/java/homework_4/customFileReader/Main.java index 96913c89..c1662cfd 100644 --- a/src/main/java/homework_4/customFileReader/Main.java +++ b/src/main/java/homework_4/customFileReader/Main.java @@ -4,9 +4,9 @@ public class Main { public static void main(String[] args) { String path = "src/main/resources/custom_file_reader.txts"; - CustomFileReader fileRiders = new CustomFileReader (path); - fileRiders.run1 (); - fileRiders.run2 (); - fileRiders.run3 (); + CustomFileReader fileRiders = new CustomFileReader(path); + fileRiders.run1(); + fileRiders.run2(); + fileRiders.run3(); } } diff --git a/src/main/java/homework_4/singleton/Main.java b/src/main/java/homework_4/singleton/Main.java index f7eba0ed..f948b675 100644 --- a/src/main/java/homework_4/singleton/Main.java +++ b/src/main/java/homework_4/singleton/Main.java @@ -1,10 +1,11 @@ package homework_4.singleton; public class Main { + public static void main(String[] args) { - Singleton singleton = Singleton.getInstance (); - Singleton singleton2 = Singleton.getInstance (); - System.out.println (singleton.getName () + " " + singleton.getId ()); - System.out.println (singleton2.getName () + " " + singleton2.getId ()); + Singleton singleton = Singleton.getInstance(); + Singleton singleton2 = Singleton.getInstance(); + System.out.println(singleton.getName() + " " + singleton.getId()); + System.out.println(singleton2.getName() + " " + singleton2.getId()); } } diff --git a/src/main/java/homework_4/singleton/Singleton.java b/src/main/java/homework_4/singleton/Singleton.java index b87a204f..349d5059 100644 --- a/src/main/java/homework_4/singleton/Singleton.java +++ b/src/main/java/homework_4/singleton/Singleton.java @@ -20,8 +20,8 @@ private Singleton(int id, String name) { } public static Singleton getInstance() { - if (instance == null) { - instance = new Singleton (1, "Chel"); + if(instance == null) { + instance = new Singleton(1, "Chel"); } return instance; } diff --git a/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java b/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java index 012f3cc1..785d9cc3 100644 --- a/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java +++ b/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java @@ -5,7 +5,7 @@ public class CustomRegexMatcher { public void run(String str) { - System.out.println (Pattern.matches ("(GET |POST |PUT |DELETE )\\/api/v1/.*", str)); + System.out.println(Pattern.matches("(GET |POST |PUT |DELETE )\\/api/v1/.*", str)); } } diff --git a/src/main/java/homework_5/customRegexMatcher/Main.java b/src/main/java/homework_5/customRegexMatcher/Main.java index 56668cce..b2de480c 100644 --- a/src/main/java/homework_5/customRegexMatcher/Main.java +++ b/src/main/java/homework_5/customRegexMatcher/Main.java @@ -5,7 +5,7 @@ public static void main(String[] args) { String string = "192.168.00.00 - - [10/Jun/2021:07:21:22 +0000] PUT /api/v1/user/favorites HTTP/1.1 200 45 https://test.lab/login"; - CustomRegexMatcher customRegexMatcher = new CustomRegexMatcher (); - customRegexMatcher.run (string); + CustomRegexMatcher customRegexMatcher = new CustomRegexMatcher(); + customRegexMatcher.run(string); } } diff --git a/src/main/java/homework_5/powerOfNumber/Main.java b/src/main/java/homework_5/powerOfNumber/Main.java index e9c5c187..70ec4b00 100644 --- a/src/main/java/homework_5/powerOfNumber/Main.java +++ b/src/main/java/homework_5/powerOfNumber/Main.java @@ -2,7 +2,7 @@ public class Main { public static void main(String[] args) { - PowerOfNumber powerOfNumber = new PowerOfNumber (); + PowerOfNumber powerOfNumber = new PowerOfNumber(); // System.out.println (powerOfNumber.recursion (2, 2)); // System.out.println (powerOfNumber.recursion (2, 1)); // System.out.println (powerOfNumber.recursion (2, 0)); @@ -11,6 +11,6 @@ public static void main(String[] args) { // System.out.println (Math.pow(2,1)); // System.out.println (Math.pow(2,0)); // System.out.println (Math.pow(0,2)); - powerOfNumber.run (); + powerOfNumber.run(); } } diff --git a/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java b/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java index 8c038f54..6b971bff 100644 --- a/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java +++ b/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java @@ -10,39 +10,39 @@ public class PowerOfNumber { private int power; private int recursion(int firstNumber, int secondNumber) { - if (secondNumber < 1) return 1; - return firstNumber * recursion (firstNumber, secondNumber - 1); + if(secondNumber < 1) return 1; + return firstNumber * recursion(firstNumber, secondNumber - 1); } public void run() { - String inputString = bufferReaderConsole (); - if (validator (inputString)) { - System.out.println (recursion (number, power)); + String inputString = bufferReaderConsole(); + if(validator(inputString)) { + System.out.println(recursion(number, power)); } else { - System.out.println ("Only 2 non-negative integers are allowed"); + System.out.println("Only 2 non-negative integers are allowed"); } } private String bufferReaderConsole() { - try (BufferedReader reader = new BufferedReader (new InputStreamReader (System.in))) { - return reader.readLine (); - } catch (IOException ex) { + try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { + return reader.readLine(); + } catch(IOException ex) { return ""; } } public boolean validator(String input) { try { - String[] arr = input.split (" "); - if (arr.length != 2) { + String[] arr = input.split(" "); + if(arr.length != 2) { return false; } - number = Integer.parseInt (arr[0]); - power = Integer.parseInt (arr[1]); - if (number < 0 || power < 0) { + number = Integer.parseInt(arr[0]); + power = Integer.parseInt(arr[1]); + if(number < 0 || power < 0) { return false; } - } catch (NumberFormatException | NullPointerException ex) { + } catch(NumberFormatException | NullPointerException ex) { return false; } return true; diff --git a/src/test/java/homework_2/random_chars_printer/RandomCharsPrinter.java b/src/test/java/homework_2/random_chars_printer/RandomCharsPrinter.java index c86e1e08..adb1abd4 100644 --- a/src/test/java/homework_2/random_chars_printer/RandomCharsPrinter.java +++ b/src/test/java/homework_2/random_chars_printer/RandomCharsPrinter.java @@ -20,7 +20,7 @@ public void testInput2x2Odd() throws IOException { printOut(); removeFromOutput("Please input number"); - assertTrue(getOutputLines()[3].contains("odd letters - ")); + assertTrue(getOutputLines()[3].contains("odd letters -")); } @Test @@ -35,7 +35,7 @@ public void testInput2x2Even() throws IOException { assertEquals(6, getOutputLines()[0].length()); assertEquals(6, getOutputLines()[1].length()); assertEquals(0, getOutputLines()[2].length()); - assertTrue(getOutputLines()[3].contains("even letters - ")); + assertTrue(getOutputLines()[3].contains("even letters -")); } @Test @@ -73,4 +73,5 @@ public void testInputWrongOperator() throws IOException { assertEquals("Wrong type parameter", getOutputLines()[0]); } + } diff --git a/src/test/java/homework_2/trafficLighter/TrafficLighter.java b/src/test/java/homework_2/trafficLighter/TrafficLighter.java index 6531d431..cf620c0d 100644 --- a/src/test/java/homework_2/trafficLighter/TrafficLighter.java +++ b/src/test/java/homework_2/trafficLighter/TrafficLighter.java @@ -83,6 +83,18 @@ public void testInput39() throws IOException { assertTrue(getOutputLines()[0].contains("Yellow")); } + @Test + public void testInput55() throws IOException { + setInput("55"); + + TrafficLight traffic_light = new TrafficLight (); + traffic_light.run(); + printOut(); + removeFromOutput("Please input number"); + + assertTrue(getOutputLines()[0].contains("Yellow")); + } + @Test public void testInputText() throws IOException { setInput("text"); From 53086afefa63c1294c0de06ee0f101918d3c64a6 Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Thu, 2 Sep 2021 20:56:07 +0300 Subject: [PATCH 26/36] homework_2 fix tests for new messages --- .../homework_2/pyramid_printer/PyramidPrinter_test.java | 4 ++-- src/test/java/homework_2/trafficLighter/TrafficLighter.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/homework_2/pyramid_printer/PyramidPrinter_test.java b/src/test/java/homework_2/pyramid_printer/PyramidPrinter_test.java index 37e8268a..6ec5e5ec 100644 --- a/src/test/java/homework_2/pyramid_printer/PyramidPrinter_test.java +++ b/src/test/java/homework_2/pyramid_printer/PyramidPrinter_test.java @@ -70,7 +70,7 @@ public void testInputBig1234567890123456() throws IOException { printOut(); removeFromOutput("Please input number"); - assertEquals("invalid format data, please enter integer", getOutputLines()[0]); + assertEquals("Error, only numbers are allowed", getOutputLines()[0]); } @Test @@ -82,7 +82,7 @@ public void testInputText() throws IOException { printOut(); removeFromOutput("Please input number"); - assertEquals("invalid format data, please enter integer", getOutputLines()[0]); + assertEquals("Error, only numbers are allowed", getOutputLines()[0]); } } diff --git a/src/test/java/homework_2/trafficLighter/TrafficLighter.java b/src/test/java/homework_2/trafficLighter/TrafficLighter.java index cf620c0d..536b9c68 100644 --- a/src/test/java/homework_2/trafficLighter/TrafficLighter.java +++ b/src/test/java/homework_2/trafficLighter/TrafficLighter.java @@ -32,7 +32,7 @@ public void testInput86400() throws IOException { printOut(); removeFromOutput("Please input number"); - assertEquals("it's a new day...", getOutputLines()[0]); + assertEquals("Error, the day is over", getOutputLines()[0]); } @Test @@ -56,7 +56,7 @@ public void testInputNegativeValue() throws IOException { printOut(); removeFromOutput("Please input number"); - assertEquals("Error, negative numbers are not valid", getOutputLines()[0]); + assertEquals("Error, negative numbers are not allowed", getOutputLines()[0]); } @Test @@ -104,7 +104,7 @@ public void testInputText() throws IOException { printOut(); removeFromOutput("Please input number"); - assertEquals("Invalid data format, please enter integer", getOutputLines()[0]); + assertEquals("Error, invalid data format, please enter integer", getOutputLines()[0]); } } From 4d3a9cc89353030072e8c3b38fcb40845feee9f9 Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Fri, 3 Sep 2021 14:56:28 +0300 Subject: [PATCH 27/36] homework_6 start --- src/main/java/homework_6/Main.java | 17 +++++++++ .../MapProblemsCollisionGenerator.java | 4 +++ .../MapProblemsMutableGenerator.java | 36 +++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 src/main/java/homework_6/Main.java create mode 100644 src/main/java/homework_6/MapProblemsCollisionGenerator.java create mode 100644 src/main/java/homework_6/MapProblemsMutableGenerator.java diff --git a/src/main/java/homework_6/Main.java b/src/main/java/homework_6/Main.java new file mode 100644 index 00000000..0f08992f --- /dev/null +++ b/src/main/java/homework_6/Main.java @@ -0,0 +1,17 @@ +package homework_6; + +import java.util.HashMap; + +public class Main { + + public static void main(String[] args) { + + MapProblemsMutableGenerator problem = new MapProblemsMutableGenerator("first"); + MapProblemsMutableGenerator problem2 = new MapProblemsMutableGenerator("second"); + HashMap map = new HashMap(); + map.put(problem.getName(), 1); + map.put(problem2.getName(), 2); + System.out.println(map.get(problem.getName())); + + } +} diff --git a/src/main/java/homework_6/MapProblemsCollisionGenerator.java b/src/main/java/homework_6/MapProblemsCollisionGenerator.java new file mode 100644 index 00000000..4c36d111 --- /dev/null +++ b/src/main/java/homework_6/MapProblemsCollisionGenerator.java @@ -0,0 +1,4 @@ +package homework_6; + +public class MapProblemsCollisionGenerator { +} diff --git a/src/main/java/homework_6/MapProblemsMutableGenerator.java b/src/main/java/homework_6/MapProblemsMutableGenerator.java new file mode 100644 index 00000000..e97f06da --- /dev/null +++ b/src/main/java/homework_6/MapProblemsMutableGenerator.java @@ -0,0 +1,36 @@ +package homework_6; + +import java.util.Objects; + +public class MapProblemsMutableGenerator { + +private String name; + + @Override + public boolean equals(Object o) { + if(this == o) return true; + if(o == null || getClass() != o.getClass()) return false; + MapProblemsMutableGenerator that = (MapProblemsMutableGenerator) o; + return Objects.equals(name, that.name); + } + + public MapProblemsMutableGenerator(String name) { + this.name = name; + } + + + + @Override + public int hashCode() { + return 123; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} From 97eca5e4f6d72ec139f226d95390b7f7137e3654 Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Fri, 3 Sep 2021 16:48:13 +0300 Subject: [PATCH 28/36] homework_6 finished --- src/main/java/homework_6/Main.java | 19 ++++++---- .../MapProblemsCollisionGenerator.java | 32 +++++++++++++++++ .../MapProblemsMutableGenerator.java | 36 ++++++++++--------- src/main/java/homework_6/MutableMain.java | 23 ++++++++++++ 4 files changed, 88 insertions(+), 22 deletions(-) create mode 100644 src/main/java/homework_6/MutableMain.java diff --git a/src/main/java/homework_6/Main.java b/src/main/java/homework_6/Main.java index 0f08992f..34f081ea 100644 --- a/src/main/java/homework_6/Main.java +++ b/src/main/java/homework_6/Main.java @@ -6,12 +6,19 @@ public class Main { public static void main(String[] args) { - MapProblemsMutableGenerator problem = new MapProblemsMutableGenerator("first"); - MapProblemsMutableGenerator problem2 = new MapProblemsMutableGenerator("second"); - HashMap map = new HashMap(); - map.put(problem.getName(), 1); - map.put(problem2.getName(), 2); - System.out.println(map.get(problem.getName())); + HashMap map = new HashMap<>(); + MapProblemsCollisionGenerator k1 = new MapProblemsCollisionGenerator(1, "firstKey"); + MapProblemsCollisionGenerator k2 = new MapProblemsCollisionGenerator(2, "secondKey"); + + System.out.println("storing value for k1"); + map.put(k1, "firstValue"); + System.out.println("storing value for k2"); + map.put(k2, "secondValue"); + + System.out.println("retrieving value for k1"); + String v1 = map.get(k1); + System.out.println("retrieving value for k2"); + String v2 = map.get(k2); } } diff --git a/src/main/java/homework_6/MapProblemsCollisionGenerator.java b/src/main/java/homework_6/MapProblemsCollisionGenerator.java index 4c36d111..017a377e 100644 --- a/src/main/java/homework_6/MapProblemsCollisionGenerator.java +++ b/src/main/java/homework_6/MapProblemsCollisionGenerator.java @@ -1,4 +1,36 @@ package homework_6; +import java.util.Objects; + public class MapProblemsCollisionGenerator { + + private final String name; + private final int id; + + public MapProblemsCollisionGenerator(int id, String name) { + this.id = id; + this.name = name; + } + + @Override + public boolean equals(Object o) { + System.out.println("Calling equals() for key: " + o); + if(this == o) return true; + if(o == null || getClass() != o.getClass()) return false; + MapProblemsCollisionGenerator that = (MapProblemsCollisionGenerator) o; + return id == that.id && Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return 1; + } + + @Override + public String toString() { + return "MapProblemsMutableGenerator{" + + "name='" + name + '\'' + + ", id=" + id + + '}'; + } } diff --git a/src/main/java/homework_6/MapProblemsMutableGenerator.java b/src/main/java/homework_6/MapProblemsMutableGenerator.java index e97f06da..3b87eed0 100644 --- a/src/main/java/homework_6/MapProblemsMutableGenerator.java +++ b/src/main/java/homework_6/MapProblemsMutableGenerator.java @@ -4,33 +4,37 @@ public class MapProblemsMutableGenerator { -private String name; + private StringBuilder name; + + public MapProblemsMutableGenerator(String name) { + this.name = new StringBuilder(name); + } + + public StringBuilder getName() { + return name; + } + + public void setName(String name) { + this.name = new StringBuilder(name); + } @Override public boolean equals(Object o) { if(this == o) return true; if(o == null || getClass() != o.getClass()) return false; MapProblemsMutableGenerator that = (MapProblemsMutableGenerator) o; - return Objects.equals(name, that.name); - } - - public MapProblemsMutableGenerator(String name) { - this.name = name; + return name.toString().equals(that.name.toString()); } - - @Override public int hashCode() { - return 123; - } - - public String getName() { - return name; + return Objects.hash(name); } - public void setName(String name) { - this.name = name; + @Override + public String toString() { + return "MapProblemsMutableGenerator{" + + "stringBuilder=" + name + + '}'; } - } diff --git a/src/main/java/homework_6/MutableMain.java b/src/main/java/homework_6/MutableMain.java new file mode 100644 index 00000000..6f743674 --- /dev/null +++ b/src/main/java/homework_6/MutableMain.java @@ -0,0 +1,23 @@ +package homework_6; + +import java.util.HashMap; + +public class MutableMain { + public static void main(String[] args) { + + HashMap map = new HashMap(); + + MapProblemsMutableGenerator key = new MapProblemsMutableGenerator("name"); + MapProblemsMutableGenerator key2 = new MapProblemsMutableGenerator("name"); + + System.out.println(key.equals(key2)); + + map.put(key, 1); + System.out.println(1 == map.get(key)); + + key.setName("NewName"); + + System.out.println(key.getName()); + System.out.println(map.get(key)); + } +} From 90a99eb564bb6ca17015935c10100dd2d7f1e6c9 Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Mon, 6 Sep 2021 18:14:06 +0300 Subject: [PATCH 29/36] homework_6 finished + read me --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d0051a43..49a2ce79 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,10 @@ |HW4 | [customAnnotation](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_4/customAnnotation) | The app create object with default value from constructor using annotation | |HW4 | [customFileReader](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_4/customFileReader) | The app that reads from file | |HW4 | [singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_4/singleton) | The singleton app | -|HW5 | [customRegexMatcher](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_5/customRegexMatcher) | The singleton app | -|HW5 | [PowerOfNumber](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_5/PowerOfNumber) | The singleton app | +|HW5 | [customRegexMatcher](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_5/customRegexMatcher) | The app | +|HW5 | [PowerOfNumber](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_5/PowerOfNumber) | The app | +|HW5 | [MapProblemsCollisionGenerator](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_6/MapProblemsCollisionGenerator) | The app | +|HW5 | [MapProblemsMutableGenerator](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_6/MapProblemsMutableGenerator) | The app | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) | [Link to CodingBat](https://codingbat.com/done?user=segodnik@gmail.com&tag=8130222420) From de1a0bd3e3a86261d283ec261cc1608d710f9e9d Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Tue, 7 Sep 2021 17:18:34 +0300 Subject: [PATCH 30/36] Fix 2 from Kirill --- .../homework_2/random_chars_table/ParserInputData.java | 9 +++++---- src/main/java/homework_2/traffic_light/Main.java | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/homework_2/random_chars_table/ParserInputData.java b/src/main/java/homework_2/random_chars_table/ParserInputData.java index bd8580d1..6b33b5c2 100644 --- a/src/main/java/homework_2/random_chars_table/ParserInputData.java +++ b/src/main/java/homework_2/random_chars_table/ParserInputData.java @@ -6,15 +6,16 @@ public InputData parserInputRandomData(String input) throws ParserError { String[] arrayWithInputData = input.trim().split(" "); try { - int row = Integer.parseInt(arrayWithInputData[0]); - int column = Integer.parseInt(arrayWithInputData[1]); - - String typeOfParity = arrayWithInputData[2]; if(arrayWithInputData.length != 3) { throw new ParserError("Should be typed 3 parameters (e.g. 3 3 odd)"); } + int row = Integer.parseInt(arrayWithInputData[0]); + int column = Integer.parseInt(arrayWithInputData[1]); + + String typeOfParity = arrayWithInputData[2]; + if(row < 0 || column < 0) { throw new ParserError("negative isn't allowed"); } diff --git a/src/main/java/homework_2/traffic_light/Main.java b/src/main/java/homework_2/traffic_light/Main.java index 1d481453..b7776d6e 100644 --- a/src/main/java/homework_2/traffic_light/Main.java +++ b/src/main/java/homework_2/traffic_light/Main.java @@ -8,3 +8,4 @@ public static void main(String[] args) { traffic_light.run(); } } +//Цикл светофора - 60 секунд. С 0 <= light < 35 зеленый, 35 <= light < 40 желтый, 40 <= light < 55 красный, 55 <= light < 60 желтый. \ No newline at end of file From c11b05ab67da70267fee12bec2f9b9d0b9f1e4fd Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Sun, 19 Sep 2021 22:17:52 +0300 Subject: [PATCH 31/36] Final project w/o tests --- src/main/java/SeaBattle/GenerateShips.java | 92 +++++++++++++++++++++ src/main/java/SeaBattle/InputValidator.java | 23 ++++++ src/main/java/SeaBattle/Main.java | 10 +++ src/main/java/SeaBattle/PrintArray.java | 14 ++++ src/main/java/SeaBattle/StartGame.java | 45 ++++++++++ src/main/java/SeaBattle/WinnerChecker.java | 20 +++++ 6 files changed, 204 insertions(+) create mode 100644 src/main/java/SeaBattle/GenerateShips.java create mode 100644 src/main/java/SeaBattle/InputValidator.java create mode 100644 src/main/java/SeaBattle/Main.java create mode 100644 src/main/java/SeaBattle/PrintArray.java create mode 100644 src/main/java/SeaBattle/StartGame.java create mode 100644 src/main/java/SeaBattle/WinnerChecker.java diff --git a/src/main/java/SeaBattle/GenerateShips.java b/src/main/java/SeaBattle/GenerateShips.java new file mode 100644 index 00000000..33684b73 --- /dev/null +++ b/src/main/java/SeaBattle/GenerateShips.java @@ -0,0 +1,92 @@ +package SeaBattle; + +import java.util.Random; + +public class GenerateShips { + + static int FIELD_SIZE = 10; + + public char[][] createBoardWithShips() { + GenerateShips generateShips = new GenerateShips(); + int[][] field = new int[FIELD_SIZE][FIELD_SIZE]; + generateShips.fillField(field, 4); + generateShips.fillField(field, 3); + generateShips.fillField(field, 3); + generateShips.fillField(field, 2); + generateShips.fillField(field, 2); + generateShips.fillField(field, 2); + generateShips.fillField(field, 1); + generateShips.fillField(field, 1); + generateShips.fillField(field, 1); + generateShips.fillField(field, 1); + + char map[][] = new char[FIELD_SIZE][FIELD_SIZE]; + for(int i = 0; i < FIELD_SIZE; i++) { + for(int j = 0; j < FIELD_SIZE; j++) { + map[i][j] = field[i][j] == 0 || field[i][j] == 9 ? '_' : '0'; + } + } + return map; + } + + void fillField(int [][] fields, int shipLength) { + + Random random = new Random(); + int[][] field = fields; + while(true) { + int x = random.nextInt(field.length); + int y = random.nextInt(field.length); + boolean vertical = random.nextBoolean(); + + if(vertical) { + if(y + shipLength > FIELD_SIZE) { + y -= shipLength; + } + } else if(x + shipLength > FIELD_SIZE) { + x -= shipLength; + } + boolean isFree = true; + if(vertical) { + for(int m = y; m < y + shipLength; m++) { + if(field[m][x] != 0) { + isFree = false; + break; + } + } + } else { + for(int n = x; n < x + shipLength; n++) { + if(field[y][n] != 0) { + isFree = false; + break; + } + } + } + if(!isFree) { + continue; + } + + if(vertical) { + for(int m = Math.max(0, x - 1); m < Math.min(FIELD_SIZE, x + 2); m++) { + for(int n = Math.max(0, y - 1); n < Math.min(FIELD_SIZE, y + shipLength + 1); n++) { + field[n][m] = 9; + } + } + } else { + for(int m = Math.max(0, y - 1); m < Math.min(FIELD_SIZE, y + 2); m++) { + for(int n = Math.max(0, x - 1); n < Math.min(FIELD_SIZE, x + shipLength + 1); n++) { + field[m][n] = 9; + } + } + } + for(int j = 0; j < shipLength; j++) { + field[y][x] = shipLength; + if(vertical) { + y++; + } else { + x++; + } + } + break; + } + } +} diff --git a/src/main/java/SeaBattle/InputValidator.java b/src/main/java/SeaBattle/InputValidator.java new file mode 100644 index 00000000..cce72db9 --- /dev/null +++ b/src/main/java/SeaBattle/InputValidator.java @@ -0,0 +1,23 @@ +package SeaBattle; + +public interface InputValidator { + + static boolean isInvalidInputData(int col, int row, char[][] board) { + if(row < 0 || row > 9) { + System.out.println("Invalid input, allowed values like 'a5'"); + return true; + } else if(col == -1) { + System.out.println("Invalid input, please repeat input "); + return true; + } else if(board[row][col] == 'x') { + System.out.println("Already bombed, please repeat input "); + return true; + } else if(board[row][col] == '0') { + System.out.println("HIT!"); + board[row][col] = 'X'; + } else { + board[row][col] = 'x'; + } + return false; + } +} diff --git a/src/main/java/SeaBattle/Main.java b/src/main/java/SeaBattle/Main.java new file mode 100644 index 00000000..bfedd0e7 --- /dev/null +++ b/src/main/java/SeaBattle/Main.java @@ -0,0 +1,10 @@ +package SeaBattle; + +public class Main { + + public static void main(String[] args) { + + StartGame startGame = new StartGame(); + startGame.startGame(); + } +} diff --git a/src/main/java/SeaBattle/PrintArray.java b/src/main/java/SeaBattle/PrintArray.java new file mode 100644 index 00000000..f211e139 --- /dev/null +++ b/src/main/java/SeaBattle/PrintArray.java @@ -0,0 +1,14 @@ +package SeaBattle; + +import java.util.Arrays; + +import static SeaBattle.StartGame.currentCountOfShots; + +interface PrintArray { + + static void printBoard(char[][] map) { + System.out.println("Current board: x - miss, X - HIT!, Current Round = " + currentCountOfShots); + Arrays.stream(map) + .forEach(m -> System.out.println(Arrays.toString(m).replace(",", "").replace("0", "_"))); + } +} diff --git a/src/main/java/SeaBattle/StartGame.java b/src/main/java/SeaBattle/StartGame.java new file mode 100644 index 00000000..4bc3e6ed --- /dev/null +++ b/src/main/java/SeaBattle/StartGame.java @@ -0,0 +1,45 @@ +package SeaBattle; + +import java.util.Scanner; + +import static SeaBattle.InputValidator.isInvalidInputData; +import static SeaBattle.WinnerChecker.isWinnerExist; + +public class StartGame { + + private static final String LETTERS = "ABCDEFGHIJ"; + static final int COUNT = 70; + static int currentCountOfShots = 0; + + public void startGame() { + System.out.println("Game on! \n You should shoot all ships in " + COUNT + " rounds"); + GenerateShips test = new GenerateShips(); + char[][] board = test.createBoardWithShips(); + + while(true) { + + PrintArray.printBoard(board); + Scanner in = new Scanner(System.in); + try { + String playerChoice = in.next(); + System.out.println(playerChoice); + + int col = LETTERS.indexOf(playerChoice.toUpperCase().charAt(0)); + int row = Integer.parseInt(playerChoice.substring(1)) - 1; + + if(isInvalidInputData(col, row, board)) { + continue; + } + currentCountOfShots++; + + if(isWinnerExist(board, currentCountOfShots)) { + return; + } + + } catch(NumberFormatException e) { + System.out.println("Invalid input, please enter in format e.g. 'A5'"); + in.next(); + } + } + } +} diff --git a/src/main/java/SeaBattle/WinnerChecker.java b/src/main/java/SeaBattle/WinnerChecker.java new file mode 100644 index 00000000..6ef67c25 --- /dev/null +++ b/src/main/java/SeaBattle/WinnerChecker.java @@ -0,0 +1,20 @@ +package SeaBattle; + +import java.util.Arrays; + +import static SeaBattle.StartGame.COUNT; + +public interface WinnerChecker { + + static boolean isWinnerExist(char[][] board, int currentShot) { + if(Arrays.stream(board).flatMap((item)->new String(item).chars().mapToObj(a->(char)a)).noneMatch(e -> e == '0')){ + System.out.println("Game Over, you are winner !!!"); + return true; + } + if(COUNT <= currentShot){ + System.out.println("Your shells are out, try again"); + return true; + } + return false; + } +} From 04aa763dcc7d41cd430d405b9348f05bed09d4f9 Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Mon, 20 Sep 2021 13:42:55 +0300 Subject: [PATCH 32/36] Final project with some tests --- src/main/java/SeaBattle/InputValidator.java | 2 +- src/main/java/SeaBattle/PrintArray.java | 6 ++- src/main/java/SeaBattle/StartGame.java | 3 +- .../java/SeaBattle/GenerateShipsTest.java | 43 +++++++++++++++++++ .../java/SeaBattle/InputValidatorTest.java | 43 +++++++++++++++++++ .../java/SeaBattle/WinnerCheckerTest.java | 37 ++++++++++++++++ 6 files changed, 129 insertions(+), 5 deletions(-) create mode 100644 src/test/java/SeaBattle/GenerateShipsTest.java create mode 100644 src/test/java/SeaBattle/InputValidatorTest.java create mode 100644 src/test/java/SeaBattle/WinnerCheckerTest.java diff --git a/src/main/java/SeaBattle/InputValidator.java b/src/main/java/SeaBattle/InputValidator.java index cce72db9..cf00f60b 100644 --- a/src/main/java/SeaBattle/InputValidator.java +++ b/src/main/java/SeaBattle/InputValidator.java @@ -9,7 +9,7 @@ static boolean isInvalidInputData(int col, int row, char[][] board) { } else if(col == -1) { System.out.println("Invalid input, please repeat input "); return true; - } else if(board[row][col] == 'x') { + } else if(board[row][col] == 'x' || board[row][col] == 'X') { System.out.println("Already bombed, please repeat input "); return true; } else if(board[row][col] == '0') { diff --git a/src/main/java/SeaBattle/PrintArray.java b/src/main/java/SeaBattle/PrintArray.java index f211e139..a91dab79 100644 --- a/src/main/java/SeaBattle/PrintArray.java +++ b/src/main/java/SeaBattle/PrintArray.java @@ -1,14 +1,16 @@ package SeaBattle; import java.util.Arrays; +import java.util.concurrent.atomic.AtomicInteger; import static SeaBattle.StartGame.currentCountOfShots; interface PrintArray { static void printBoard(char[][] map) { - System.out.println("Current board: x - miss, X - HIT!, Current Round = " + currentCountOfShots); + AtomicInteger i = new AtomicInteger(1); + System.out.println("Current board: x - miss, X - HIT!, Current Round = " + currentCountOfShots + "\n A B C D E F G H I J "); Arrays.stream(map) - .forEach(m -> System.out.println(Arrays.toString(m).replace(",", "").replace("0", "_"))); + .forEach(m -> System.out.println( i.getAndIncrement() + " " + Arrays.toString(m).replace(",", "").replace("0", "_"))); } } diff --git a/src/main/java/SeaBattle/StartGame.java b/src/main/java/SeaBattle/StartGame.java index 4bc3e6ed..2e23a990 100644 --- a/src/main/java/SeaBattle/StartGame.java +++ b/src/main/java/SeaBattle/StartGame.java @@ -17,12 +17,11 @@ public void startGame() { char[][] board = test.createBoardWithShips(); while(true) { - PrintArray.printBoard(board); + Scanner in = new Scanner(System.in); try { String playerChoice = in.next(); - System.out.println(playerChoice); int col = LETTERS.indexOf(playerChoice.toUpperCase().charAt(0)); int row = Integer.parseInt(playerChoice.substring(1)) - 1; diff --git a/src/test/java/SeaBattle/GenerateShipsTest.java b/src/test/java/SeaBattle/GenerateShipsTest.java new file mode 100644 index 00000000..79fbdb60 --- /dev/null +++ b/src/test/java/SeaBattle/GenerateShipsTest.java @@ -0,0 +1,43 @@ +package SeaBattle; + +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +import static SeaBattle.GenerateShips.FIELD_SIZE; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class GenerateShipsTest { + + + @Test + void testCreateShipWith1Size() { + int[][] arr = new int[FIELD_SIZE][FIELD_SIZE]; + + GenerateShips generateShips = new GenerateShips(); + generateShips.fillField(arr, 1); + System.out.println(Arrays.deepToString(arr)); + assertEquals(1, (int) Arrays.stream(arr).flatMapToInt(Arrays::stream).filter(x -> x == 1).count()); + assertTrue(Arrays.stream(arr).flatMapToInt(Arrays::stream).filter(x -> x == 9).count() >= 3); + } + + @Test + void testCreateShipWith4Size() { + int[][] arr = new int[FIELD_SIZE][FIELD_SIZE]; + GenerateShips generateShips = new GenerateShips(); + generateShips.fillField(arr, 4); + assertEquals(4, (int) Arrays.stream(arr).flatMapToInt(Arrays::stream).filter(x -> x == 4).count()); + assertTrue(Arrays.stream(arr).flatMapToInt(Arrays::stream).filter(x -> x == 9).count() >= 6); + } + + @Test + void testCreateBoardWithAllShips() { + GenerateShips generateShips = new GenerateShips(); + char[][] arr = generateShips.createBoardWithShips(); + assertEquals(20, (int) Arrays.stream(arr) + .flatMap((item) -> new String(item).chars().mapToObj(a -> (char) a)) + .filter(x -> x == '0').count()); + } + +} diff --git a/src/test/java/SeaBattle/InputValidatorTest.java b/src/test/java/SeaBattle/InputValidatorTest.java new file mode 100644 index 00000000..f7652793 --- /dev/null +++ b/src/test/java/SeaBattle/InputValidatorTest.java @@ -0,0 +1,43 @@ +package SeaBattle; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.util.Arrays; +import java.util.stream.Stream; + +import static SeaBattle.GenerateShips.FIELD_SIZE; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class InputValidatorTest { + + static char[][] arr = new char[FIELD_SIZE][FIELD_SIZE]; + + @Test + void testGiven1() { + System.out.println(Arrays.deepToString(arr)); + assertEquals(true, InputValidator.isInvalidInputData(-1, 2, arr)); + } + + public static Stream ints() { + return Stream.of( + Arguments.of(false, 1, 1, arr), + Arguments.of(true, 1, -1, arr), + Arguments.of(true, -1, 1, arr), + Arguments.of(true, 1, 10, arr), + Arguments.of(true, 5, 5, arr), + Arguments.of(true, 6, 6, arr), + Arguments.of(false, 9, 1, arr) + ); + } + + @ParameterizedTest + @MethodSource("ints") + void boardGeneratorTestInt(boolean ex, int x, int y, char[][] arr) { + arr[5][5] = 'x'; + arr[6][6] = 'X'; + assertEquals(ex, InputValidator.isInvalidInputData(x, y, arr)); + } +} diff --git a/src/test/java/SeaBattle/WinnerCheckerTest.java b/src/test/java/SeaBattle/WinnerCheckerTest.java new file mode 100644 index 00000000..46ccb936 --- /dev/null +++ b/src/test/java/SeaBattle/WinnerCheckerTest.java @@ -0,0 +1,37 @@ +package SeaBattle; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.util.stream.Stream; + +import static SeaBattle.GenerateShips.FIELD_SIZE; +import static SeaBattle.StartGame.COUNT; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class WinnerCheckerTest { + + static char[][] arr = new char[FIELD_SIZE][FIELD_SIZE]; + + public static Stream ints() { + return Stream.of( + Arguments.of(true, COUNT, arr), + Arguments.of(true, 1, arr) + ); + } + + @ParameterizedTest + @MethodSource("ints") + void isWinnerExistTest(boolean ex, int x, char[][] arr) { + boolean act = WinnerChecker.isWinnerExist(arr, x); + assertEquals(ex, act); + } + + @Test void isWinnerExistTestWithShip() { + arr[5][5] = '0'; + boolean act = WinnerChecker.isWinnerExist(arr, 3); + assertEquals(false, act); + } +} From ac78bf6ce2abde81e4526a4c9bf55d78112b9c0f Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Tue, 21 Sep 2021 22:39:48 +0300 Subject: [PATCH 33/36] Homework_7 added --- README.md | 5 +-- src/main/java/homework_7/Cat.java | 36 +++++++++++++++++++ src/main/java/homework_7/Kitten.java | 36 +++++++++++++++++++ .../java/homework_7/KittenToCatFunction.java | 6 ++++ src/main/java/homework_7/Main.java | 15 ++++++++ 5 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 src/main/java/homework_7/Cat.java create mode 100644 src/main/java/homework_7/Kitten.java create mode 100644 src/main/java/homework_7/KittenToCatFunction.java create mode 100644 src/main/java/homework_7/Main.java diff --git a/README.md b/README.md index 49a2ce79..88de9ef4 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,9 @@ |HW4 | [singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_4/singleton) | The singleton app | |HW5 | [customRegexMatcher](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_5/customRegexMatcher) | The app | |HW5 | [PowerOfNumber](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_5/PowerOfNumber) | The app | -|HW5 | [MapProblemsCollisionGenerator](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_6/MapProblemsCollisionGenerator) | The app | -|HW5 | [MapProblemsMutableGenerator](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_6/MapProblemsMutableGenerator) | The app | +|HW6 | [MapProblemsCollisionGenerator](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_6/MapProblemsCollisionGenerator) | The app | +|HW6 | [MapProblemsMutableGenerator](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_6/MapProblemsMutableGenerator) | The app | +|HW7 | [KittenToCatFunction](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/AntonSegodnik/src/main/java/homework_7) | The app | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) | [Link to CodingBat](https://codingbat.com/done?user=segodnik@gmail.com&tag=8130222420) diff --git a/src/main/java/homework_7/Cat.java b/src/main/java/homework_7/Cat.java new file mode 100644 index 00000000..eee5e3c8 --- /dev/null +++ b/src/main/java/homework_7/Cat.java @@ -0,0 +1,36 @@ +package homework_7; + +public class Cat { + + private int age; + private String name; + + public Cat(int age, String name) { + this.age = age; + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "Cat{" + + "age=" + age + + ", name='" + name + '\'' + + '}'; + } +} diff --git a/src/main/java/homework_7/Kitten.java b/src/main/java/homework_7/Kitten.java new file mode 100644 index 00000000..93f93424 --- /dev/null +++ b/src/main/java/homework_7/Kitten.java @@ -0,0 +1,36 @@ +package homework_7; + +public class Kitten { + + private int age; + private String name; + + public Kitten(int age, String name) { + this.age = age; + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "Kitten{" + + "age=" + age + + ", name='" + name + '\'' + + '}'; + } +} diff --git a/src/main/java/homework_7/KittenToCatFunction.java b/src/main/java/homework_7/KittenToCatFunction.java new file mode 100644 index 00000000..57446e39 --- /dev/null +++ b/src/main/java/homework_7/KittenToCatFunction.java @@ -0,0 +1,6 @@ +package homework_7; + +@FunctionalInterface +public interface KittenToCatFunction { + Cat grow(Kitten kitten); +} diff --git a/src/main/java/homework_7/Main.java b/src/main/java/homework_7/Main.java new file mode 100644 index 00000000..763f09fc --- /dev/null +++ b/src/main/java/homework_7/Main.java @@ -0,0 +1,15 @@ +package homework_7; + +public class Main { + + public static void main(String[] args) { + + Kitten kitten = new Kitten(1, "LittleCat"); + KittenToCatFunction func = x -> new Cat(x.getAge() + 5, "Old" + x.getName()); + + Cat cat = func.grow(kitten); + System.out.println(cat); + System.out.println(cat.getClass()); + System.out.println(kitten); + } +} From a43f2d528940654de18c3fde3a4a771760010cb2 Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Wed, 22 Sep 2021 12:22:33 +0300 Subject: [PATCH 34/36] Fix hm 3, and "txts" --- src/main/java/homework_3/ImmutableClass.java | 34 ++++++++++++++++++- .../homework_4/customFileReader/Main.java | 2 +- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/main/java/homework_3/ImmutableClass.java b/src/main/java/homework_3/ImmutableClass.java index f2f4d67d..4f4db965 100644 --- a/src/main/java/homework_3/ImmutableClass.java +++ b/src/main/java/homework_3/ImmutableClass.java @@ -11,19 +11,51 @@ public final class ImmutableClass { private final String string; private final int intVal; + private final StringBuilder stringBuilder; - private ImmutableClass(String string, int intVal) { + private ImmutableClass(String string, int intVal, StringBuilder stringBuilder) { this.string = string; this.intVal = intVal; + this.stringBuilder = new StringBuilder(stringBuilder); } private ImmutableClass() { this.string = "defaultVal"; this.intVal = 0; + this.stringBuilder = new StringBuilder("defaultValue"); } + @Override + public String toString() { + return "ImmutableClass{" + + "string='" + string + '\'' + + ", intVal=" + intVal + + ", stringBuilder=" + stringBuilder + + '}'; + } + + public String getString() { + return string; + } + + public StringBuilder getStringBuilder() { + return stringBuilder; + } private ImmutableClass createNewObj() { return new ImmutableClass(); } + public static void main(String[] args) { + StringBuilder secondName = new StringBuilder("SecondName"); + ImmutableClass item = new ImmutableClass("Name", 12, secondName); + + System.out.println("Just created item: " + item); + System.out.println(item.getStringBuilder()); + + System.out.println(""); + + secondName.append("NEW"); + System.out.println("Item after changes: " + item); + System.out.println( "from object = " + item.getStringBuilder() + "; from variable = " + secondName); + } } \ No newline at end of file diff --git a/src/main/java/homework_4/customFileReader/Main.java b/src/main/java/homework_4/customFileReader/Main.java index c1662cfd..f8212fa0 100644 --- a/src/main/java/homework_4/customFileReader/Main.java +++ b/src/main/java/homework_4/customFileReader/Main.java @@ -3,7 +3,7 @@ public class Main { public static void main(String[] args) { - String path = "src/main/resources/custom_file_reader.txts"; + String path = "src/main/resources/custom_file_reader.txt"; CustomFileReader fileRiders = new CustomFileReader(path); fileRiders.run1(); fileRiders.run2(); From 75f3debb5c0363726b115268d1cc17c6ba633005 Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Wed, 22 Sep 2021 18:18:08 +0300 Subject: [PATCH 35/36] Fix hm 3, and "txts" --- src/main/java/homework_3/ImmutableClass.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/homework_3/ImmutableClass.java b/src/main/java/homework_3/ImmutableClass.java index 4f4db965..72e9ba58 100644 --- a/src/main/java/homework_3/ImmutableClass.java +++ b/src/main/java/homework_3/ImmutableClass.java @@ -39,7 +39,7 @@ public String getString() { } public StringBuilder getStringBuilder() { - return stringBuilder; + return new StringBuilder(stringBuilder); } private ImmutableClass createNewObj() { return new ImmutableClass(); From 4ee8e316cc4d6ff83b7beae8ee315f4ac0b33611 Mon Sep 17 00:00:00 2001 From: Anton Segodnik Date: Thu, 23 Sep 2021 22:52:33 +0300 Subject: [PATCH 36/36] fix 3 just public --- src/main/java/homework_3/ImmutableClass.java | 2 +- src/main/java/homework_6/Main.java | 1 - src/main/java/homework_6/MapProblemsCollisionGenerator.java | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/homework_3/ImmutableClass.java b/src/main/java/homework_3/ImmutableClass.java index 72e9ba58..4bdbca9f 100644 --- a/src/main/java/homework_3/ImmutableClass.java +++ b/src/main/java/homework_3/ImmutableClass.java @@ -41,7 +41,7 @@ public String getString() { public StringBuilder getStringBuilder() { return new StringBuilder(stringBuilder); } - private ImmutableClass createNewObj() { + public ImmutableClass createNewObj() { return new ImmutableClass(); } diff --git a/src/main/java/homework_6/Main.java b/src/main/java/homework_6/Main.java index 34f081ea..67e38173 100644 --- a/src/main/java/homework_6/Main.java +++ b/src/main/java/homework_6/Main.java @@ -5,7 +5,6 @@ public class Main { public static void main(String[] args) { - HashMap map = new HashMap<>(); MapProblemsCollisionGenerator k1 = new MapProblemsCollisionGenerator(1, "firstKey"); MapProblemsCollisionGenerator k2 = new MapProblemsCollisionGenerator(2, "secondKey"); diff --git a/src/main/java/homework_6/MapProblemsCollisionGenerator.java b/src/main/java/homework_6/MapProblemsCollisionGenerator.java index 017a377e..b4df5465 100644 --- a/src/main/java/homework_6/MapProblemsCollisionGenerator.java +++ b/src/main/java/homework_6/MapProblemsCollisionGenerator.java @@ -6,7 +6,6 @@ public class MapProblemsCollisionGenerator { private final String name; private final int id; - public MapProblemsCollisionGenerator(int id, String name) { this.id = id; this.name = name;