From 59e050b20b0da4535c3f157c47f5810c2e0f513e Mon Sep 17 00:00:00 2001 From: Anurag Agarwal Date: Sun, 12 Apr 2020 21:36:04 +0000 Subject: [PATCH] Java 11 migraiton: master-worker-pattern --- master-worker-pattern/pom.xml | 67 ++++++++++--------- .../java/com/iluwatar/masterworker/App.java | 50 +++++++------- .../com/iluwatar/masterworker/ArrayInput.java | 29 ++++---- .../masterworker/ArrayUtilityMethods.java | 20 +++--- .../java/com/iluwatar/masterworker/Input.java | 4 +- .../masterworker/system/MasterWorker.java | 2 +- .../systemmaster/ArrayTransposeMaster.java | 43 ++++++------ .../system/systemmaster/Master.java | 33 ++++----- .../systemworkers/ArrayTransposeWorker.java | 12 ++-- .../system/systemworkers/Worker.java | 12 ++-- .../iluwatar/masterworker/ArrayInputTest.java | 41 ++++++------ .../masterworker/ArrayUtilityMethodsTest.java | 14 ++-- .../ArrayTransposeMasterWorkerTest.java | 35 +++++++--- .../ArrayTransposeWorkerTest.java | 26 +++---- 14 files changed, 200 insertions(+), 188 deletions(-) diff --git a/master-worker-pattern/pom.xml b/master-worker-pattern/pom.xml index 9924d6a5a..26f4d70bb 100644 --- a/master-worker-pattern/pom.xml +++ b/master-worker-pattern/pom.xml @@ -22,38 +22,39 @@ THE SOFTWARE. --> - - 4.0.0 - - com.iluwatar - java-design-patterns - 1.23.0-SNAPSHOT - - master-worker-pattern - - - org.junit.jupiter - junit-jupiter-engine - test - + + 4.0.0 + + com.iluwatar + java-design-patterns + 1.23.0-SNAPSHOT + + master-worker-pattern + + + org.junit.jupiter + junit-jupiter-engine + test + - - - - org.apache.maven.plugins - maven-assembly-plugin - - - - - - com.iluwatar.masterworker.App - - - - - - - - + + + + org.apache.maven.plugins + maven-assembly-plugin + + + + + + com.iluwatar.masterworker.App + + + + + + + + diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/App.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/App.java index 547636066..592ba8c59 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/App.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/App.java @@ -34,27 +34,25 @@ import org.slf4j.LoggerFactory; /** *

The Master-Worker pattern is used when the problem at hand can be solved by - * dividing into - * multiple parts which need to go through the same computation and may need to be aggregated to get - * final result. Parallel processing is performed using a system consisting of a master and some - * number of workers, where a master divides the work among the workers, gets the result back from - * them and assimilates all the results to give final result. The only communication is between the - * master and the worker - none of the workers communicate among one another and the user only - * communicates with the master to get required job done.

+ * dividing into multiple parts which need to go through the same computation and may need to be + * aggregated to get final result. Parallel processing is performed using a system consisting of a + * master and some number of workers, where a master divides the work among the workers, gets the + * result back from them and assimilates all the results to give final result. The only + * communication is between the master and the worker - none of the workers communicate among one + * another and the user only communicates with the master to get required job done.

*

In our example, we have generic abstract classes {@link MasterWorker}, {@link Master} and - * {@link Worker} which - * have to be extended by the classes which will perform the specific job at hand (in this case - * finding transpose of matrix, done by {@link ArrayTransposeMasterWorker}, {@link - * ArrayTransposeMaster} and {@link ArrayTransposeWorker}). The Master class divides the work into - * parts to be given to the workers, collects the results from the workers and aggregates it when - * all workers have responded before returning the solution. The Worker class extends the Thread - * class to enable parallel processing, and does the work once the data has been received from the - * Master. The MasterWorker contains a reference to the Master class, gets the input from the App - * and passes it on to the Master. These 3 classes define the system which computes the result. We - * also have 2 abstract classes {@link Input} and {@link Result}, which contain the input data and - * result data respectively. The Input class also has an abstract method divideData which defines - * how the data is to be divided into segments. These classes are extended by {@link ArrayInput} and - * {@link ArrayResult}.

+ * {@link Worker} which have to be extended by the classes which will perform the specific job at + * hand (in this case finding transpose of matrix, done by {@link ArrayTransposeMasterWorker}, + * {@link ArrayTransposeMaster} and {@link ArrayTransposeWorker}). The Master class divides the work + * into parts to be given to the workers, collects the results from the workers and aggregates it + * when all workers have responded before returning the solution. The Worker class extends the + * Thread class to enable parallel processing, and does the work once the data has been received + * from the Master. The MasterWorker contains a reference to the Master class, gets the input from + * the App and passes it on to the Master. These 3 classes define the system which computes the + * result. We also have 2 abstract classes {@link Input} and {@link Result}, which contain the input + * data and result data respectively. The Input class also has an abstract method divideData which + * defines how the data is to be divided into segments. These classes are extended by {@link + * ArrayInput} and {@link ArrayResult}.

*/ public class App { @@ -68,12 +66,12 @@ public class App { */ public static void main(String[] args) { - ArrayTransposeMasterWorker mw = new ArrayTransposeMasterWorker(); - int rows = 10; - int columns = 20; - int[][] inputMatrix = ArrayUtilityMethods.createRandomIntMatrix(rows, columns); - ArrayInput input = new ArrayInput(inputMatrix); - ArrayResult result = (ArrayResult) mw.getResult(input); + var mw = new ArrayTransposeMasterWorker(); + var rows = 10; + var columns = 20; + var inputMatrix = ArrayUtilityMethods.createRandomIntMatrix(rows, columns); + var input = new ArrayInput(inputMatrix); + var result = (ArrayResult) mw.getResult(input); if (result != null) { ArrayUtilityMethods.printMatrix(inputMatrix); ArrayUtilityMethods.printMatrix(result.data); diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayInput.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayInput.java index cd03a0a21..c8e68f958 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayInput.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayInput.java @@ -25,6 +25,7 @@ package com.iluwatar.masterworker; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; /** * Class ArrayInput extends abstract class {@link Input} and contains data of type int[][]. @@ -37,12 +38,12 @@ public class ArrayInput extends Input { } static int[] makeDivisions(int[][] data, int num) { - int initialDivision = data.length / num; //equally dividing - int[] divisions = new int[num]; + var initialDivision = data.length / num; //equally dividing + var divisions = new int[num]; Arrays.fill(divisions, initialDivision); if (initialDivision * num != data.length) { - int extra = data.length - initialDivision * num; - int l = 0; + var extra = data.length - initialDivision * num; + var l = 0; //equally dividing extra among all parts while (extra > 0) { divisions[l] = divisions[l] + 1; @@ -58,22 +59,20 @@ public class ArrayInput extends Input { } @Override - public ArrayList divideData(int num) { + public List> divideData(int num) { if (this.data == null) { return null; } else { - int[] divisions = makeDivisions(this.data, num); - ArrayList result = new ArrayList(num); - int rowsDone = 0; //number of rows divided so far - for (int i = 0; i < num; i++) { - int rows = divisions[i]; + var divisions = makeDivisions(this.data, num); + var result = new ArrayList>(num); + var rowsDone = 0; //number of rows divided so far + for (var i = 0; i < num; i++) { + var rows = divisions[i]; if (rows != 0) { - int[][] divided = new int[rows][this.data[0].length]; - for (int j = 0; j < rows; j++) { - divided[j] = this.data[rowsDone + j]; - } + var divided = new int[rows][this.data[0].length]; + System.arraycopy(this.data, rowsDone, divided, 0, rows); rowsDone += rows; - ArrayInput dividedInput = new ArrayInput(divided); + var dividedInput = new ArrayInput(divided); result.add(dividedInput); } else { break; //rest of divisions will also be 0 diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java index 525bed003..5e695e5da 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/ArrayUtilityMethods.java @@ -47,8 +47,8 @@ public class ArrayUtilityMethods { if (a1.length != a2.length) { return false; } else { - boolean answer = false; - for (int i = 0; i < a1.length; i++) { + var answer = false; + for (var i = 0; i < a1.length; i++) { if (a1[i] == a2[i]) { answer = true; } else { @@ -69,8 +69,8 @@ public class ArrayUtilityMethods { if (m1.length != m2.length) { return false; } else { - boolean answer = false; - for (int i = 0; i < m1.length; i++) { + var answer = false; + for (var i = 0; i < m1.length; i++) { if (arraysSame(m1[i], m2[i])) { answer = true; } else { @@ -88,9 +88,9 @@ public class ArrayUtilityMethods { * @return it (int[][]). */ public static int[][] createRandomIntMatrix(int rows, int columns) { - int[][] matrix = new int[rows][columns]; - for (int i = 0; i < rows; i++) { - for (int j = 0; j < columns; j++) { + var matrix = new int[rows][columns]; + for (var i = 0; i < rows; i++) { + for (var j = 0; j < columns; j++) { //filling cells in matrix matrix[i][j] = RANDOM.nextInt(10); } @@ -104,9 +104,9 @@ public class ArrayUtilityMethods { public static void printMatrix(int[][] matrix) { //prints out int[][] - for (int i = 0; i < matrix.length; i++) { - for (int j = 0; j < matrix[0].length; j++) { - LOGGER.info(matrix[i][j] + " "); + for (var ints : matrix) { + for (var j = 0; j < matrix[0].length; j++) { + LOGGER.info(ints[j] + " "); } LOGGER.info(""); } diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/Input.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/Input.java index 6a957ae80..8d832f6c7 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/Input.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/Input.java @@ -23,7 +23,7 @@ package com.iluwatar.masterworker; -import java.util.ArrayList; +import java.util.List; /** * The abstract Input class, having 1 public field which contains input data, and abstract method @@ -40,5 +40,5 @@ public abstract class Input { this.data = data; } - public abstract ArrayList divideData(int num); + public abstract List> divideData(int num); } diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/MasterWorker.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/MasterWorker.java index 2b16cbf76..817fd65d3 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/MasterWorker.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/MasterWorker.java @@ -40,7 +40,7 @@ public abstract class MasterWorker { abstract Master setMaster(int numOfWorkers); - public Result getResult(Input input) { + public Result getResult(Input input) { this.master.doWork(input); return this.master.getFinalResult(); } diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/ArrayTransposeMaster.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/ArrayTransposeMaster.java index ffa64572c..9bfbf200e 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/ArrayTransposeMaster.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/ArrayTransposeMaster.java @@ -27,7 +27,8 @@ import com.iluwatar.masterworker.ArrayResult; import com.iluwatar.masterworker.system.systemworkers.ArrayTransposeWorker; import com.iluwatar.masterworker.system.systemworkers.Worker; import java.util.ArrayList; -import java.util.Enumeration; +import java.util.stream.Collectors; +import java.util.stream.IntStream; /** * Class ArrayTransposeMaster extends abstract class {@link Master} and contains definition of @@ -41,35 +42,33 @@ public class ArrayTransposeMaster extends Master { @Override ArrayList setWorkers(int num) { - ArrayList ws = new ArrayList(num); - for (int i = 0; i < num; i++) { - ws.add(new ArrayTransposeWorker(this, i + 1)); - //i+1 will be id - } - return ws; + //i+1 will be id + return IntStream.range(0, num) + .mapToObj(i -> new ArrayTransposeWorker(this, i + 1)) + .collect(Collectors.toCollection(() -> new ArrayList<>(num))); } @Override ArrayResult aggregateData() { // number of rows in final result is number of rows in any of obtained results from workers - int rows = ((ArrayResult) this.getAllResultData() - .get(this.getAllResultData().keys().nextElement())).data.length; - int columns = - 0; //number of columns is sum of number of columns in all results obtained from workers - for (Enumeration e = this.getAllResultData().keys(); e.hasMoreElements(); ) { - columns += ((ArrayResult) this.getAllResultData().get(e.nextElement())).data[0].length; + var allResultData = this.getAllResultData(); + var rows = ((ArrayResult) allResultData.elements().nextElement()).data.length; + var elements = allResultData.elements(); + var columns = 0; // columns = sum of number of columns in all results obtained from workers + while (elements.hasMoreElements()) { + columns += ((ArrayResult) elements.nextElement()).data[0].length; } - int[][] resultData = new int[rows][columns]; - int columnsDone = 0; //columns aggregated so far - for (int i = 0; i < this.getExpectedNumResults(); i++) { + var resultData = new int[rows][columns]; + var columnsDone = 0; //columns aggregated so far + var workers = this.getWorkers(); + for (var i = 0; i < this.getExpectedNumResults(); i++) { //result obtained from ith worker - int[][] work = - ((ArrayResult) this.getAllResultData().get(this.getWorkers().get(i).getWorkerId())).data; - for (int m = 0; m < work.length; m++) { + var worker = workers.get(i); + var workerId = worker.getWorkerId(); + var work = ((ArrayResult) allResultData.get(workerId)).data; + for (var m = 0; m < work.length; m++) { //m = row number, n = columns number - for (int n = 0; n < work[0].length; n++) { - resultData[m][columnsDone + n] = work[m][n]; - } + System.arraycopy(work[m], 0, resultData[m], columnsDone, work[0].length); } columnsDone += work[0].length; } diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java index 2466df256..6b20211f5 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java @@ -26,8 +26,9 @@ package com.iluwatar.masterworker.system.systemmaster; import com.iluwatar.masterworker.Input; import com.iluwatar.masterworker.Result; import com.iluwatar.masterworker.system.systemworkers.Worker; -import java.util.ArrayList; +import java.util.Dictionary; import java.util.Hashtable; +import java.util.List; /** * The abstract Master class which contains private fields numOfWorkers (number of workers), workers @@ -38,24 +39,24 @@ import java.util.Hashtable; public abstract class Master { private final int numOfWorkers; - private final ArrayList workers; + private final List workers; + private final Dictionary> allResultData; private int expectedNumResults; - private Hashtable allResultData; - private Result finalResult; + private Result finalResult; Master(int numOfWorkers) { this.numOfWorkers = numOfWorkers; this.workers = setWorkers(numOfWorkers); this.expectedNumResults = 0; - this.allResultData = new Hashtable(numOfWorkers); + this.allResultData = new Hashtable<>(numOfWorkers); this.finalResult = null; } - public Result getFinalResult() { + public Result getFinalResult() { return this.finalResult; } - Hashtable getAllResultData() { + Dictionary> getAllResultData() { return this.allResultData; } @@ -63,21 +64,21 @@ public abstract class Master { return this.expectedNumResults; } - ArrayList getWorkers() { + List getWorkers() { return this.workers; } - abstract ArrayList setWorkers(int num); + abstract List setWorkers(int num); - public void doWork(Input input) { + public void doWork(Input input) { divideWork(input); } - private void divideWork(Input input) { - ArrayList dividedInput = input.divideData(numOfWorkers); + private void divideWork(Input input) { + List> dividedInput = input.divideData(numOfWorkers); if (dividedInput != null) { this.expectedNumResults = dividedInput.size(); - for (int i = 0; i < this.expectedNumResults; i++) { + for (var i = 0; i < this.expectedNumResults; i++) { //ith division given to ith worker in this.workers this.workers.get(i).setReceivedData(this, dividedInput.get(i)); this.workers.get(i).run(); @@ -85,12 +86,12 @@ public abstract class Master { } } - public void receiveData(Result data, Worker w) { + public void receiveData(Result data, Worker w) { //check if can receive..if yes: collectResult(data, w.getWorkerId()); } - private void collectResult(Result data, int workerId) { + private void collectResult(Result data, int workerId) { this.allResultData.put(workerId, data); if (this.allResultData.size() == this.expectedNumResults) { //all data received @@ -98,5 +99,5 @@ public abstract class Master { } } - abstract Result aggregateData(); + abstract Result aggregateData(); } diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorker.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorker.java index 37d8ba005..3f2da0a0a 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorker.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorker.java @@ -41,12 +41,12 @@ public class ArrayTransposeWorker extends Worker { @Override ArrayResult executeOperation() { //number of rows in result matrix is equal to number of columns in input matrix and vice versa - ArrayInput arrayInput = (ArrayInput) this.getReceivedData(); - final int rows = arrayInput.data[0].length; - final int cols = arrayInput.data.length; - int[][] resultData = new int[rows][cols]; - for (int i = 0; i < cols; i++) { - for (int j = 0; j < rows; j++) { + var arrayInput = (ArrayInput) this.getReceivedData(); + final var rows = arrayInput.data[0].length; + final var cols = arrayInput.data.length; + var resultData = new int[rows][cols]; + for (var i = 0; i < cols; i++) { + for (var j = 0; j < rows; j++) { //flipping element positions along diagonal resultData[j][i] = arrayInput.data[i][j]; } diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/Worker.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/Worker.java index bfe226ee0..526299645 100644 --- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/Worker.java +++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemworkers/Worker.java @@ -35,7 +35,7 @@ import com.iluwatar.masterworker.system.systemmaster.Master; public abstract class Worker extends Thread { private final Master master; private final int workerId; - private Input receivedData; + private Input receivedData; Worker(Master master, int id) { this.master = master; @@ -47,23 +47,23 @@ public abstract class Worker extends Thread { return this.workerId; } - Input getReceivedData() { + Input getReceivedData() { return this.receivedData; } - public void setReceivedData(Master m, Input i) { + public void setReceivedData(Master m, Input i) { //check if ready to receive..if yes: this.receivedData = i; } - abstract Result executeOperation(); + abstract Result executeOperation(); - private void sendToMaster(Result data) { + private void sendToMaster(Result data) { this.master.receiveData(data, this); } public void run() { //from Thread class - Result work = executeOperation(); + var work = executeOperation(); sendToMaster(work); } } diff --git a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayInputTest.java b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayInputTest.java index b5820e2af..1d3c7f0bc 100644 --- a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayInputTest.java +++ b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayInputTest.java @@ -23,38 +23,39 @@ package com.iluwatar.masterworker; -import static org.junit.jupiter.api.Assertions.*; -import java.util.ArrayList; +import static com.iluwatar.masterworker.ArrayUtilityMethods.matricesSame; +import static org.junit.jupiter.api.Assertions.assertTrue; + import java.util.Random; import org.junit.jupiter.api.Test; /** -* Testing divideData method in {@link ArrayInput} class. -*/ + * Testing divideData method in {@link ArrayInput} class. + */ class ArrayInputTest { @Test void divideDataTest() { - int rows = 10; - int columns = 10; - int[][] inputMatrix = new int[rows][columns]; - Random rand = new Random(); - for (int i = 0; i < rows; i++) { - for (int j = 0; j < columns; j++) { + var rows = 10; + var columns = 10; + var inputMatrix = new int[rows][columns]; + var rand = new Random(); + for (var i = 0; i < rows; i++) { + for (var j = 0; j < columns; j++) { inputMatrix[i][j] = rand.nextInt(10); } } - ArrayInput i = new ArrayInput(inputMatrix); - ArrayList table = i.divideData(4); - int[][] division1 = new int[][] {inputMatrix[0], inputMatrix[1], inputMatrix[2]}; - int[][] division2 = new int[][] {inputMatrix[3], inputMatrix[4], inputMatrix[5]}; - int[][] division3 = new int[][] {inputMatrix[6], inputMatrix[7]}; - int[][] division4 = new int[][] {inputMatrix[8], inputMatrix[9]}; - assertTrue(ArrayUtilityMethods.matricesSame((int[][]) table.get(0).data, division1) - && ArrayUtilityMethods.matricesSame((int[][]) table.get(1).data, division2) - && ArrayUtilityMethods.matricesSame((int[][]) table.get(2).data, division3) - && ArrayUtilityMethods.matricesSame((int[][]) table.get(3).data, division4)); + var i = new ArrayInput(inputMatrix); + var table = i.divideData(4); + var division1 = new int[][]{inputMatrix[0], inputMatrix[1], inputMatrix[2]}; + var division2 = new int[][]{inputMatrix[3], inputMatrix[4], inputMatrix[5]}; + var division3 = new int[][]{inputMatrix[6], inputMatrix[7]}; + var division4 = new int[][]{inputMatrix[8], inputMatrix[9]}; + assertTrue(matricesSame(table.get(0).data, division1) + && matricesSame(table.get(1).data, division2) + && matricesSame(table.get(2).data, division3) + && matricesSame(table.get(3).data, division4)); } } diff --git a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayUtilityMethodsTest.java b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayUtilityMethodsTest.java index aae784b52..d25276572 100644 --- a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayUtilityMethodsTest.java +++ b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/ArrayUtilityMethodsTest.java @@ -23,27 +23,27 @@ package com.iluwatar.masterworker; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; /** -* Testing utility methods in {@link ArrayUtilityMethods} class. -*/ + * Testing utility methods in {@link ArrayUtilityMethods} class. + */ class ArrayUtilityMethodsTest { @Test void arraysSameTest() { - int[] arr1 = new int[] {1,4,2,6}; - int[] arr2 = new int[] {1,4,2,6}; + var arr1 = new int[]{1, 4, 2, 6}; + var arr2 = new int[]{1, 4, 2, 6}; assertTrue(ArrayUtilityMethods.arraysSame(arr1, arr2)); } @Test void matricesSameTest() { - int[][] matrix1 = new int[][] {{1,4,2,6},{5,8,6,7}}; - int[][] matrix2 = new int[][] {{1,4,2,6},{5,8,6,7}}; + var matrix1 = new int[][]{{1, 4, 2, 6}, {5, 8, 6, 7}}; + var matrix2 = new int[][]{{1, 4, 2, 6}, {5, 8, 6, 7}}; assertTrue(ArrayUtilityMethods.matricesSame(matrix1, matrix2)); } diff --git a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/ArrayTransposeMasterWorkerTest.java b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/ArrayTransposeMasterWorkerTest.java index b80d7881f..79838ed35 100644 --- a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/ArrayTransposeMasterWorkerTest.java +++ b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/ArrayTransposeMasterWorkerTest.java @@ -23,25 +23,38 @@ package com.iluwatar.masterworker.system; -import static org.junit.jupiter.api.Assertions.*; -import org.junit.jupiter.api.Test; -import com.iluwatar.masterworker.ArrayUtilityMethods; +import static org.junit.jupiter.api.Assertions.assertTrue; + import com.iluwatar.masterworker.ArrayInput; import com.iluwatar.masterworker.ArrayResult; +import com.iluwatar.masterworker.ArrayUtilityMethods; +import org.junit.jupiter.api.Test; /** -* Testing getResult method in {@link ArrayTransposeMasterWorker} class. -*/ + * Testing getResult method in {@link ArrayTransposeMasterWorker} class. + */ class ArrayTransposeMasterWorkerTest { @Test void getResultTest() { - ArrayTransposeMasterWorker atmw = new ArrayTransposeMasterWorker(); - int[][] matrix = new int[][] {{1,2,3,4,5}, {1,2,3,4,5}, {1,2,3,4,5}, {1,2,3,4,5}, {1,2,3,4,5}}; - int[][] matrixTranspose = new int[][] {{1,1,1,1,1}, {2,2,2,2,2}, {3,3,3,3,3}, {4,4,4,4,4}, {5,5,5,5,5}}; - ArrayInput i = new ArrayInput(matrix); - ArrayResult r = (ArrayResult) atmw.getResult(i); + var atmw = new ArrayTransposeMasterWorker(); + var matrix = new int[][]{ + {1, 2, 3, 4, 5}, + {1, 2, 3, 4, 5}, + {1, 2, 3, 4, 5}, + {1, 2, 3, 4, 5}, + {1, 2, 3, 4, 5} + }; + var matrixTranspose = new int[][]{ + {1, 1, 1, 1, 1}, + {2, 2, 2, 2, 2}, + {3, 3, 3, 3, 3}, + {4, 4, 4, 4, 4}, + {5, 5, 5, 5, 5} + }; + var i = new ArrayInput(matrix); + var r = (ArrayResult) atmw.getResult(i); assertTrue(ArrayUtilityMethods.matricesSame(r.data, matrixTranspose)); - } + } } diff --git a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorkerTest.java b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorkerTest.java index 3e5f581b9..c4b210643 100644 --- a/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorkerTest.java +++ b/master-worker-pattern/src/test/java/com/iluwatar/masterworker/system/systemworkers/ArrayTransposeWorkerTest.java @@ -23,29 +23,29 @@ package com.iluwatar.masterworker.system.systemworkers; -import static org.junit.jupiter.api.Assertions.*; -import org.junit.jupiter.api.Test; -import com.iluwatar.masterworker.ArrayUtilityMethods; +import static org.junit.jupiter.api.Assertions.assertTrue; + import com.iluwatar.masterworker.ArrayInput; -import com.iluwatar.masterworker.ArrayResult; +import com.iluwatar.masterworker.ArrayUtilityMethods; import com.iluwatar.masterworker.system.systemmaster.ArrayTransposeMaster; +import org.junit.jupiter.api.Test; /** -* Testing executeOperation method in {@link ArrayTransposeWorker} class. -*/ + * Testing executeOperation method in {@link ArrayTransposeWorker} class. + */ class ArrayTransposeWorkerTest { @Test void executeOperationTest() { - ArrayTransposeMaster atm = new ArrayTransposeMaster(1); - ArrayTransposeWorker atw = new ArrayTransposeWorker(atm, 1); - int[][] matrix = new int[][] {{2,4}, {3,5}}; - int[][] matrixTranspose = new int[][] {{2,3}, {4,5}}; - ArrayInput i = new ArrayInput(matrix); + var atm = new ArrayTransposeMaster(1); + var atw = new ArrayTransposeWorker(atm, 1); + var matrix = new int[][]{{2, 4}, {3, 5}}; + var matrixTranspose = new int[][]{{2, 3}, {4, 5}}; + var i = new ArrayInput(matrix); atw.setReceivedData(atm, i); - ArrayResult r = atw.executeOperation(); + var r = atw.executeOperation(); assertTrue(ArrayUtilityMethods.matricesSame(r.data, matrixTranspose)); } - + }