From 71f59ad8dea7ffda39a9aae9f62c95fcf95f2bec Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Sun, 11 Jul 2021 16:34:47 +0300 Subject: [PATCH 01/15] my first commit...again (after deleting my old branch, with the incorrect name,and creating the new one with the valid name...) + homework_1 + README.md --- README.md | 4 ++-- src/main/java/homework_1/Main.java | 20 +++++++++++++++++--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 5d686e9f..f94f8c13 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # Java Core June 2021 -## *Nikolaev Artem* +## *Zaytsev Artem* | 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/ZaytsevArtem/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) diff --git a/src/main/java/homework_1/Main.java b/src/main/java/homework_1/Main.java index 07c029a2..f21e7c34 100644 --- a/src/main/java/homework_1/Main.java +++ b/src/main/java/homework_1/Main.java @@ -1,9 +1,23 @@ package homework_1; public class Main { - public static void main(String[] args) { - System.out.println("Hello homework!"); + int k = args.length; + if (k==0) { + System.out.println("\033[32mApplication has been called \033[31mwithout\033[32m the arguments!!! \033[0m"); + } else { + for (int i=0; i<=k-1;i++) { + if (args[i].equals("error"))//не забыть написать КРАСНЫМ цветом!!! + { + System.out.println("\033[31mAlarm! \033[0m");//https://stackoverflow.com/questions/565252/how-to-set-a-strings-color + break;//выходим + } + else { + String s = "letter"; + if (args[i].length()>1) {s=s+"s";} + System.out.println(args[i]+": "+args[i].length()+" "+s); + } + } + } } - } From 99d677eeac62caf533c0f0b321abdc09f2f3f4bf Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Sun, 25 Jul 2021 17:44:35 +0300 Subject: [PATCH 02/15] renaming "homework_1" package to "Homework_1" --- src/main/java/{homework_1 => Homework_1}/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/java/{homework_1 => Homework_1}/Main.java (97%) diff --git a/src/main/java/homework_1/Main.java b/src/main/java/Homework_1/Main.java similarity index 97% rename from src/main/java/homework_1/Main.java rename to src/main/java/Homework_1/Main.java index f21e7c34..4f4a795c 100644 --- a/src/main/java/homework_1/Main.java +++ b/src/main/java/Homework_1/Main.java @@ -1,4 +1,4 @@ -package homework_1; +package Homework_1; public class Main { public static void main(String[] args) { From b92d100e836b58fd136623054594d9114813d632 Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Sun, 25 Jul 2021 17:55:23 +0300 Subject: [PATCH 03/15] added "Homework_2" and "Homework_2" -> "Traffic light" packages --- src/main/java/Homework_2/Main.java | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/main/java/Homework_2/Main.java diff --git a/src/main/java/Homework_2/Main.java b/src/main/java/Homework_2/Main.java new file mode 100644 index 00000000..8141ed19 --- /dev/null +++ b/src/main/java/Homework_2/Main.java @@ -0,0 +1,4 @@ +package Homework_2; + +public class Main { +} From cdedbba9977a0f34374ead19a5fe9655dd5ea17c Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Sun, 25 Jul 2021 18:21:59 +0300 Subject: [PATCH 04/15] added "Homework_2" and all subpackages (including created, but empty classes). --- src/main/java/Homework_2/Main.java | 4 ---- src/main/java/Homework_2/PyramidPrinter/Main.java | 7 +++++++ .../java/Homework_2/PyramidPrinter/PyramidPrinter.java | 4 ++++ src/main/java/Homework_2/RandomCharsTable/Main.java | 7 +++++++ .../java/Homework_2/RandomCharsTable/RandomCharsTable.java | 4 ++++ src/main/java/Homework_2/TrafficLight/Main.java | 7 +++++++ src/main/java/Homework_2/TrafficLight/TrafficLight.java | 5 +++++ 7 files changed, 34 insertions(+), 4 deletions(-) delete mode 100644 src/main/java/Homework_2/Main.java create mode 100644 src/main/java/Homework_2/PyramidPrinter/Main.java create mode 100644 src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java create mode 100644 src/main/java/Homework_2/RandomCharsTable/Main.java create mode 100644 src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java create mode 100644 src/main/java/Homework_2/TrafficLight/Main.java create mode 100644 src/main/java/Homework_2/TrafficLight/TrafficLight.java diff --git a/src/main/java/Homework_2/Main.java b/src/main/java/Homework_2/Main.java deleted file mode 100644 index 8141ed19..00000000 --- a/src/main/java/Homework_2/Main.java +++ /dev/null @@ -1,4 +0,0 @@ -package Homework_2; - -public class Main { -} diff --git a/src/main/java/Homework_2/PyramidPrinter/Main.java b/src/main/java/Homework_2/PyramidPrinter/Main.java new file mode 100644 index 00000000..990558b4 --- /dev/null +++ b/src/main/java/Homework_2/PyramidPrinter/Main.java @@ -0,0 +1,7 @@ +package Homework_2.PyramidPrinter; + +public class Main { + public static void main(String[] args) { + + } +} diff --git a/src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java b/src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java new file mode 100644 index 00000000..7a3e8610 --- /dev/null +++ b/src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java @@ -0,0 +1,4 @@ +package Homework_2.PyramidPrinter; + +public class PyramidPrinter { +} diff --git a/src/main/java/Homework_2/RandomCharsTable/Main.java b/src/main/java/Homework_2/RandomCharsTable/Main.java new file mode 100644 index 00000000..bb52cdf1 --- /dev/null +++ b/src/main/java/Homework_2/RandomCharsTable/Main.java @@ -0,0 +1,7 @@ +package Homework_2.RandomCharsTable; + +public class Main { + public static void main(String[] args) { + + } +} diff --git a/src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java b/src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java new file mode 100644 index 00000000..1887dfc1 --- /dev/null +++ b/src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java @@ -0,0 +1,4 @@ +package Homework_2.RandomCharsTable; + +public class RandomCharsTable { +} diff --git a/src/main/java/Homework_2/TrafficLight/Main.java b/src/main/java/Homework_2/TrafficLight/Main.java new file mode 100644 index 00000000..214f6779 --- /dev/null +++ b/src/main/java/Homework_2/TrafficLight/Main.java @@ -0,0 +1,7 @@ +package Homework_2.TrafficLight; + +public class Main { + public static void main(String[] args) { + + } +} diff --git a/src/main/java/Homework_2/TrafficLight/TrafficLight.java b/src/main/java/Homework_2/TrafficLight/TrafficLight.java new file mode 100644 index 00000000..e5dfa0aa --- /dev/null +++ b/src/main/java/Homework_2/TrafficLight/TrafficLight.java @@ -0,0 +1,5 @@ +package Homework_2.TrafficLight; + +public class TrafficLight { + +} From be446b22e233ac154a29860828b957a2ceabf090 Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Sun, 25 Jul 2021 18:30:29 +0300 Subject: [PATCH 05/15] editing of README.md (added link to my codingbat page) --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index f94f8c13..25d9e0b8 100644 --- a/README.md +++ b/README.md @@ -7,3 +7,5 @@ | HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/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) + +[Link to my codingbat](https://codingbat.com/done?user=zarp1986@gmail.com&tag=4480593357) From 9a21b4d99cc81621105e028aab28e51170f228a9 Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Mon, 26 Jul 2021 17:17:31 +0300 Subject: [PATCH 06/15] Homework_2 - 1st commit with resolved tasks. Also included style fixes in Homework_1 --- README.md | 10 +- src/main/java/Homework_1/Main.java | 20 ++-- .../java/Homework_2/PyramidPrinter/Main.java | 1 + .../PyramidPrinter/PyramidPrinter.java | 34 +++++++ .../Homework_2/RandomCharsTable/Main.java | 2 +- .../RandomCharsTable/RandomCharsTable.java | 93 +++++++++++++++++++ .../java/Homework_2/TrafficLight/Main.java | 2 +- .../Homework_2/TrafficLight/TrafficLight.java | 46 +++++++++ 8 files changed, 196 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 25d9e0b8..25ff3102 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,12 @@ | Number | Solution | Short description | --- | --- | --- | -| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +| HW_1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +| HW_2.1 | [Traffic Light](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/TrafficLight) | The app that returns the color of the traffic light depending on the number of seconds from the beginning of the day | +| HW_2.2 | [Pyramid Printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/PyramidPrinter) | The app that "builds" a pyramid with the given base | +| HW_2.3 | [Random Chars Table](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/RandomCharsTable) | The app that "builds" a table of chars, end print the letters wich meet a given strategy (even/odd)| -[Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) -[Link to my codingbat](https://codingbat.com/done?user=zarp1986@gmail.com&tag=4480593357) +[Link to my codingbat result page](https://codingbat.com/done?user=zarp1986@gmail.com&tag=4480593357) + +[Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) diff --git a/src/main/java/Homework_1/Main.java b/src/main/java/Homework_1/Main.java index 4f4a795c..664737ab 100644 --- a/src/main/java/Homework_1/Main.java +++ b/src/main/java/Homework_1/Main.java @@ -1,16 +1,22 @@ package Homework_1; public class Main { + protected static final String RED_COLOUR = "\033[31m"; + protected static final String GREEN_COLOUR = "\033[32m"; + protected static final String RESET_COLOUR = "\033[0m"; + public static void main(String[] args) { + int k = args.length; if (k==0) { - System.out.println("\033[32mApplication has been called \033[31mwithout\033[32m the arguments!!! \033[0m"); + System.out.println(GREEN_COLOUR + "Application has been called " + RED_COLOUR + "without " + GREEN_COLOUR + "the arguments!" + RESET_COLOUR); } else { - for (int i=0; i<=k-1;i++) { - if (args[i].equals("error"))//не забыть написать КРАСНЫМ цветом!!! - { - System.out.println("\033[31mAlarm! \033[0m");//https://stackoverflow.com/questions/565252/how-to-set-a-strings-color - break;//выходим + for (int i = 0; i < k; i++) { + if (args[i].equals("error")) { + //https://stackoverflow.com/questions/565252/how-to-set-a-strings-color + System.out.println(RED_COLOUR + "Alarm!" + RESET_COLOUR); + //exit from the loop + break; } else { String s = "letter"; @@ -20,4 +26,4 @@ public static void main(String[] args) { } } } -} +} \ No newline at end of file diff --git a/src/main/java/Homework_2/PyramidPrinter/Main.java b/src/main/java/Homework_2/PyramidPrinter/Main.java index 990558b4..552661f3 100644 --- a/src/main/java/Homework_2/PyramidPrinter/Main.java +++ b/src/main/java/Homework_2/PyramidPrinter/Main.java @@ -2,6 +2,7 @@ public class Main { public static void main(String[] args) { + new PyramidPrinter().run(); } } diff --git a/src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java b/src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java index 7a3e8610..bbe05403 100644 --- a/src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java +++ b/src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java @@ -1,4 +1,38 @@ package Homework_2.PyramidPrinter; +import java.util.Scanner; + public class PyramidPrinter { + + protected void run(){ + Scanner scanner = new Scanner(System.in); + System.out.println("Enter the base of the pyramid, valid value is integer:"); + + //reading the value of pyramid's base + try { + int base = scanner.nextInt(); + if (base < 0) { + throw new Exception(); + } + drawingThePyramid(base); + } + catch (Exception e){ + System.out.println("Only 1 non-negative integer is allowed as passed parameter! Please, try again"); + return; + } + } + + protected void drawingThePyramid(int base){ + if (base == 0){ + System.out.println(""); + return; + } + for (int i = 0; i < base; i++){ + for (int j = 0; j <= i; j++){ + System.out.print("x"); + } + System.out.println(); + } + } + } diff --git a/src/main/java/Homework_2/RandomCharsTable/Main.java b/src/main/java/Homework_2/RandomCharsTable/Main.java index bb52cdf1..f0e8bc25 100644 --- a/src/main/java/Homework_2/RandomCharsTable/Main.java +++ b/src/main/java/Homework_2/RandomCharsTable/Main.java @@ -2,6 +2,6 @@ public class Main { public static void main(String[] args) { - + new RandomCharsTable().run(); } } diff --git a/src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java b/src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java index 1887dfc1..07755f58 100644 --- a/src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java +++ b/src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java @@ -1,4 +1,97 @@ package Homework_2.RandomCharsTable; + +import java.util.Scanner; + public class RandomCharsTable { + protected static final int MIN_ASCII_CODE = 65; + protected static final int MAX_ASCII_CODE = 90; + + protected void run(){ + + System.out.println("Enter the dimensions of matrix and required strategy : two integers and required strategy - even|odd, delimiter - space character))"); + + Scanner scanner = new Scanner(System.in); + String inString = scanner.nextLine(); + String tempStr = ""; + char c; + int col=0; int row=0; + String strategy = ""; + int paramCount=0; + // parse of input procedure + try { + for (int i = 0; i < inString.length(); i++) { + c = inString.charAt(i); + if (c != ' ') {//|| i == inString.length() - 1) + tempStr = tempStr + c; + } + else { + if(paramCount == 0) { + col = Integer.parseInt(tempStr); + paramCount++; + tempStr = ""; + continue; + } + if(paramCount == 1) { + row = Integer.parseInt(tempStr); + paramCount++; + tempStr = ""; + continue; + } + } + } + strategy = tempStr; + if ((!strategy.equals("even") && !strategy.equals("odd")) || col ==0 || row == 0){ + throw new Exception(); + } + } catch (Exception e) { + System.out.println("Passed parameters should match the format [positive integer] [positive integer] [even|odd]"); + return; + } + // if everything valid with input - create and print result + int [][] matrix = createCharsTable(col, row); + printCharsTable(matrix, strategy); + }//end of run; + + + + + public int[][] createCharsTable(int col, int row){ + int [][] matrix = new int[col][row]; + for (int i = 0; i < col; i++){ + for (int j = 0; j < row; j++){ + matrix [i][j] = rnd(MIN_ASCII_CODE, MAX_ASCII_CODE); + } + } +// System.out.println(matrix.length + " " + matrix[0].length); + return matrix; + } + + public void printCharsTable (int[][] matrix, String strategy){ + String tempStr = ""; + boolean evStrat = strategy.equals("even"); + String stratHeader = (evStrat) ? "Even letters - " : "Odd letters - "; + String stratRes = ""; + for (int i = 0; i < matrix.length; i++ ){ + tempStr = ""; + for (int j = 0; j < matrix[0].length; j++){ + tempStr = tempStr + (char) matrix[i][j] + "|"; + if (evStrat && matrix[i][j] % 2 == 0) { + stratRes = (stratRes.equals("")) ? (char) matrix[i][j] + "," : stratRes + " " + (char) matrix[i][j] + ","; + } + if (!evStrat && matrix[i][j] % 2 == 1) { + stratRes = (stratRes.equals("")) ? (char) matrix[i][j] + "," : stratRes + " " + (char) matrix[i][j] + ","; + } + } + System.out.println("|" + tempStr); + } + stratRes = (stratRes.length() >1) ? stratRes.substring(0, stratRes.length()-1) : stratRes; + System.out.println(stratHeader + stratRes); + } + + public static int rnd(int min, int max) + { + max -= min; + return (int) (Math.random() * ++max) + min; + } } diff --git a/src/main/java/Homework_2/TrafficLight/Main.java b/src/main/java/Homework_2/TrafficLight/Main.java index 214f6779..1ffd07df 100644 --- a/src/main/java/Homework_2/TrafficLight/Main.java +++ b/src/main/java/Homework_2/TrafficLight/Main.java @@ -2,6 +2,6 @@ public class Main { public static void main(String[] args) { - + new TrafficLight().run(); } } diff --git a/src/main/java/Homework_2/TrafficLight/TrafficLight.java b/src/main/java/Homework_2/TrafficLight/TrafficLight.java index e5dfa0aa..84f3fb1b 100644 --- a/src/main/java/Homework_2/TrafficLight/TrafficLight.java +++ b/src/main/java/Homework_2/TrafficLight/TrafficLight.java @@ -1,5 +1,51 @@ package Homework_2.TrafficLight; +import java.util.Scanner; + public class TrafficLight { + protected static final String RED_COLOUR = "\u001B[31m"; + protected static final String GREEN_COLOUR = "\u001B[32m"; + protected static final String YELLOW_COLOUR = "\u001B[33m"; + protected static final String RESET_COLOUR = "\u001B[0m"; + + protected void run(){ + Scanner scanner = new Scanner(System.in); + System.out.println("Enter the time: valid range is from 0 to 86399 )"); + int seconds = 0; + //reading the value of seconds + try { + seconds = scanner.nextInt(); + if (seconds < 0) { + throw new Exception(); + } + showingTrafficLightColor(seconds); + } + catch (Exception e){ + System.out.println("Only 1 non-negative integer is allowed as passed parameter! Please, try again"); + return; + } + } + + protected void showingTrafficLightColor(int sec){ + if (sec > 86399){ + System.out.println("The day is over"); + return; + } + sec = sec % 60; + String res = "unknown error("; + //YELLOW color + if ((sec >= 35 && sec < 40) || (sec >= 55 && sec < 60)) { + res = YELLOW_COLOUR + "YELLOW" + RESET_COLOUR; + } + //GREEN color + if (sec >= 0 && sec < 35) { + res = GREEN_COLOUR + "GREEN" + RESET_COLOUR; + } + //RED color + if (sec >= 40 && sec < 55) { + res = RED_COLOUR + "RED" + RESET_COLOUR; + } + System.out.println(res); + } } From ac4f643e39425bab62b7d3e4f92562d0e8c3a5fc Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Wed, 28 Jul 2021 21:54:26 +0300 Subject: [PATCH 07/15] Added "scanner.close();" - because of my forgetfulness :(. --- src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java | 4 ++++ .../java/Homework_2/RandomCharsTable/RandomCharsTable.java | 4 ++++ src/main/java/Homework_2/TrafficLight/TrafficLight.java | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java b/src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java index bbe05403..c5df77d9 100644 --- a/src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java +++ b/src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java @@ -20,6 +20,10 @@ protected void run(){ System.out.println("Only 1 non-negative integer is allowed as passed parameter! Please, try again"); return; } + //adding finally block (28.07.2021) + finally { + scanner.close(); + } } protected void drawingThePyramid(int base){ diff --git a/src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java b/src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java index 07755f58..e69f303c 100644 --- a/src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java +++ b/src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java @@ -48,6 +48,10 @@ protected void run(){ System.out.println("Passed parameters should match the format [positive integer] [positive integer] [even|odd]"); return; } + //adding finally block (28.07.2021) + finally { + scanner.close(); + } // if everything valid with input - create and print result int [][] matrix = createCharsTable(col, row); printCharsTable(matrix, strategy); diff --git a/src/main/java/Homework_2/TrafficLight/TrafficLight.java b/src/main/java/Homework_2/TrafficLight/TrafficLight.java index 84f3fb1b..1a1d1795 100644 --- a/src/main/java/Homework_2/TrafficLight/TrafficLight.java +++ b/src/main/java/Homework_2/TrafficLight/TrafficLight.java @@ -24,6 +24,10 @@ protected void run(){ System.out.println("Only 1 non-negative integer is allowed as passed parameter! Please, try again"); return; } + //adding finally block (28.07.2021) + finally { + scanner.close(); + } } protected void showingTrafficLightColor(int sec){ From 15f42540f1ba8d69adc99a6820b97be3f452a833 Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Sat, 7 Aug 2021 21:12:00 +0700 Subject: [PATCH 08/15] HW2 - names of packages have been changed (according to the task) --- src/main/java/Homework_1/Main.java | 16 ++++++++-------- .../Main.java | 2 +- .../PyramidPrinter.java | 2 +- .../Main.java | 2 +- .../RandomCharsTable.java | 2 +- .../{TrafficLight => traffic_light}/Main.java | 2 +- .../TrafficLight.java | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) rename src/main/java/Homework_2/{PyramidPrinter => pyramid_printer}/Main.java (75%) rename src/main/java/Homework_2/{PyramidPrinter => pyramid_printer}/PyramidPrinter.java (96%) rename src/main/java/Homework_2/{RandomCharsTable => random_chars_table}/Main.java (74%) rename src/main/java/Homework_2/{RandomCharsTable => random_chars_table}/RandomCharsTable.java (98%) rename src/main/java/Homework_2/{TrafficLight => traffic_light}/Main.java (76%) rename src/main/java/Homework_2/{TrafficLight => traffic_light}/TrafficLight.java (98%) diff --git a/src/main/java/Homework_1/Main.java b/src/main/java/Homework_1/Main.java index 664737ab..295958f6 100644 --- a/src/main/java/Homework_1/Main.java +++ b/src/main/java/Homework_1/Main.java @@ -1,27 +1,27 @@ package Homework_1; public class Main { - protected static final String RED_COLOUR = "\033[31m"; - protected static final String GREEN_COLOUR = "\033[32m"; - protected static final String RESET_COLOUR = "\033[0m"; + protected static final String RED_COLOR = "\033[31m"; + protected static final String GREEN_COLOR = "\033[32m"; + protected static final String RESET_COLOR = "\033[0m"; public static void main(String[] args) { int k = args.length; - if (k==0) { - System.out.println(GREEN_COLOUR + "Application has been called " + RED_COLOUR + "without " + GREEN_COLOUR + "the arguments!" + RESET_COLOUR); + if (k == 0) { + System.out.println(GREEN_COLOR + "Application has been called " + RED_COLOR + "without " + GREEN_COLOR + "the arguments!" + RESET_COLOR); } else { for (int i = 0; i < k; i++) { if (args[i].equals("error")) { //https://stackoverflow.com/questions/565252/how-to-set-a-strings-color - System.out.println(RED_COLOUR + "Alarm!" + RESET_COLOUR); + System.out.println(RED_COLOR + "Alarm!" + RESET_COLOR); //exit from the loop break; } else { String s = "letter"; - if (args[i].length()>1) {s=s+"s";} - System.out.println(args[i]+": "+args[i].length()+" "+s); + if (args[i].length() > 1) {s = s + "s";} + System.out.println(args[i] + ": " + args[i].length() + " " + s); } } } diff --git a/src/main/java/Homework_2/PyramidPrinter/Main.java b/src/main/java/Homework_2/pyramid_printer/Main.java similarity index 75% rename from src/main/java/Homework_2/PyramidPrinter/Main.java rename to src/main/java/Homework_2/pyramid_printer/Main.java index 552661f3..d8646671 100644 --- a/src/main/java/Homework_2/PyramidPrinter/Main.java +++ b/src/main/java/Homework_2/pyramid_printer/Main.java @@ -1,4 +1,4 @@ -package Homework_2.PyramidPrinter; +package Homework_2.pyramid_printer; public class Main { public static void main(String[] args) { diff --git a/src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java b/src/main/java/Homework_2/pyramid_printer/PyramidPrinter.java similarity index 96% rename from src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java rename to src/main/java/Homework_2/pyramid_printer/PyramidPrinter.java index c5df77d9..7656fde1 100644 --- a/src/main/java/Homework_2/PyramidPrinter/PyramidPrinter.java +++ b/src/main/java/Homework_2/pyramid_printer/PyramidPrinter.java @@ -1,4 +1,4 @@ -package Homework_2.PyramidPrinter; +package Homework_2.pyramid_printer; import java.util.Scanner; diff --git a/src/main/java/Homework_2/RandomCharsTable/Main.java b/src/main/java/Homework_2/random_chars_table/Main.java similarity index 74% rename from src/main/java/Homework_2/RandomCharsTable/Main.java rename to src/main/java/Homework_2/random_chars_table/Main.java index f0e8bc25..f6dbaca4 100644 --- a/src/main/java/Homework_2/RandomCharsTable/Main.java +++ b/src/main/java/Homework_2/random_chars_table/Main.java @@ -1,4 +1,4 @@ -package Homework_2.RandomCharsTable; +package Homework_2.random_chars_table; public class Main { public static void main(String[] args) { diff --git a/src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java b/src/main/java/Homework_2/random_chars_table/RandomCharsTable.java similarity index 98% rename from src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java rename to src/main/java/Homework_2/random_chars_table/RandomCharsTable.java index e69f303c..4af97848 100644 --- a/src/main/java/Homework_2/RandomCharsTable/RandomCharsTable.java +++ b/src/main/java/Homework_2/random_chars_table/RandomCharsTable.java @@ -1,4 +1,4 @@ -package Homework_2.RandomCharsTable; +package Homework_2.random_chars_table; import java.util.Scanner; diff --git a/src/main/java/Homework_2/TrafficLight/Main.java b/src/main/java/Homework_2/traffic_light/Main.java similarity index 76% rename from src/main/java/Homework_2/TrafficLight/Main.java rename to src/main/java/Homework_2/traffic_light/Main.java index 1ffd07df..8d8af705 100644 --- a/src/main/java/Homework_2/TrafficLight/Main.java +++ b/src/main/java/Homework_2/traffic_light/Main.java @@ -1,4 +1,4 @@ -package Homework_2.TrafficLight; +package Homework_2.traffic_light; public class Main { public static void main(String[] args) { diff --git a/src/main/java/Homework_2/TrafficLight/TrafficLight.java b/src/main/java/Homework_2/traffic_light/TrafficLight.java similarity index 98% rename from src/main/java/Homework_2/TrafficLight/TrafficLight.java rename to src/main/java/Homework_2/traffic_light/TrafficLight.java index 1a1d1795..63afc97c 100644 --- a/src/main/java/Homework_2/TrafficLight/TrafficLight.java +++ b/src/main/java/Homework_2/traffic_light/TrafficLight.java @@ -1,4 +1,4 @@ -package Homework_2.TrafficLight; +package Homework_2.traffic_light; import java.util.Scanner; From 6a40a654229d4f52d341f4a04a827b266f899cd4 Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Sat, 7 Aug 2021 21:14:58 +0700 Subject: [PATCH 09/15] README.md updated --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 25ff3102..1befe3e9 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ | Number | Solution | Short description | --- | --- | --- | | HW_1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | -| HW_2.1 | [Traffic Light](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/TrafficLight) | The app that returns the color of the traffic light depending on the number of seconds from the beginning of the day | -| HW_2.2 | [Pyramid Printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/PyramidPrinter) | The app that "builds" a pyramid with the given base | -| HW_2.3 | [Random Chars Table](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/RandomCharsTable) | The app that "builds" a table of chars, end print the letters wich meet a given strategy (even/odd)| +| HW_2.1 | [Traffic Light](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/traffic_light) | The app that returns the color of the traffic light depending on the number of seconds from the beginning of the day | +| HW_2.2 | [Pyramid Printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/pyramid_printer) | The app that "builds" a pyramid with the given base | +| HW_2.3 | [Random Chars Table](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/random_chars_table) | The app that "builds" a table of chars, end print the letters wich meet a given strategy (even/odd)| [Link to my codingbat result page](https://codingbat.com/done?user=zarp1986@gmail.com&tag=4480593357) From c77cc534186bcdab6bd546c0336c38fff037d183 Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Mon, 16 Aug 2021 00:12:08 +0700 Subject: [PATCH 10/15] HW_3 1st commit (+ some changes in HW_2 tasks) --- README.md | 5 +- build.gradle | 2 + .../Homework_2/random_chars_table/Main.java | 7 - .../java/{Homework_1 => homework_1}/Main.java | 2 +- .../pyramid_printer/Main.java | 2 +- .../pyramid_printer/PyramidPrinter.java | 4 +- .../homework_2/random_chars_table/Main.java | 45 +++++ .../random_chars_table/RandomCharsTable.java | 14 +- .../traffic_light/Main.java | 2 +- .../traffic_light/TrafficLight.java | 9 +- .../MyImmutableElectricGuitarESP.java | 90 +++++++++ .../pyramid_printer/PyramidPrinterTest.java | 93 +++++++++ ...ableParametrizedTest_IT_DOES_NOT_WORK.java | 42 ++++ .../RandomCharsTableTest.java | 189 ++++++++++++++++++ .../traffic_light/TrafficLightTest.java | 97 +++++++++ 15 files changed, 580 insertions(+), 23 deletions(-) delete mode 100644 src/main/java/Homework_2/random_chars_table/Main.java rename src/main/java/{Homework_1 => homework_1}/Main.java (97%) rename src/main/java/{Homework_2 => homework_2}/pyramid_printer/Main.java (75%) rename src/main/java/{Homework_2 => homework_2}/pyramid_printer/PyramidPrinter.java (94%) create mode 100644 src/main/java/homework_2/random_chars_table/Main.java rename src/main/java/{Homework_2 => homework_2}/random_chars_table/RandomCharsTable.java (91%) rename src/main/java/{Homework_2 => homework_2}/traffic_light/Main.java (76%) rename src/main/java/{Homework_2 => homework_2}/traffic_light/TrafficLight.java (91%) create mode 100644 src/main/java/homework_3/MyImmutableElectricGuitarESP.java create mode 100644 src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java create mode 100644 src/test/java/homework_2/random_chars_table/RandomCharsTableParametrizedTest_IT_DOES_NOT_WORK.java create mode 100644 src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java create mode 100644 src/test/java/homework_2/traffic_light/TrafficLightTest.java diff --git a/README.md b/README.md index 1befe3e9..0f97c3f4 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,10 @@ | HW_2.1 | [Traffic Light](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/traffic_light) | The app that returns the color of the traffic light depending on the number of seconds from the beginning of the day | | HW_2.2 | [Pyramid Printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/pyramid_printer) | The app that "builds" a pyramid with the given base | | HW_2.3 | [Random Chars Table](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/random_chars_table) | The app that "builds" a table of chars, end print the letters wich meet a given strategy (even/odd)| - +| HW_3 | [ImmutableClass](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/homework_3) | ImmutableClass (MyImmutableElectricGuitarESP class)| +| HW_3.1 | [Traffic Light Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_2/traffic_light) | Tests for "Traffic Light" Application| +| HW_3.2 | [Pyramid Printer Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_2/pyramid_printer) | Tests for "Pyramid Printer" Application | +| HW_3.3 | [Random Chars Table Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_2/random_chars_table) | Tests for "Random Chars Table" Application| [Link to my codingbat result page](https://codingbat.com/done?user=zarp1986@gmail.com&tag=4480593357) diff --git a/build.gradle b/build.gradle index b91dc843..833e2769 100644 --- a/build.gradle +++ b/build.gradle @@ -10,6 +10,8 @@ repositories { } dependencies { + implementation 'junit:junit:4.12' + implementation 'junit:junit:4.12' 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/random_chars_table/Main.java b/src/main/java/Homework_2/random_chars_table/Main.java deleted file mode 100644 index f6dbaca4..00000000 --- a/src/main/java/Homework_2/random_chars_table/Main.java +++ /dev/null @@ -1,7 +0,0 @@ -package Homework_2.random_chars_table; - -public class Main { - public static void main(String[] args) { - new RandomCharsTable().run(); - } -} diff --git a/src/main/java/Homework_1/Main.java b/src/main/java/homework_1/Main.java similarity index 97% rename from src/main/java/Homework_1/Main.java rename to src/main/java/homework_1/Main.java index 295958f6..bc96080f 100644 --- a/src/main/java/Homework_1/Main.java +++ b/src/main/java/homework_1/Main.java @@ -1,4 +1,4 @@ -package Homework_1; +package homework_1; public class Main { protected static final String RED_COLOR = "\033[31m"; diff --git a/src/main/java/Homework_2/pyramid_printer/Main.java b/src/main/java/homework_2/pyramid_printer/Main.java similarity index 75% rename from src/main/java/Homework_2/pyramid_printer/Main.java rename to src/main/java/homework_2/pyramid_printer/Main.java index d8646671..5e4d77f5 100644 --- a/src/main/java/Homework_2/pyramid_printer/Main.java +++ b/src/main/java/homework_2/pyramid_printer/Main.java @@ -1,4 +1,4 @@ -package Homework_2.pyramid_printer; +package homework_2.pyramid_printer; public class Main { public static void main(String[] args) { diff --git a/src/main/java/Homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java similarity index 94% rename from src/main/java/Homework_2/pyramid_printer/PyramidPrinter.java rename to src/main/java/homework_2/pyramid_printer/PyramidPrinter.java index 7656fde1..24b2d5b2 100644 --- a/src/main/java/Homework_2/pyramid_printer/PyramidPrinter.java +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -1,10 +1,10 @@ -package Homework_2.pyramid_printer; +package homework_2.pyramid_printer; import java.util.Scanner; public class PyramidPrinter { - protected void run(){ + public void run(){ Scanner scanner = new Scanner(System.in); System.out.println("Enter the base of the pyramid, valid value is integer:"); 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..9bc28a08 --- /dev/null +++ b/src/main/java/homework_2/random_chars_table/Main.java @@ -0,0 +1,45 @@ +package homework_2.random_chars_table; + +import java.util.HashSet; + +public class Main { + public static void main(String[] args) { +// initializeForTests(); + new RandomCharsTable().run(); +// isValidLastStringForEven("Even letters - "); + } + +// static HashSet validLetters = new HashSet<>(); +// static HashSet evenLetters = new HashSet<>(); +// static HashSet oddLetters = new HashSet<>(); +// +// public static void isValidLastStringForEven(String str) { +// String str1 = new String(""); +// String str2 = new String(""); +// str1 = str.replaceAll("(Even letters - )|(,\\s*)", ""); +// str2 = str.replaceAll("(Even letters -)|(\\s+)|(,+)", ""); +// System.out.print("Last string1 after replace operation:" + str1); +// System.out.print("Last string2 after replace operation:" + str2); +// System.out.println("------------------"); +// for (char c : str.toCharArray()) { +// if (oddLetters.contains(c)) { +//// return false; +// } +// } +// } +// public static void initializeForTests (){ +// for (int i = 65; i <= 90; i++){ +// validLetters.add((char) i); +// if (i % 2 == 0) { +// evenLetters.add((char) i); +// } +// else { +// oddLetters.add((char) i); +// } +// } +//// System.out.println("Valid letters: " + validLetters.toString()); +//// System.out.println("Even letters: " + evenLetters.toString()); +//// System.out.println("Odd letters: " + oddLetters.toString()); +// } + +} diff --git a/src/main/java/Homework_2/random_chars_table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java similarity index 91% rename from src/main/java/Homework_2/random_chars_table/RandomCharsTable.java rename to src/main/java/homework_2/random_chars_table/RandomCharsTable.java index 4af97848..f968f53a 100644 --- a/src/main/java/Homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -1,4 +1,4 @@ -package Homework_2.random_chars_table; +package homework_2.random_chars_table; import java.util.Scanner; @@ -7,7 +7,7 @@ public class RandomCharsTable { protected static final int MIN_ASCII_CODE = 65; protected static final int MAX_ASCII_CODE = 90; - protected void run(){ + public void run(){ System.out.println("Enter the dimensions of matrix and required strategy : two integers and required strategy - even|odd, delimiter - space character))"); @@ -15,7 +15,7 @@ protected void run(){ String inString = scanner.nextLine(); String tempStr = ""; char c; - int col=0; int row=0; + int cols =0; int rows =0; String strategy = ""; int paramCount=0; // parse of input procedure @@ -27,13 +27,13 @@ protected void run(){ } else { if(paramCount == 0) { - col = Integer.parseInt(tempStr); + cols = Integer.parseInt(tempStr); paramCount++; tempStr = ""; continue; } if(paramCount == 1) { - row = Integer.parseInt(tempStr); + rows = Integer.parseInt(tempStr); paramCount++; tempStr = ""; continue; @@ -41,7 +41,7 @@ protected void run(){ } } strategy = tempStr; - if ((!strategy.equals("even") && !strategy.equals("odd")) || col ==0 || row == 0){ + if ((!strategy.equals("even") && !strategy.equals("odd")) || cols <=0 || rows <= 0){ throw new Exception(); } } catch (Exception e) { @@ -53,7 +53,7 @@ protected void run(){ scanner.close(); } // if everything valid with input - create and print result - int [][] matrix = createCharsTable(col, row); + int [][] matrix = createCharsTable(cols, rows); printCharsTable(matrix, strategy); }//end of run; diff --git a/src/main/java/Homework_2/traffic_light/Main.java b/src/main/java/homework_2/traffic_light/Main.java similarity index 76% rename from src/main/java/Homework_2/traffic_light/Main.java rename to src/main/java/homework_2/traffic_light/Main.java index 8d8af705..fa033081 100644 --- a/src/main/java/Homework_2/traffic_light/Main.java +++ b/src/main/java/homework_2/traffic_light/Main.java @@ -1,4 +1,4 @@ -package Homework_2.traffic_light; +package homework_2.traffic_light; public class Main { public static void main(String[] args) { diff --git a/src/main/java/Homework_2/traffic_light/TrafficLight.java b/src/main/java/homework_2/traffic_light/TrafficLight.java similarity index 91% rename from src/main/java/Homework_2/traffic_light/TrafficLight.java rename to src/main/java/homework_2/traffic_light/TrafficLight.java index 63afc97c..6690faf3 100644 --- a/src/main/java/Homework_2/traffic_light/TrafficLight.java +++ b/src/main/java/homework_2/traffic_light/TrafficLight.java @@ -1,16 +1,17 @@ -package Homework_2.traffic_light; +package homework_2.traffic_light; import java.util.Scanner; + public class TrafficLight { protected static final String RED_COLOUR = "\u001B[31m"; protected static final String GREEN_COLOUR = "\u001B[32m"; protected static final String YELLOW_COLOUR = "\u001B[33m"; protected static final String RESET_COLOUR = "\u001B[0m"; - protected void run(){ + public void run(){ Scanner scanner = new Scanner(System.in); - System.out.println("Enter the time: valid range is from 0 to 86399 )"); + System.out.println("Enter the time (valid range is from 0 to 86399 ):"); int seconds = 0; //reading the value of seconds try { @@ -52,4 +53,6 @@ protected void showingTrafficLightColor(int sec){ System.out.println(res); } + + } diff --git a/src/main/java/homework_3/MyImmutableElectricGuitarESP.java b/src/main/java/homework_3/MyImmutableElectricGuitarESP.java new file mode 100644 index 00000000..6315b136 --- /dev/null +++ b/src/main/java/homework_3/MyImmutableElectricGuitarESP.java @@ -0,0 +1,90 @@ +package homework_3; + + + +/* +Immutable class means that once an object is created, we cannot change its content. In Java, all the wrapper classes (like Integer, Boolean, Byte, Short) and String class is immutable. We can create our own immutable class as well. + +Following are the requirements: + +- 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 MyImmutableElectricGuitarESP { + + private final boolean hasActivePickups; + private final int yearOfManufacture; + private final String brandOfPickups; + + public MyImmutableElectricGuitarESP(boolean hasActivePickups) { + this.hasActivePickups = hasActivePickups; + this.yearOfManufacture = 2004; + this.brandOfPickups = "EMG"; + } + + public MyImmutableElectricGuitarESP(int yearOfManufacture) { + this.yearOfManufacture = yearOfManufacture; + this.brandOfPickups = "Gibson"; + this.hasActivePickups = false; + } + + public MyImmutableElectricGuitarESP(String brandOfPickups) { + this.brandOfPickups = brandOfPickups; + this.hasActivePickups = false; + this.yearOfManufacture = 2006; + } + + public MyImmutableElectricGuitarESP(boolean hasActivePickups, int yearOfManufacture, String brandOfPickups) { + this.hasActivePickups = hasActivePickups; + this.yearOfManufacture = yearOfManufacture; + this.brandOfPickups = brandOfPickups; + } + + public boolean isHasActivePickups() { + return hasActivePickups; + } + + public int getYearOfManufacture() { + return yearOfManufacture; + } + + public String getBrandOfPickups() { + return brandOfPickups; + } + + public MyImmutableElectricGuitarESP getNewMyImmutableElectricGuitarESP(boolean newHasActivePickups){ + return new MyImmutableElectricGuitarESP(newHasActivePickups); + } + + public MyImmutableElectricGuitarESP getNewMyImmutableElectricGuitarESP(int newYearOfManufacture){ + return new MyImmutableElectricGuitarESP(newYearOfManufacture); + } + + public MyImmutableElectricGuitarESP getNewMyImmutableElectricGuitarESP(String newBrandOfPickups){ + return new MyImmutableElectricGuitarESP(newBrandOfPickups); + } + + public MyImmutableElectricGuitarESP getNewMyImmutableElectricGuitarESP(boolean newHasActivePickups, int newYearOfManufacture, String newBrandOfPickups){ + return new MyImmutableElectricGuitarESP(newHasActivePickups, newYearOfManufacture, newBrandOfPickups); + } + + public MyImmutableElectricGuitarESP getNewMyImmutableElectricGuitarESP(MyImmutableElectricGuitarESP previousMyImmutableElectricGuitarESP, boolean newHasActivePickups){ + return new MyImmutableElectricGuitarESP(newHasActivePickups, previousMyImmutableElectricGuitarESP.getYearOfManufacture(), previousMyImmutableElectricGuitarESP.getBrandOfPickups()); + } + + public MyImmutableElectricGuitarESP getNewMyImmutableElectricGuitarESP(MyImmutableElectricGuitarESP previousMyImmutableElectricGuitarESP, int newYearOfManufacture){ + return new MyImmutableElectricGuitarESP(previousMyImmutableElectricGuitarESP.isHasActivePickups(), newYearOfManufacture, previousMyImmutableElectricGuitarESP.getBrandOfPickups()); + } + + public MyImmutableElectricGuitarESP getNewMyImmutableElectricGuitarESP(MyImmutableElectricGuitarESP previousMyImmutableElectricGuitarESP, String newBrandOfPickups){ + return new MyImmutableElectricGuitarESP(previousMyImmutableElectricGuitarESP.isHasActivePickups(), previousMyImmutableElectricGuitarESP.getYearOfManufacture(), newBrandOfPickups); + } + +} diff --git a/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java b/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java new file mode 100644 index 00000000..370ab399 --- /dev/null +++ b/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java @@ -0,0 +1,93 @@ +package homework_2.pyramid_printer; + +import base.UnitBase; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class PyramidPrinterTest extends UnitBase { + private final String GREET = "Enter the base of the pyramid, valid value is integer:"; + private final String HINT = "Only 1 non-negative integer is allowed as passed parameter! Please, try again"; + PyramidPrinter pyramidPrinter = new PyramidPrinter(); + + + @Test + void given0_whenOk_then_0 (){ + setInput("0"); + pyramidPrinter.run(); + printOut(); + removeFromOutput(GREET); + assertEquals("", getOutputLines()[0]); + } + + @Test + void given1_whenOk_then_1 (){ + setInput("1"); + pyramidPrinter.run(); + printOut(); + removeFromOutput(GREET); + assertEquals("x", getOutputLines()[0]); + } + + @Test + void given2_whenOk_then_2 (){ + setInput("2"); + pyramidPrinter.run(); + printOut(); + removeFromOutput(GREET); + assertEquals("x", getOutputLines()[0]); + assertEquals("xx", getOutputLines()[1]); + } + + @Test + void given5_whenOk_then_5 (){ + setInput("5"); + pyramidPrinter.run(); + printOut(); + removeFromOutput(GREET); + assertEquals("x", getOutputLines()[0]); + assertEquals("xx", getOutputLines()[1]); + assertEquals("xxx", getOutputLines()[2]); + assertEquals("xxxx", getOutputLines()[3]); + assertEquals("xxxxx", getOutputLines()[4]); + + } + + @Test + void givenString_whenBad_then_Hint (){ + setInput("Qwe"); + pyramidPrinter.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + } + + @Test + void givenFractal_whenBad_then_Hint (){ + setInput("2.5"); + pyramidPrinter.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + } + + @Test + void givenNegative_whenBad_then_Hint (){ + setInput("-5"); + pyramidPrinter.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + } + + @Test + void givenBigInt_whenBad_then_Hint (){ + setInput("99999999999999999999999999999"); + pyramidPrinter.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + } + +} diff --git a/src/test/java/homework_2/random_chars_table/RandomCharsTableParametrizedTest_IT_DOES_NOT_WORK.java b/src/test/java/homework_2/random_chars_table/RandomCharsTableParametrizedTest_IT_DOES_NOT_WORK.java new file mode 100644 index 00000000..50704771 --- /dev/null +++ b/src/test/java/homework_2/random_chars_table/RandomCharsTableParametrizedTest_IT_DOES_NOT_WORK.java @@ -0,0 +1,42 @@ +package homework_2.random_chars_table; + +import base.UnitBase; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.util.Arrays; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +@RunWith(value = Parameterized.class) +public class RandomCharsTableParametrizedTest_IT_DOES_NOT_WORK extends UnitBase { + protected final String GREET = "Enter the dimensions of matrix and required strategy : two integers and required strategy - even|odd, delimiter - space character))"; + protected final String HINT = "Passed parameters should match the format [positive integer] [positive integer] [even|odd]"; + private String input; + protected RandomCharsTable randomCharsTable = new RandomCharsTable(); + public RandomCharsTableParametrizedTest_IT_DOES_NOT_WORK(String input) { + this.input = input; + } + + @Parameterized.Parameters() + public static Iterable dataForTest() { + return Arrays.asList(new Object[][] { + {"0 1 odd"}, + {"0 1 even"}, + {"5 5 evenn"}, + {"3 5 add"}, + }); + } + + @Test + void givenBadValues_whenBad_thenHint (){ + setInput(input); + randomCharsTable.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + + } + +} diff --git a/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java new file mode 100644 index 00000000..c7dd1f16 --- /dev/null +++ b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java @@ -0,0 +1,189 @@ +package homework_2.random_chars_table; + +import base.UnitBase; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.*; + + +public class RandomCharsTableTest extends UnitBase { + protected final String GREET = "Enter the dimensions of matrix and required strategy : two integers and required strategy - even|odd, delimiter - space character))"; + protected final String HINT = "Passed parameters should match the format [positive integer] [positive integer] [even|odd]"; + protected HashSet validLetters; + protected HashSet evenLetters; + protected HashSet oddLetters; + protected RandomCharsTable randomCharsTable = new RandomCharsTable(); + + @BeforeEach + protected void initializeForTests (){ + validLetters = new HashSet<>(); + evenLetters = new HashSet<>(); + oddLetters = new HashSet<>(); + for (int i = 65; i <= 90; i++){ + validLetters.add((char) i); + if (i % 2 == 0) { + evenLetters.add((char) i); + } + else { + oddLetters.add((char) i); + } + } + + } + + + private boolean isValidCharTableDelimiters(String str, Character delimiterChar){ + for (int i = 0; i < str.length(); i = i + 2) { + if (str.charAt(i) != delimiterChar) { + return false; + } + } + return true; + + } + + private boolean isValidCharTable(String[] strings, int rows, int cols){ + if (strings.length -1 != rows){ + return false; + } + for (int i = 0; i < strings.length - 1; i++) { + String currStr = strings[i]; + if (!isValidCharTableDelimiters(currStr,'|')){ + return false; + } + currStr = currStr.replaceAll( "\\|+",""); +// if ( ((cols * 2) + 1 != currStr.length())){ + if ( (cols != currStr.length())){ + return false; + } + for (char c : currStr.toCharArray()) { + if (!validLetters.contains(c)){ + return false; + } + } + } + return true; + + } + + private boolean isValidLastStringForEven(String str){ +// str = str.replaceAll("(Even letters - )|(,\\s+)", ""); + str = str.replaceAll("(Even letters -)|(\\s+)|(,+)", ""); + for (char c : str.toCharArray()) { + if (oddLetters.contains(c)){ + return false; + } + } + return true; + + } + + private boolean isValidLastStringForOdd(String str){ + str = str.replaceAll("(Odd letters -)|(\\s+)|(,+)", ""); + for (char c : str.toCharArray()) { + if (evenLetters.contains(c)){ + return false; + } + } + return true; + + } + + @Test + void given2_2_even_whenOk_thenOk (){ + setInput("2 2 even"); + randomCharsTable.run(); + printOut(); + removeFromOutput(GREET); +// assertTrue(isValidCharTableDelimiters(getOutputLines()[1], '|')); + assertTrue(isValidCharTable(getOutputLines(), 2, 2)); + assertTrue(isValidLastStringForEven(getOutputLines()[getOutputLines().length-1])); + + } + + @Test + void given2_3_odd_whenOk_thenOk (){ + setInput("2 3 odd"); + randomCharsTable.run(); + printOut(); + removeFromOutput(GREET); + assertTrue(isValidCharTable(getOutputLines(), 2, 3)); + assertTrue(isValidLastStringForOdd(getOutputLines()[getOutputLines().length-1])); + + } + + @Test + void given15_10_odd_whenOk_thenOk (){ + setInput("15 10 odd"); + randomCharsTable.run(); + printOut(); + removeFromOutput(GREET); + assertTrue(isValidCharTable(getOutputLines(),15, 10)); + assertTrue(isValidLastStringForOdd(getOutputLines()[getOutputLines().length-1])); + + } + + @Test + void given0_1_odd_whenBad_thenHint (){ + setInput("0 1 odd"); + randomCharsTable.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + + } + + @Test + void given0_1_even_whenBad_thenHint (){ + setInput("0 1 even"); + randomCharsTable.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + + } + + @Test + void given5_5_event_whenBad_thenHint (){ + setInput("5 5 event"); + randomCharsTable.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + + } + + @Test + void given3_5_add_whenBad_thenHint (){ + setInput("3 5 add"); + randomCharsTable.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + + } + + @Test + void givenNegative_5_odd_whenBad_thenHint (){ + setInput("-3 5 odd"); + randomCharsTable.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + + } + + @Test + void given5_Negative_even_whenBad_thenHint (){ + setInput("5 -5 even"); + randomCharsTable.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + + } + +} diff --git a/src/test/java/homework_2/traffic_light/TrafficLightTest.java b/src/test/java/homework_2/traffic_light/TrafficLightTest.java new file mode 100644 index 00000000..69e1eaca --- /dev/null +++ b/src/test/java/homework_2/traffic_light/TrafficLightTest.java @@ -0,0 +1,97 @@ +package homework_2.traffic_light; + +import base.UnitBase; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + + +public class TrafficLightTest extends UnitBase { + private final String GREET = "Enter the time (valid range is from 0 to 86399 ):"; + private final String HINT = "Only 1 non-negative integer is allowed as passed parameter! Please, try again"; + TrafficLight trafficLight = new TrafficLight(); + + @Test + void given0_whenOk_then_Green (){ + setInput("0"); + trafficLight.run(); + printOut(); + removeFromOutput(GREET); + assertTrue(getOutputLines()[0].contains("GREEN")); + } + + @Test + void given5_whenOk_then_Green (){ + setInput("5"); + trafficLight.run(); + printOut(); + removeFromOutput(GREET); + assertTrue(getOutputLines()[0].contains("GREEN")); + } + + @Test + void given35_whenOk_then_Yellow (){ + setInput("35"); + trafficLight.run(); + printOut(); + removeFromOutput(GREET); + assertTrue(getOutputLines()[0].contains("YELLOW")); + } + + @Test + void given54_whenOk_then_Red (){ + setInput("54"); + trafficLight.run(); + printOut(); + removeFromOutput(GREET); + assertTrue(getOutputLines()[0].contains("RED")); + } + + @Test + void given86401_whenOk_then_TheDayIsOver (){ + setInput("86401"); + trafficLight.run(); + printOut(); + removeFromOutput(GREET); + assertTrue(getOutputLines()[0].contains("The day is over")); + } + + + @Test + void givenString_whenBad_then_Hint (){ + setInput("Qwe"); + trafficLight.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + } + + @Test + void givenFractal_whenBad_then_Hint (){ + setInput("2.5"); + trafficLight.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + } + + @Test + void givenNegative_whenBad_then_Hint (){ + setInput("-5"); + trafficLight.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + } + + @Test + void givenBigInt_whenBad_then_Hint (){ + setInput("99999999999999999999999999999"); + trafficLight.run(); + printOut(); + removeFromOutput(GREET); + assertEquals(HINT, getOutputLines()[0]); + } + +} + + From a53a5cdcc4539c4e67b6dd76e11746c784501acd Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Mon, 30 Aug 2021 22:27:50 +0700 Subject: [PATCH 11/15] HW_4 1st commit (without Custom_Annotation task - it's in processing) --- .../homework_4/custom_annotation/Main.java | 7 ++ .../custom_file_reader/CustomFileReader.java | 64 +++++++++++++++++++ .../homework_4/custom_file_reader/Main.java | 12 ++++ src/main/java/homework_4/singleton/Main.java | 7 ++ .../java/homework_4/singleton/Singleton.java | 13 ++++ .../File_for_CustomFileReader_Task.txt | 5 ++ .../File_for_CustomFileReader_Test.txt | 4 ++ .../CustomFileReaderTest.java | 50 +++++++++++++++ .../homework_4/singleton/SingletonTest.java | 18 ++++++ 9 files changed, 180 insertions(+) create mode 100644 src/main/java/homework_4/custom_annotation/Main.java create mode 100644 src/main/java/homework_4/custom_file_reader/CustomFileReader.java create mode 100644 src/main/java/homework_4/custom_file_reader/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/File_for_CustomFileReader_Task.txt create mode 100644 src/main/resources/custom_file_reader/File_for_CustomFileReader_Test.txt create mode 100644 src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java create mode 100644 src/test/java/homework_4/singleton/SingletonTest.java diff --git a/src/main/java/homework_4/custom_annotation/Main.java b/src/main/java/homework_4/custom_annotation/Main.java new file mode 100644 index 00000000..e2448472 --- /dev/null +++ b/src/main/java/homework_4/custom_annotation/Main.java @@ -0,0 +1,7 @@ +package homework_4.custom_annotation; + +public class Main { + public static void main(String[] args) { + + } +} diff --git a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java new file mode 100644 index 00000000..5d1b4521 --- /dev/null +++ b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java @@ -0,0 +1,64 @@ +package homework_4.custom_file_reader; + +import java.awt.datatransfer.StringSelection; +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Scanner; + +public class CustomFileReader { + private static final String FILE_PATH = "src/main/resources/custom_file_reader/File_for_CustomFileReader_Task.txt"; + private static final String ERROR_MSG = "Something went wrong: can't find the file or can't read it"; + +// BufferedReader + public void run1() { + try (BufferedReader reader = new BufferedReader(new FileReader(FILE_PATH))) { + String s; + while ((s = reader.readLine()) != null) { + System.out.println(removeDotsAndCommas(s)); + } + + } catch (Exception e) { + System.out.println(ERROR_MSG); + } + + } + +// Scanner + public void run2() { + try (Scanner scanner = new Scanner(new File(FILE_PATH))) { + String s; + while (scanner.hasNextLine()) { + s = scanner.nextLine(); + System.out.println(removeDotsAndCommas(s)); + } + + } catch (IOException e) { + System.out.println(ERROR_MSG); + } + + } + +// NIO + public void run3() { + Path path = Paths.get(FILE_PATH); + try (BufferedReader reader = Files.newBufferedReader(path)){ + String s; + while ((s = reader.readLine()) != null){ + System.out.println(removeDotsAndCommas(s)); + } + } catch (IOException e) { + System.out.println(ERROR_MSG); + } + + } + + + + + private String removeDotsAndCommas (String s) { + return s.replaceAll("[,.]", ""); + } + +} diff --git a/src/main/java/homework_4/custom_file_reader/Main.java b/src/main/java/homework_4/custom_file_reader/Main.java new file mode 100644 index 00000000..75dd9a6d --- /dev/null +++ b/src/main/java/homework_4/custom_file_reader/Main.java @@ -0,0 +1,12 @@ +package homework_4.custom_file_reader; + +public class Main { + public static void main(String[] args) { + CustomFileReader customFileReader = new CustomFileReader(); + customFileReader.run1(); + customFileReader.run2(); + customFileReader.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..f3584ebe --- /dev/null +++ b/src/main/java/homework_4/singleton/Main.java @@ -0,0 +1,7 @@ +package homework_4.singleton; + +public class Main { + public static void main(String[] args) { + + } +} 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..82cd4f3c --- /dev/null +++ b/src/main/java/homework_4/singleton/Singleton.java @@ -0,0 +1,13 @@ +package homework_4.singleton; + +public class Singleton { + + private static Singleton instance = new Singleton(); + private Singleton() { + + } + public static Singleton getInstance() { + return instance; + } + +} diff --git a/src/main/resources/custom_file_reader/File_for_CustomFileReader_Task.txt b/src/main/resources/custom_file_reader/File_for_CustomFileReader_Task.txt new file mode 100644 index 00000000..f0d429cb --- /dev/null +++ b/src/main/resources/custom_file_reader/File_for_CustomFileReader_Task.txt @@ -0,0 +1,5 @@ +qweqwe|, +|...fasdfsdf|,|.|, +aeaf;elkfjvna;ewlkfj +xcvbsdfjk|...,,, +...,,, \ No newline at end of file diff --git a/src/main/resources/custom_file_reader/File_for_CustomFileReader_Test.txt b/src/main/resources/custom_file_reader/File_for_CustomFileReader_Test.txt new file mode 100644 index 00000000..92ca8475 --- /dev/null +++ b/src/main/resources/custom_file_reader/File_for_CustomFileReader_Test.txt @@ -0,0 +1,4 @@ +qweqwe| +|fasdfsdf||| +aeaf;elkfjvna;ewlkfj +xcvbsdfjk| diff --git a/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java b/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java new file mode 100644 index 00000000..fe8d6414 --- /dev/null +++ b/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java @@ -0,0 +1,50 @@ +package homework_4.custom_file_reader; + +import base.UnitBase; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; + +public class CustomFileReaderTest extends UnitBase { + private static final String FILE_PATH = "src/main/resources/custom_file_reader/File_for_CustomFileReader_Test.txt"; + Path path = Paths.get(FILE_PATH); + CustomFileReader customFileReader = new CustomFileReader(); + + + @Test + public void run1Test() { + customFileReader.run1(); + try { + Assertions.assertEquals(Files.readAllLines(path), Arrays.asList(getOutputLines())); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void run2Test() { + customFileReader.run2(); + try { + Assertions.assertEquals(Files.readAllLines(path), Arrays.asList(getOutputLines())); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void run3Test() { + customFileReader.run3(); + try { + Assertions.assertEquals(Files.readAllLines(path), Arrays.asList(getOutputLines())); + } catch (IOException e) { + e.printStackTrace(); + } + } + + +} diff --git a/src/test/java/homework_4/singleton/SingletonTest.java b/src/test/java/homework_4/singleton/SingletonTest.java new file mode 100644 index 00000000..eb09906b --- /dev/null +++ b/src/test/java/homework_4/singleton/SingletonTest.java @@ -0,0 +1,18 @@ +package homework_4.singleton; + +import base.UnitBase; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class SingletonTest extends UnitBase { + + + @Test + public void SingletonMainTest (){ + Singleton singleton1 = Singleton.getInstance(); + Singleton singleton2 = Singleton.getInstance(); + Assertions.assertEquals(singleton1, singleton2); + Assertions.assertSame(singleton1, singleton2); + } + +} From cbcc3210c96d1164cd7af96c131609a7ce32eb1f Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Tue, 31 Aug 2021 18:07:21 +0700 Subject: [PATCH 12/15] HW_4 2nd commit (added Custom_Annotation task) --- .../homework_4/custom_annotation/Guitar.java | 53 +++++++++++++++++++ .../custom_annotation/GuitarDefault.java | 18 +++++++ .../homework_4/custom_annotation/Main.java | 5 +- .../custom_annotation/GuitarTest.java | 22 ++++++++ 4 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 src/main/java/homework_4/custom_annotation/Guitar.java create mode 100644 src/main/java/homework_4/custom_annotation/GuitarDefault.java create mode 100644 src/test/java/homework_4/custom_annotation/GuitarTest.java diff --git a/src/main/java/homework_4/custom_annotation/Guitar.java b/src/main/java/homework_4/custom_annotation/Guitar.java new file mode 100644 index 00000000..91192bf4 --- /dev/null +++ b/src/main/java/homework_4/custom_annotation/Guitar.java @@ -0,0 +1,53 @@ +package homework_4.custom_annotation; + + +@GuitarDefault +public class Guitar { + private String model; + private String manufacturer; + private Integer yearOfManufacture; + private Integer serialNumber; + + public Guitar() { + GuitarDefault gD = this.getClass().getAnnotation(GuitarDefault.class); + this.model = gD.model(); + this.manufacturer = gD.manufacturer(); + this.yearOfManufacture = gD.yearOfManufacture(); + this.serialNumber = gD.serialNumber(); + + } + + public Guitar(String model, String manufacturer, Integer yearOfManufacture, Integer serialNumber) { + GuitarDefault gD = this.getClass().getAnnotation(GuitarDefault.class); + if (model == null || model.isEmpty()) { + this.model = gD.model(); + } else { + this.model = model; + } + + if (manufacturer == null || manufacturer.isEmpty()) { + this.manufacturer = gD.manufacturer(); + } else { + this.manufacturer = manufacturer; + } + + if (yearOfManufacture == null || yearOfManufacture <= 1200) { + this.yearOfManufacture = gD.yearOfManufacture(); + } else { + this.yearOfManufacture = yearOfManufacture; + } + + if (serialNumber == null || serialNumber < 0) { + this.serialNumber = gD.serialNumber(); + } else { + this.serialNumber = serialNumber; + } + + } + + public String toString() { + String s = "Model of guitar: " + model + "; Manufacturer: " + manufacturer + "; year: " + yearOfManufacture + "; S/N: " + serialNumber; + return s; + } + +} diff --git a/src/main/java/homework_4/custom_annotation/GuitarDefault.java b/src/main/java/homework_4/custom_annotation/GuitarDefault.java new file mode 100644 index 00000000..72ed1e09 --- /dev/null +++ b/src/main/java/homework_4/custom_annotation/GuitarDefault.java @@ -0,0 +1,18 @@ +package homework_4.custom_annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.time.DayOfWeek; +import java.time.Year; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) + +public @interface GuitarDefault { + String manufacturer() default "A&M guitars"; + String model() default "Sophia"; + int yearOfManufacture() default 2015; + int serialNumber() default 101; +} diff --git a/src/main/java/homework_4/custom_annotation/Main.java b/src/main/java/homework_4/custom_annotation/Main.java index e2448472..d21dd73f 100644 --- a/src/main/java/homework_4/custom_annotation/Main.java +++ b/src/main/java/homework_4/custom_annotation/Main.java @@ -2,6 +2,9 @@ public class Main { public static void main(String[] args) { - + Guitar guitar1 = new Guitar(); + System.out.println(guitar1); + Guitar guitar2 = new Guitar("Mh-250", "ESP-LTD", 2004, 719); + System.out.println(guitar2); } } diff --git a/src/test/java/homework_4/custom_annotation/GuitarTest.java b/src/test/java/homework_4/custom_annotation/GuitarTest.java new file mode 100644 index 00000000..39e70292 --- /dev/null +++ b/src/test/java/homework_4/custom_annotation/GuitarTest.java @@ -0,0 +1,22 @@ +package homework_4.custom_annotation; + +import base.UnitBase; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class GuitarTest extends UnitBase { + private static final String GUITAR_WITH_ANNOTATION = "Model of guitar: Sophia; Manufacturer: A&M guitars; year: 2015; S/N: 101"; + private static final String GUITAR_FOR_TEST = "Model of guitar: Mh-250; Manufacturer: ESP-LTD; year: 2004; S/N: 719"; + + @Test + public void AnnotationTest () { + Guitar annotationGuitar = new Guitar(); + Assertions.assertEquals(GUITAR_WITH_ANNOTATION, annotationGuitar.toString()); + } + + @Test + public void CorrectGuitarTest () { + Guitar correctGuitar = new Guitar("Mh-250", "ESP-LTD", 2004, 719); + Assertions.assertEquals(GUITAR_FOR_TEST, correctGuitar.toString()); + } +} From b1f0d283173ebfaf43bc2ab8ca2a6de760a62f17 Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Thu, 2 Sep 2021 18:46:06 +0700 Subject: [PATCH 13/15] HW_4 3rd commit (added changes to README.md) --- README.md | 7 +++++++ .../java/homework_4/custom_annotation/GuitarDefault.java | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0f97c3f4..c067ceb1 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,13 @@ | HW_3.1 | [Traffic Light Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_2/traffic_light) | Tests for "Traffic Light" Application| | HW_3.2 | [Pyramid Printer Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_2/pyramid_printer) | Tests for "Pyramid Printer" Application | | HW_3.3 | [Random Chars Table Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_2/random_chars_table) | Tests for "Random Chars Table" Application| +| HW_4.1 | [Custom_File_Reader](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/homework_4/custom_file_reader) | Custom_File_Reader task| +| HW_4.1_Tests | [Custom_File_Reader Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_4/custom_file_reader) | Tests for Custom_File_Reader| +| HW_4.2 | [Singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/homework_4/singleton) | Singleton task| +| HW_4.2_Tests | [Singleton Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_4/singleton) | Tests for Singleton| +| HW_4.3 | [Custom_Annotation](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/homework_4/custom_annotation) | Custom_Annotation task| +| HW_4.3_Tests | [Custom_Annotation Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_4/custom_annotation) | Tests for Custom_Annotation | + [Link to my codingbat result page](https://codingbat.com/done?user=zarp1986@gmail.com&tag=4480593357) diff --git a/src/main/java/homework_4/custom_annotation/GuitarDefault.java b/src/main/java/homework_4/custom_annotation/GuitarDefault.java index 72ed1e09..47bb5845 100644 --- a/src/main/java/homework_4/custom_annotation/GuitarDefault.java +++ b/src/main/java/homework_4/custom_annotation/GuitarDefault.java @@ -4,9 +4,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import java.time.DayOfWeek; -import java.time.Year; +//https://skillbox.ru/media/base/kak-napisat-annotatsiyu-na-java-za-5-shagov/ +//https://web-shpargalka.ru/java-annotacii-zachem-oni-nuzhny.php @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) From 1021558da8316ae8430e9c7e46c2822ea57250a8 Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Sun, 19 Sep 2021 22:23:01 +0300 Subject: [PATCH 14/15] HW_5 1st commit --- README.md | 8 +- build.gradle | 1 + .../CustomRegexMatcher.java | 33 +++++++ .../homework_5/custom_regex_matcher/Main.java | 7 ++ .../java/homework_5/power_of_number/Main.java | 7 ++ .../power_of_number/PowerOfNumber.java | 49 +++++++++++ .../CustomRegexMatcherTest.java | 86 +++++++++++++++++++ .../power_of_number/PowerOfNumberTest.java | 63 ++++++++++++++ 8 files changed, 252 insertions(+), 2 deletions(-) create mode 100644 src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java create mode 100644 src/main/java/homework_5/custom_regex_matcher/Main.java create mode 100644 src/main/java/homework_5/power_of_number/Main.java create mode 100644 src/main/java/homework_5/power_of_number/PowerOfNumber.java create mode 100644 src/test/java/homework_5/custom_regex_matcher/CustomRegexMatcherTest.java create mode 100644 src/test/java/homework_5/power_of_number/PowerOfNumberTest.java diff --git a/README.md b/README.md index c067ceb1..b383b1ec 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ | HW_1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | | HW_2.1 | [Traffic Light](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/traffic_light) | The app that returns the color of the traffic light depending on the number of seconds from the beginning of the day | | HW_2.2 | [Pyramid Printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/pyramid_printer) | The app that "builds" a pyramid with the given base | -| HW_2.3 | [Random Chars Table](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/random_chars_table) | The app that "builds" a table of chars, end print the letters wich meet a given strategy (even/odd)| +| HW_2.3 | [Random Chars Table](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/Homework_2/random_chars_table) | The app that "builds" a table of chars, end print the letters which meet a given strategy (even/odd)| | HW_3 | [ImmutableClass](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/homework_3) | ImmutableClass (MyImmutableElectricGuitarESP class)| | HW_3.1 | [Traffic Light Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_2/traffic_light) | Tests for "Traffic Light" Application| | HW_3.2 | [Pyramid Printer Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_2/pyramid_printer) | Tests for "Pyramid Printer" Application | @@ -18,8 +18,12 @@ | HW_4.2_Tests | [Singleton Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_4/singleton) | Tests for Singleton| | HW_4.3 | [Custom_Annotation](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/homework_4/custom_annotation) | Custom_Annotation task| | HW_4.3_Tests | [Custom_Annotation Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_4/custom_annotation) | Tests for Custom_Annotation | +| HW_5.1 | [Power Of Number](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/homework_5/power_of_number) | Power Of Number task| +| HW_5.1_Tests | [Power Of Number Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_5/power_of_number) | Tests for Power Of Number task| +| HW_5.2 | [Custom Regex Matcher](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/main/java/homework_5/custom_regex_matcher) | Custom Regex Matcher task| +| HW_5.2_Tests | [Custom Regex Matcher Tests](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/ZaytsevArtem/src/test/java/homework_5/custom_regex_matcher) | Tests for Custom Regex Matcher task| [Link to my codingbat result page](https://codingbat.com/done?user=zarp1986@gmail.com&tag=4480593357) -[Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) +[Link to markdown guide](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) diff --git a/build.gradle b/build.gradle index 833e2769..f1be108b 100644 --- a/build.gradle +++ b/build.gradle @@ -14,6 +14,7 @@ dependencies { implementation 'junit:junit:4.12' 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 { diff --git a/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java b/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java new file mode 100644 index 00000000..9552fec5 --- /dev/null +++ b/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java @@ -0,0 +1,33 @@ +package homework_5.custom_regex_matcher; + +import java.util.Scanner; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class CustomRegexMatcher { + private static final String GREETING = "Enter the car's number:"; +// the expression on the line below (with Russian characters) worked correctly, but then stopped working correctly. I do not know why: +// private static final String REGEX = "([ABCEHKMOPTXYabcehkmoptxy]|[АВЕКМНОРСТУХавекмнорстух])\\d{3}([ABCEHKMOPTXYabcehkmoptxy]|[АВЕКМНОРСТУХавекмнорстух]){2}\\d{2,3}"; + private static final String REGEX = "[ABCEHKMOPTXYabcehkmoptxy]\\d{3}[ABCEHKMOPTXYabcehkmoptxy]{2}\\d{2,3}"; + private boolean matchingToRegex = false; + + public void run() { + System.out.println(GREETING); + readValidInput(); + System.out.println(matchingToRegex); + + } + + private void readValidInput() { + try (Scanner scanner = new Scanner(System.in)) { + String s = scanner.nextLine(); + Pattern pattern = Pattern.compile(REGEX); + Matcher matcher = pattern.matcher(s); + if (matcher.find()) { + matchingToRegex = true; + } + } + + } + +} diff --git a/src/main/java/homework_5/custom_regex_matcher/Main.java b/src/main/java/homework_5/custom_regex_matcher/Main.java new file mode 100644 index 00000000..f8b52c06 --- /dev/null +++ b/src/main/java/homework_5/custom_regex_matcher/Main.java @@ -0,0 +1,7 @@ +package homework_5.custom_regex_matcher; + +public class Main { + public static void main(String[] args) { + new CustomRegexMatcher().run(); + } +} diff --git a/src/main/java/homework_5/power_of_number/Main.java b/src/main/java/homework_5/power_of_number/Main.java new file mode 100644 index 00000000..930f2040 --- /dev/null +++ b/src/main/java/homework_5/power_of_number/Main.java @@ -0,0 +1,7 @@ +package homework_5.power_of_number; + +public class Main { + public static void main(String[] args) { + new PowerOfNumber().run(); + } +} diff --git a/src/main/java/homework_5/power_of_number/PowerOfNumber.java b/src/main/java/homework_5/power_of_number/PowerOfNumber.java new file mode 100644 index 00000000..6c40d126 --- /dev/null +++ b/src/main/java/homework_5/power_of_number/PowerOfNumber.java @@ -0,0 +1,49 @@ +package homework_5.power_of_number; + +import java.util.Scanner; + +public class PowerOfNumber { + private static final String GREETING = "Enter two non-negative integers (the number and the desired power for it), split with blank:"; + private static final String ERROR_MSG = "Only 2 non-negative integers are allowed!"; + private int a, b; + private boolean inputIsValid = true; + + public void run(){ + System.out.println(GREETING); + readValidInput(); + if (inputIsValid) { + int res = powerOfInt(a, b); + System.out.println(res); + } + + } + + private void readValidInput() { + try (Scanner scanner = new Scanner(System.in)) { + String s = scanner.nextLine(); + if (s.matches("\\d+\\s\\d+")) { + a = Integer.parseInt(s.split("\\s")[0]); + b = Integer.parseInt(s.split("\\s")[1]); + if (a < 0 || b < 0) { + throw new IllegalArgumentException(); + } + } else { + throw new IllegalArgumentException(); + } + } + catch (RuntimeException e){ + System.out.println(ERROR_MSG); + inputIsValid = false; + } + + } + + private int powerOfInt(int n, int pow) { + if (pow == 0) { + return 1; + } + return n * powerOfInt(n, pow - 1); + + } + +} diff --git a/src/test/java/homework_5/custom_regex_matcher/CustomRegexMatcherTest.java b/src/test/java/homework_5/custom_regex_matcher/CustomRegexMatcherTest.java new file mode 100644 index 00000000..836d148e --- /dev/null +++ b/src/test/java/homework_5/custom_regex_matcher/CustomRegexMatcherTest.java @@ -0,0 +1,86 @@ +package homework_5.custom_regex_matcher; + +import base.UnitBase; +import org.junit.jupiter.api.Assertions; +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; + +public class CustomRegexMatcherTest extends UnitBase { + private final String GREETING = "Enter the car's number:"; + CustomRegexMatcher customRegexMatcher = new CustomRegexMatcher(); + + /* + @ParameterizedTest + @MethodSource ("rightRussianCases") + public void givenRightCarNumbers_whenRussian_thenTrueResult (String input, String expected) { + setInput(input); + customRegexMatcher.run(); + getOutput(); + removeFromOutput(GREETING); + Assertions.assertEquals(expected, getOutputLines() [0]); + + } + + static Stream rightRussianCases() { + return Stream.of( + Arguments.of("Р386АВ14", "true"), + Arguments.of("Р386ав114", "true"), + Arguments.of("Р386Ав14", "true"), + Arguments.of("О770ЕХ14", "true"), + Arguments.of("о770ЕХ14", "true"), + Arguments.of("о770ех114", "true") + ); + } + */ + + @ParameterizedTest + @MethodSource ("rightEnglishCases") + public void givenRightCarNumbers_whenEnglish_thenTrueResult (String input, String expected) { + setInput(input); + customRegexMatcher.run(); + getOutput(); + removeFromOutput(GREETING); + Assertions.assertEquals(expected, getOutputLines() [0]); + + } + + static Stream rightEnglishCases() { + return Stream.of( + Arguments.of("P386AB14", "true"), + Arguments.of("p386ab114", "true"), + Arguments.of("P386Ab14", "true"), + Arguments.of("O770EX14", "true"), + Arguments.of("o770Ex14", "true"), + Arguments.of("o770ex114", "true") + ); + } + + @ParameterizedTest + @MethodSource ("wrongRussianAndEnglishCases") + public void givenWrongCarNumbers_whenEnglishAndRussian_thenFalseResult (String input, String expected) { + setInput(input); + customRegexMatcher.run(); + getOutput(); + removeFromOutput(GREETING); + Assertions.assertEquals(expected, getOutputLines() [0]); + + } + + static Stream wrongRussianAndEnglishCases() { + return Stream.of( + Arguments.of("G386AB14", "false"), + Arguments.of("п386ab114", "false"), + Arguments.of("P386Ав1114", "false"), + Arguments.of("O770EX4", "false"), + Arguments.of("o770Ex", "false"), + Arguments.of("GS386AB14", "false"), + Arguments.of("G386ABs14", "false"), + Arguments.of("o77чex114", "false") + ); + } + + +} diff --git a/src/test/java/homework_5/power_of_number/PowerOfNumberTest.java b/src/test/java/homework_5/power_of_number/PowerOfNumberTest.java new file mode 100644 index 00000000..d107e7ac --- /dev/null +++ b/src/test/java/homework_5/power_of_number/PowerOfNumberTest.java @@ -0,0 +1,63 @@ +package homework_5.power_of_number; + +import base.UnitBase; +import org.junit.jupiter.api.Assertions; +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; + +public class PowerOfNumberTest extends UnitBase { + private final String GREETING = "Enter two non-negative integers (the number and the desired power for it), split with blank:"; + private final String ERROR_MSG = "Only 2 non-negative integers are allowed!"; + PowerOfNumber powerOfNumber = new PowerOfNumber(); + + @ParameterizedTest + @MethodSource ("rightCases") + public void givenRightInt_whenOk_thenCalculatedResults (String input, String expected) { + setInput(input); + powerOfNumber.run(); + getOutput(); + removeFromOutput(GREETING); + Assertions.assertEquals(expected, getOutputLines() [0]); + } + + static Stream rightCases() { + return Stream.of( + Arguments.of("2 2", "4"), + Arguments.of("3 3", "27"), + Arguments.of("0 0", "1"), + Arguments.of("5 0", "1"), + Arguments.of("0 5", "0"), + Arguments.of("1 1", "1") + ); + } + + @ParameterizedTest + @MethodSource ("wrongCases") + public void givenWrongInput_whenOk_thenErrorMessage (String input) { + setInput(input); + powerOfNumber.run(); + getOutput(); + removeFromOutput(GREETING); + Assertions.assertEquals(ERROR_MSG, getOutputLines() [0]); + } + + static Stream wrongCases() { + return Stream.of( + Arguments.of(""), + Arguments.of(" "), + Arguments.of("2 b"), + Arguments.of("a 2"), + Arguments.of("2 2"), + Arguments.of("3 3 "), + Arguments.of("-1 0"), + Arguments.of("5 -0"), + Arguments.of("3.5 1"), + Arguments.of("1 1.5") + + ); + } + +} From 50d7637e8e61f821b55a0c3deefe33c41df1f57a Mon Sep 17 00:00:00 2001 From: Zaytsev Artem Date: Tue, 28 Sep 2021 02:30:19 +0300 Subject: [PATCH 15/15] HW_2. Commit was created after working on bugs. --- .../java/homework_2/pyramid_printer/Main.java | 1 + .../pyramid_printer/PyramidPrinter.java | 43 ++++---- .../homework_2/random_chars_table/Main.java | 38 +------ .../random_chars_table/RandomCharsTable.java | 98 ++++++++++--------- .../java/homework_2/traffic_light/Main.java | 2 + .../traffic_light/TrafficLight.java | 37 ++++--- ...ableParametrizedTest_IT_DOES_NOT_WORK.java | 42 -------- .../RandomCharsTableTest.java | 7 -- 8 files changed, 97 insertions(+), 171 deletions(-) delete mode 100644 src/test/java/homework_2/random_chars_table/RandomCharsTableParametrizedTest_IT_DOES_NOT_WORK.java diff --git a/src/main/java/homework_2/pyramid_printer/Main.java b/src/main/java/homework_2/pyramid_printer/Main.java index 5e4d77f5..74e81c55 100644 --- a/src/main/java/homework_2/pyramid_printer/Main.java +++ b/src/main/java/homework_2/pyramid_printer/Main.java @@ -5,4 +5,5 @@ public static void main(String[] args) { new PyramidPrinter().run(); } + } diff --git a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java index 24b2d5b2..74f15d91 100644 --- a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -3,40 +3,39 @@ import java.util.Scanner; public class PyramidPrinter { + protected final String ERROR_MSG = "Only 1 non-negative integer is allowed as passed parameter! Please, try again"; + int base; - public void run(){ - Scanner scanner = new Scanner(System.in); + public void run() { System.out.println("Enter the base of the pyramid, valid value is integer:"); + readAndValidateInput(); + drawPyramid(base); - //reading the value of pyramid's base - try { - int base = scanner.nextInt(); - if (base < 0) { - throw new Exception(); - } - drawingThePyramid(base); - } - catch (Exception e){ - System.out.println("Only 1 non-negative integer is allowed as passed parameter! Please, try again"); - return; - } - //adding finally block (28.07.2021) - finally { - scanner.close(); - } } - protected void drawingThePyramid(int base){ - if (base == 0){ - System.out.println(""); - return; + protected void readAndValidateInput() { + try (Scanner scanner = new Scanner(System.in)){ + String s = scanner.nextLine(); + if (s.matches("\\d+")) { + base = Integer.parseInt(s); + } else { + throw new IllegalArgumentException(); + } + } + catch (IllegalArgumentException e){ + System.out.println(ERROR_MSG); + } + } + + protected void drawPyramid(int base){ for (int i = 0; i < base; 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 index 9bc28a08..580b2df4 100644 --- a/src/main/java/homework_2/random_chars_table/Main.java +++ b/src/main/java/homework_2/random_chars_table/Main.java @@ -1,45 +1,9 @@ package homework_2.random_chars_table; -import java.util.HashSet; - public class Main { public static void main(String[] args) { -// initializeForTests(); new RandomCharsTable().run(); -// isValidLastStringForEven("Even letters - "); - } -// static HashSet validLetters = new HashSet<>(); -// static HashSet evenLetters = new HashSet<>(); -// static HashSet oddLetters = new HashSet<>(); -// -// public static void isValidLastStringForEven(String str) { -// String str1 = new String(""); -// String str2 = new String(""); -// str1 = str.replaceAll("(Even letters - )|(,\\s*)", ""); -// str2 = str.replaceAll("(Even letters -)|(\\s+)|(,+)", ""); -// System.out.print("Last string1 after replace operation:" + str1); -// System.out.print("Last string2 after replace operation:" + str2); -// System.out.println("------------------"); -// for (char c : str.toCharArray()) { -// if (oddLetters.contains(c)) { -//// return false; -// } -// } -// } -// public static void initializeForTests (){ -// for (int i = 65; i <= 90; i++){ -// validLetters.add((char) i); -// if (i % 2 == 0) { -// evenLetters.add((char) i); -// } -// else { -// oddLetters.add((char) i); -// } -// } -//// System.out.println("Valid letters: " + validLetters.toString()); -//// System.out.println("Even letters: " + evenLetters.toString()); -//// System.out.println("Odd letters: " + oddLetters.toString()); -// } + } } 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 f968f53a..ddcf2824 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -6,59 +6,61 @@ public class RandomCharsTable { protected static final int MIN_ASCII_CODE = 65; protected static final int MAX_ASCII_CODE = 90; + protected static final String ERR_MSG = "Passed parameters should match the format [positive integer] [positive integer] [even|odd]"; + int cols = 0; int rows = 0; + String strategy = ""; + boolean exceptionWasThrown; public void run(){ - System.out.println("Enter the dimensions of matrix and required strategy : two integers and required strategy - even|odd, delimiter - space character))"); + readAndValidateInput(); + if (exceptionWasThrown) { + System.out.println(ERR_MSG); + } else { + int [][] matrix = createCharsTable(cols, rows); + printCharsTable(matrix, strategy); + } - Scanner scanner = new Scanner(System.in); - String inString = scanner.nextLine(); - String tempStr = ""; - char c; - int cols =0; int rows =0; - String strategy = ""; - int paramCount=0; - // parse of input procedure - try { - for (int i = 0; i < inString.length(); i++) { - c = inString.charAt(i); - if (c != ' ') {//|| i == inString.length() - 1) - tempStr = tempStr + c; - } - else { - if(paramCount == 0) { - cols = Integer.parseInt(tempStr); - paramCount++; - tempStr = ""; - continue; + } + + protected void readAndValidateInput (){ + try (Scanner scanner = new Scanner(System.in)) { + int paramCount = 0; + String tempStr = ""; + String inString = scanner.nextLine(); + if (inString.matches("\\d+\\s\\d+\\s[odevn]{3,4}")){ + for (int i = 0; i < inString.length(); i++) { + char c = inString.charAt(i); + if (c != ' ') { + tempStr = tempStr + c; } - if(paramCount == 1) { - rows = Integer.parseInt(tempStr); - paramCount++; - tempStr = ""; - continue; + else { + if (paramCount == 0) { + cols = Integer.parseInt(tempStr); + paramCount++; + tempStr = ""; + continue; + } + if (paramCount == 1) { + rows = Integer.parseInt(tempStr); + paramCount++; + tempStr = ""; + } } } } + else { + throw new IllegalArgumentException(); + } strategy = tempStr; - if ((!strategy.equals("even") && !strategy.equals("odd")) || cols <=0 || rows <= 0){ - throw new Exception(); + if ((!strategy.equals("even") && !strategy.equals("odd")) || cols <= 0 || rows <= 0) { + throw new IllegalArgumentException(); } - } catch (Exception e) { - System.out.println("Passed parameters should match the format [positive integer] [positive integer] [even|odd]"); - return; - } - //adding finally block (28.07.2021) - finally { - scanner.close(); + } catch (RuntimeException e) { + exceptionWasThrown = true; } - // if everything valid with input - create and print result - int [][] matrix = createCharsTable(cols, rows); - printCharsTable(matrix, strategy); - }//end of run; - - + } public int[][] createCharsTable(int col, int row){ int [][] matrix = new int[col][row]; @@ -67,16 +69,16 @@ public int[][] createCharsTable(int col, int row){ matrix [i][j] = rnd(MIN_ASCII_CODE, MAX_ASCII_CODE); } } -// System.out.println(matrix.length + " " + matrix[0].length); return matrix; + } public void printCharsTable (int[][] matrix, String strategy){ - String tempStr = ""; + String tempStr; boolean evStrat = strategy.equals("even"); String stratHeader = (evStrat) ? "Even letters - " : "Odd letters - "; String stratRes = ""; - for (int i = 0; i < matrix.length; i++ ){ + for (int i = 0; i < matrix.length; i++ ) { tempStr = ""; for (int j = 0; j < matrix[0].length; j++){ tempStr = tempStr + (char) matrix[i][j] + "|"; @@ -89,13 +91,15 @@ public void printCharsTable (int[][] matrix, String strategy){ } System.out.println("|" + tempStr); } - stratRes = (stratRes.length() >1) ? stratRes.substring(0, stratRes.length()-1) : stratRes; + stratRes = (stratRes.length() > 1) ? stratRes.substring(0, stratRes.length() - 1) : stratRes; System.out.println(stratHeader + stratRes); + } - public static int rnd(int min, int max) - { + public static int rnd(int min, int max) { max -= min; return (int) (Math.random() * ++max) + min; + } + } diff --git a/src/main/java/homework_2/traffic_light/Main.java b/src/main/java/homework_2/traffic_light/Main.java index fa033081..792e8ea9 100644 --- a/src/main/java/homework_2/traffic_light/Main.java +++ b/src/main/java/homework_2/traffic_light/Main.java @@ -3,5 +3,7 @@ public class Main { public static void main(String[] args) { new TrafficLight().run(); + } + } diff --git a/src/main/java/homework_2/traffic_light/TrafficLight.java b/src/main/java/homework_2/traffic_light/TrafficLight.java index 6690faf3..f554c012 100644 --- a/src/main/java/homework_2/traffic_light/TrafficLight.java +++ b/src/main/java/homework_2/traffic_light/TrafficLight.java @@ -8,27 +8,33 @@ public class TrafficLight { protected static final String GREEN_COLOUR = "\u001B[32m"; protected static final String YELLOW_COLOUR = "\u001B[33m"; protected static final String RESET_COLOUR = "\u001B[0m"; + protected static final String ERR_MSG = "Only 1 non-negative integer is allowed as passed parameter! Please, try again"; + int seconds; + boolean exceptionWasThrown; public void run(){ - Scanner scanner = new Scanner(System.in); System.out.println("Enter the time (valid range is from 0 to 86399 ):"); - int seconds = 0; - //reading the value of seconds - try { - seconds = scanner.nextInt(); - if (seconds < 0) { - throw new Exception(); - } + readAndValidateInput(); + if (exceptionWasThrown) { + System.out.println(ERR_MSG); + } else { showingTrafficLightColor(seconds); } - catch (Exception e){ - System.out.println("Only 1 non-negative integer is allowed as passed parameter! Please, try again"); - return; + + } + + protected void readAndValidateInput () throws RuntimeException { + try (Scanner scanner = new Scanner(System.in)) { + String s = scanner.nextLine(); + if (!s.matches("\\d+")) { + throw new RuntimeException(); + } + else seconds = Integer.parseInt(s); } - //adding finally block (28.07.2021) - finally { - scanner.close(); + catch (RuntimeException e){ + exceptionWasThrown = true; } + } protected void showingTrafficLightColor(int sec){ @@ -51,8 +57,7 @@ protected void showingTrafficLightColor(int sec){ res = RED_COLOUR + "RED" + RESET_COLOUR; } System.out.println(res); - } - + } } diff --git a/src/test/java/homework_2/random_chars_table/RandomCharsTableParametrizedTest_IT_DOES_NOT_WORK.java b/src/test/java/homework_2/random_chars_table/RandomCharsTableParametrizedTest_IT_DOES_NOT_WORK.java deleted file mode 100644 index 50704771..00000000 --- a/src/test/java/homework_2/random_chars_table/RandomCharsTableParametrizedTest_IT_DOES_NOT_WORK.java +++ /dev/null @@ -1,42 +0,0 @@ -package homework_2.random_chars_table; - -import base.UnitBase; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -@RunWith(value = Parameterized.class) -public class RandomCharsTableParametrizedTest_IT_DOES_NOT_WORK extends UnitBase { - protected final String GREET = "Enter the dimensions of matrix and required strategy : two integers and required strategy - even|odd, delimiter - space character))"; - protected final String HINT = "Passed parameters should match the format [positive integer] [positive integer] [even|odd]"; - private String input; - protected RandomCharsTable randomCharsTable = new RandomCharsTable(); - public RandomCharsTableParametrizedTest_IT_DOES_NOT_WORK(String input) { - this.input = input; - } - - @Parameterized.Parameters() - public static Iterable dataForTest() { - return Arrays.asList(new Object[][] { - {"0 1 odd"}, - {"0 1 even"}, - {"5 5 evenn"}, - {"3 5 add"}, - }); - } - - @Test - void givenBadValues_whenBad_thenHint (){ - setInput(input); - randomCharsTable.run(); - printOut(); - removeFromOutput(GREET); - assertEquals(HINT, getOutputLines()[0]); - - } - -} diff --git a/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java index c7dd1f16..1f56435d 100644 --- a/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java +++ b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java @@ -33,8 +33,6 @@ protected void initializeForTests (){ } } - - private boolean isValidCharTableDelimiters(String str, Character delimiterChar){ for (int i = 0; i < str.length(); i = i + 2) { if (str.charAt(i) != delimiterChar) { @@ -55,7 +53,6 @@ private boolean isValidCharTable(String[] strings, int rows, int cols){ return false; } currStr = currStr.replaceAll( "\\|+",""); -// if ( ((cols * 2) + 1 != currStr.length())){ if ( (cols != currStr.length())){ return false; } @@ -68,9 +65,7 @@ private boolean isValidCharTable(String[] strings, int rows, int cols){ return true; } - private boolean isValidLastStringForEven(String str){ -// str = str.replaceAll("(Even letters - )|(,\\s+)", ""); str = str.replaceAll("(Even letters -)|(\\s+)|(,+)", ""); for (char c : str.toCharArray()) { if (oddLetters.contains(c)){ @@ -80,7 +75,6 @@ private boolean isValidLastStringForEven(String str){ return true; } - private boolean isValidLastStringForOdd(String str){ str = str.replaceAll("(Odd letters -)|(\\s+)|(,+)", ""); for (char c : str.toCharArray()) { @@ -98,7 +92,6 @@ void given2_2_even_whenOk_thenOk (){ randomCharsTable.run(); printOut(); removeFromOutput(GREET); -// assertTrue(isValidCharTableDelimiters(getOutputLines()[1], '|')); assertTrue(isValidCharTable(getOutputLines(), 2, 2)); assertTrue(isValidLastStringForEven(getOutputLines()[getOutputLines().length-1]));