12 Commits

8 changed files with 248 additions and 223 deletions

2
.mvn/maven.config Normal file
View File

@@ -0,0 +1,2 @@
-Dstyle.color=always
-T1C

300
pom.xml
View File

@@ -27,7 +27,7 @@
<groupId>com.mattrixwv</groupId> <groupId>com.mattrixwv</groupId>
<artifactId>matrix</artifactId> <artifactId>matrix</artifactId>
<version>1.2.1</version> <version>1.2.4-SNAPSHOT</version>
<name>Matrix</name> <name>Matrix</name>
<description>A library for performing Matrix operations</description> <description>A library for performing Matrix operations</description>
@@ -37,24 +37,21 @@
<!--Compile--> <!--Compile-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>21</java.version> <java.version>25</java.version>
<maven.compiler.source>21</maven.compiler.source> <maven.compiler.source>25</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target> <maven.compiler.target>25</maven.compiler.target>
<!--Sonarqube--> <!--Sonarqube-->
<sonar.java.source>21</sonar.java.source> <sonar.java.source>25</sonar.java.source>
<sonar.dependencyCheck.jsonReportPath>target/dependency-check-report.json</sonar.dependencyCheck.jsonReportPath> <sonar.dependencyCheck.jsonReportPath>target/dependency-check-report.json</sonar.dependencyCheck.jsonReportPath>
<sonar.dependencyCheck.htmlReportPath>target/dependency-check-report.html</sonar.dependencyCheck.htmlReportPath> <sonar.dependencyCheck.htmlReportPath>target/dependency-check-report.html</sonar.dependencyCheck.htmlReportPath>
<!--Deployment-->
<gpg.keyname>3BA6515C8FF145249BEBBEABA52FDEC4259179D4</gpg.keyname>
</properties> </properties>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.junit.jupiter</groupId> <groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId> <artifactId>junit-jupiter</artifactId>
<version>5.11.4</version> <version>6.0.2</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
@@ -65,157 +62,36 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId> <artifactId>maven-enforcer-plugin</artifactId>
<version>3.5.0</version>
<executions> <executions>
<execution> <execution>
<id>enforce-maven</id> <id>enforce-maven</id>
<phase>validate</phase>
<goals> <goals>
<goal>enforce</goal> <goal>enforce</goal>
</goals> </goals>
<configuration>
<rules>
<requireMavenVersion>
<version>3.8.6</version>
</requireMavenVersion>
</rules>
</configuration>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.4.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.1</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<release>${java.version}</release>
<compilerArgs>
<arg>-Xlint:all</arg>
</compilerArgs>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.2</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.4.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>3.1.3</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.1.3</version>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.21.0</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.18.0</version>
<configuration>
<rulesUri>file://${session.executionRootDirectory}/version-rules.xml</rulesUri>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.8.1</version>
</plugin>
<!--Sonarqube--> <!--Sonarqube-->
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>5.0.0.4389</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.12</version>
<executions>
<execution>
<id>jacoco-initialize</id>
<phase>none</phase>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>none</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin> <plugin>
<groupId>org.owasp</groupId> <groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId> <artifactId>dependency-check-maven</artifactId>
<version>12.0.0</version>
<executions> <executions>
<execution> <execution>
<phase>none</phase> <id>dependency-check</id>
<phase>verify</phase>
<goals> <goals>
<goal>check</goal> <goal>check</goal>
</goals> </goals>
</execution> </execution>
</executions> </executions>
<configuration>
<formats>
<format>json</format>
<format>html</format>
</formats>
<nvdApiServerId>nvd</nvdApiServerId>
</configuration>
</plugin> </plugin>
<!--Deployment--> <!--Deployment-->
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.7.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>ossrh</publishingServerId>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.7.0</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterCloase>true</autoReleaseAfterCloase>
</configuration>
</plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId> <artifactId>maven-source-plugin</artifactId>
<version>3.3.1</version>
<executions> <executions>
<execution> <execution>
<id>attach-sources</id> <id>attach-sources</id>
@@ -225,11 +101,9 @@
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId> <artifactId>maven-javadoc-plugin</artifactId>
<version>3.11.2</version>
<executions> <executions>
<execution> <execution>
<id>attach-javadocs</id> <id>attach-javadocs</id>
@@ -239,11 +113,9 @@
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId> <artifactId>maven-gpg-plugin</artifactId>
<version>3.2.7</version>
<executions> <executions>
<execution> <execution>
<id>sign-artifacts</id> <id>sign-artifacts</id>
@@ -251,23 +123,147 @@
<goals> <goals>
<goal>sign</goal> <goal>sign</goal>
</goals> </goals>
<configuration>
<keyname>${gpg.keyname}</keyname>
</configuration>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
</plugins> </plugins>
</build>
<distributionManagement> <pluginManagement>
<snapshotRepository> <plugins>
<id>ossrh</id> <!--Ensure maven is the correct version-->
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url> <plugin>
</snapshotRepository> <groupId>org.apache.maven.plugins</groupId>
<repository> <artifactId>maven-enforcer-plugin</artifactId>
<id>ossrh</id> <version>3.6.2</version>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url> <configuration>
</repository> <rules>
</distributionManagement> <requireMavenVersion>
<version>3.8.6</version>
</requireMavenVersion>
</rules>
</configuration>
</plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.5.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.4.0</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.14.1</version>
<configuration>
<release>${java.version}</release>
<compilerArgs>
<arg>-Xlint:all</arg>
</compilerArgs>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.4</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.5.0</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>3.1.4</version>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.21.0</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.9.0</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.21.0</version>
<configuration>
<rulesUri>file://${session.executionRootDirectory}/version-rules.xml</rulesUri>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.9.0</version>
</plugin>
<!--Sonarqube-->
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>5.5.0.6356</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.14</version>
</plugin>
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>12.2.0</version>
<configuration>
<formats>
<format>json</format>
<format>html</format>
</formats>
<nvdApiServerId>nvd</nvdApiServerId>
<failBuildOnCVSS>7</failBuildOnCVSS>
<ossIndexServerId>ossrh</ossIndexServerId>
</configuration>
</plugin>
<!--Deployment-->
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.10.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.1.4</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.4.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.12.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.8</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project> </project>

View File

@@ -1,7 +1,3 @@
//Matrix/src/main/java/com/mattrixwv/BigIntegerMatrix.java
//Mattrixwv
// Created: 02-10-22
//Modified: 08-11-24
package com.mattrixwv.matrix; package com.mattrixwv.matrix;
@@ -27,18 +23,17 @@ public class BigIntegerMatrix{
//?Helper functions //?Helper functions
/** /**
* Sets the matrix grid to the specified 2D array. Validates the input to ensure * Validates the input to ensure all rows are of equal length.
* all rows are of equal length.
* *
* @param grid The 2D array to set as the matrix grid. * @param grid The 2D array to set as the matrix grid.
* @throws InvalidRowSizeException If the rows of the matrix are not all the same length. * @return the new validated grid
*/ */
protected void setGrid(BigInteger[][] grid){ private BigInteger[][] validateGrid(BigInteger[][] grid){
if(grid.length == 0){ if(grid.length == 0){
this.grid = new BigInteger[0][0]; return new BigInteger[0][0];
} }
else if(grid[0].length == 0){ else if(grid[0].length == 0){
this.grid = new BigInteger[grid.length][0]; return new BigInteger[grid.length][0];
} }
else{ else{
//Make sure all rows are the same length //Make sure all rows are the same length
@@ -56,9 +51,19 @@ public class BigIntegerMatrix{
} }
//Save the new grid //Save the new grid
this.grid = newGrid; return newGrid;
} }
} }
/**
* Sets the matrix grid to the specified 2D array. Validates the input to ensure
* all rows are of equal length.
*
* @param grid The 2D array to set as the matrix grid.
* @throws InvalidRowSizeException If the rows of the matrix are not all the same length.
*/
protected void setGrid(BigInteger[][] grid){
this.grid = validateGrid(grid);
}
/** /**
* Creates a deep copy of the matrix grid. * Creates a deep copy of the matrix grid.
* *
@@ -159,7 +164,7 @@ public class BigIntegerMatrix{
* @param grid The 2D array to initialize the matrix with. * @param grid The 2D array to initialize the matrix with.
*/ */
public BigIntegerMatrix(BigInteger[][] grid){ public BigIntegerMatrix(BigInteger[][] grid){
setGrid(grid); this.grid = validateGrid(grid);
} }
/** /**
* Constructs a copy of the specified matrix. * Constructs a copy of the specified matrix.
@@ -167,7 +172,7 @@ public class BigIntegerMatrix{
* @param matrix The matrix to copy. * @param matrix The matrix to copy.
*/ */
public BigIntegerMatrix(BigIntegerMatrix matrix){ public BigIntegerMatrix(BigIntegerMatrix matrix){
setGrid(matrix.grid); this.grid = validateGrid(matrix.grid);
} }
/** /**
* Constructs a matrix with the specified number of rows and columns, filled with the specified value. * Constructs a matrix with the specified number of rows and columns, filled with the specified value.

View File

@@ -1,7 +1,3 @@
//Matrix/src/main/java/com/mattrixwv/matrix/DoubleMatrix.java
//Mattrixwv
// Created: 02-07-22
//Modified: 08-11-24
package com.mattrixwv.matrix; package com.mattrixwv.matrix;
@@ -30,18 +26,17 @@ public class DoubleMatrix{
//?Helper functions //?Helper functions
/** /**
* Sets the matrix grid to the specified 2D array. Validates the input to ensure * Validates the input to ensure all rows are of equal length.
* all rows are of equal length.
* *
* @param grid The 2D array to set as the matrix grid. * @param grid The 2D array to set as the matrix grid.
* @throws InvalidRowSizeException If the rows of the matrix are not all the same length. * @return the new validated grid
*/ */
protected void setGrid(double[][] grid){ private double[][] validateGrid(double[][] grid){
if(grid.length == 0){ if(grid.length == 0){
this.grid = new double[0][0]; return new double[0][0];
} }
else if(grid[0].length == 0){ else if(grid[0].length == 0){
this.grid = new double[grid.length][0]; return new double[grid.length][0];
} }
else{ else{
//Make sure all rows are the same length //Make sure all rows are the same length
@@ -59,9 +54,19 @@ public class DoubleMatrix{
} }
//Save the new grid //Save the new grid
this.grid = newGrid; return newGrid;
} }
} }
/**
* Sets the matrix grid to the specified 2D array. Validates the input to ensure
* all rows are of equal length.
*
* @param grid The 2D array to set as the matrix grid.
* @throws InvalidRowSizeException If the rows of the matrix are not all the same length.
*/
protected void setGrid(double[][] grid){
this.grid = validateGrid(grid);
}
/** /**
* Creates a deep copy of the matrix grid. * Creates a deep copy of the matrix grid.
* *
@@ -163,7 +168,7 @@ public class DoubleMatrix{
* @param grid The 2D array to initialize the matrix with. * @param grid The 2D array to initialize the matrix with.
*/ */
public DoubleMatrix(double[][] grid){ public DoubleMatrix(double[][] grid){
setGrid(grid); this.grid = validateGrid(grid);
delta = 0.0; delta = 0.0;
} }
/** /**
@@ -172,7 +177,7 @@ public class DoubleMatrix{
* @param matrix The matrix to copy. * @param matrix The matrix to copy.
*/ */
public DoubleMatrix(DoubleMatrix matrix){ public DoubleMatrix(DoubleMatrix matrix){
setGrid(matrix.grid); this.grid = validateGrid(matrix.grid);
delta = 0.0; delta = 0.0;
} }
/** /**

View File

@@ -1,7 +1,3 @@
//Matrix/src/main/java/com/mattrixwv/IntegerMatrix.java
//Mattrixwv
// Created: 02-01-22
//Modified: 08-11-24
package com.mattrixwv.matrix; package com.mattrixwv.matrix;
@@ -26,18 +22,17 @@ public class IntegerMatrix{
//?Helper functions //?Helper functions
/** /**
* Sets the matrix grid to the specified 2D array. Validates the input to ensure * Validates that all rows in the grid are of equal length.
* all rows are of equal length.
* *
* @param grid The 2D array to set as the matrix grid. * @param grid The 2D array to validate.
* @throws InvalidRowSizeException If the rows of the matrix are not all the same length. * @throws InvalidRowSizeException If the rows of the matrix are not all the same length.
*/ */
protected void setGrid(int[][] grid){ private int[][] validateGrid(int[][] grid){
if(grid.length == 0){ if(grid.length == 0){
this.grid = new int[0][0]; return new int[0][0];
} }
else if(grid[0].length == 0){ else if(grid[0].length == 0){
this.grid = new int[grid.length][0]; return new int[grid.length][0];
} }
else{ else{
//Make sure all rows are the same length //Make sure all rows are the same length
@@ -55,9 +50,19 @@ public class IntegerMatrix{
} }
//Save the new grid //Save the new grid
this.grid = newGrid; return newGrid;
} }
} }
/**
* Sets the matrix grid to the specified 2D array. Validates the input to ensure
* all rows are of equal length.
*
* @param grid The 2D array to set as the matrix grid.
* @throws InvalidRowSizeException If the rows of the matrix are not all the same length.
*/
protected void setGrid(int[][] grid){
this.grid = validateGrid(grid);
}
/** /**
* Creates a deep copy of the matrix grid. * Creates a deep copy of the matrix grid.
* *
@@ -158,7 +163,7 @@ public class IntegerMatrix{
* @param grid The 2D array to initialize the matrix with. * @param grid The 2D array to initialize the matrix with.
*/ */
public IntegerMatrix(int[][] grid){ public IntegerMatrix(int[][] grid){
setGrid(grid); this.grid = validateGrid(grid);
} }
/** /**
* Constructs a copy of the specified matrix. * Constructs a copy of the specified matrix.
@@ -166,7 +171,7 @@ public class IntegerMatrix{
* @param matrix The matrix to copy. * @param matrix The matrix to copy.
*/ */
public IntegerMatrix(IntegerMatrix matrix){ public IntegerMatrix(IntegerMatrix matrix){
setGrid(matrix.grid); this.grid = validateGrid(matrix.grid);
} }
/** /**
* Constructs a matrix with the specified number of rows and columns, filled with the specified value. * Constructs a matrix with the specified number of rows and columns, filled with the specified value.

View File

@@ -1,7 +1,3 @@
//Matrix/src/main/java/com/mattrixwv/matrix/LongMatrix.java
//Mattrixwv
// Created: 02-10-22
//Modified: 08-11-24
package com.mattrixwv.matrix; package com.mattrixwv.matrix;
@@ -26,18 +22,17 @@ public class LongMatrix{
//?Helper functions //?Helper functions
/** /**
* Sets the matrix grid to the specified 2D array. Validates the input to ensure * Validates the input to ensure all rows are of equal length.
* all rows are of equal length.
* *
* @param grid The 2D array to set as the matrix grid. * @param grid The 2D array to set as the matrix grid.
* @throws InvalidRowSizeException If the rows of the matrix are not all the same length. * @return the new validated grid
*/ */
protected void setGrid(long[][] grid){ private long[][] validateGrid(long[][] grid){
if(grid.length == 0){ if(grid.length == 0){
this.grid = new long[0][0]; return new long[0][0];
} }
else if(grid[0].length == 0){ else if(grid[0].length == 0){
this.grid = new long[grid.length][0]; return new long[grid.length][0];
} }
else{ else{
//Make sure all rows are the same length //Make sure all rows are the same length
@@ -55,9 +50,19 @@ public class LongMatrix{
} }
//Save the new grid //Save the new grid
this.grid = newGrid; return newGrid;
} }
} }
/**
* Sets the matrix grid to the specified 2D array. Validates the input to ensure
* all rows are of equal length.
*
* @param grid The 2D array to set as the matrix grid.
* @throws InvalidRowSizeException If the rows of the matrix are not all the same length.
*/
protected void setGrid(long[][] grid){
this.grid = validateGrid(grid);
}
/** /**
* Creates a deep copy of the matrix grid. * Creates a deep copy of the matrix grid.
* *
@@ -158,7 +163,7 @@ public class LongMatrix{
* @param grid The 2D array to initialize the matrix with. * @param grid The 2D array to initialize the matrix with.
*/ */
public LongMatrix(long[][] grid){ public LongMatrix(long[][] grid){
setGrid(grid); this.grid = validateGrid(grid);
} }
/** /**
* Constructs a copy of the specified matrix. * Constructs a copy of the specified matrix.
@@ -166,7 +171,7 @@ public class LongMatrix{
* @param matrix The matrix to copy. * @param matrix The matrix to copy.
*/ */
public LongMatrix(LongMatrix matrix){ public LongMatrix(LongMatrix matrix){
setGrid(matrix.grid); this.grid = validateGrid(matrix.grid);
} }
/** /**
* Constructs a matrix with the specified number of rows and columns, filled with the specified value. * Constructs a matrix with the specified number of rows and columns, filled with the specified value.

View File

@@ -1,7 +1,3 @@
//Matrix/src/main/java/com/mattrixwv/matrix/ModMatrix.java
//Mattrixwv
// Created: 02-09-22
//Modified: 08-11-24
package com.mattrixwv.matrix; package com.mattrixwv.matrix;
@@ -17,13 +13,26 @@ import com.mattrixwv.matrix.exceptions.NullMatrixException;
/** /**
* Represents a matrix of integers that have been run through a modulus function, and provides various matrix operations. * Represents a matrix of integers that have been run through a modulus function, and provides various matrix operations.
*/ */
public class ModMatrix extends IntegerMatrix{ public final class ModMatrix extends IntegerMatrix{
/** /**
* The mod used on each element of the matrix * The mod used on each element of the matrix
*/ */
protected int mod; protected int mod;
//?Helper functions //?Helper functions
/**
* Validate the mod values
*
* @param mod The new mod value
* @throws InvalidScalarException If the mod value is less than or equal to 0
*/
private int validateMod(int mod){
if(mod <= 0){
throw new InvalidScalarException("The mod must be > 0");
}
return mod;
}
/** /**
* Set the mod values * Set the mod values
* *
@@ -31,11 +40,7 @@ public class ModMatrix extends IntegerMatrix{
* @throws InvalidScalarException If the mod value is less than or equal to 0 * @throws InvalidScalarException If the mod value is less than or equal to 0
*/ */
protected void setMod(int mod){ protected void setMod(int mod){
if(mod <= 0){ this.mod = validateMod(mod);
throw new InvalidScalarException("The mod must be > 0");
}
this.mod = mod;
} }
/** /**
* Get the mod value of a number * Get the mod value of a number
@@ -103,7 +108,7 @@ public class ModMatrix extends IntegerMatrix{
*/ */
public ModMatrix(int mod){ public ModMatrix(int mod){
super(); super();
setMod(mod); this.mod = validateMod(mod);
modGrid(); modGrid();
} }
/** /**
@@ -114,7 +119,7 @@ public class ModMatrix extends IntegerMatrix{
*/ */
public ModMatrix(int[][] grid, int mod){ public ModMatrix(int[][] grid, int mod){
super(); super();
setMod(mod); this.mod = validateMod(mod);
setGrid(grid); setGrid(grid);
} }
/** /**
@@ -124,7 +129,7 @@ public class ModMatrix extends IntegerMatrix{
*/ */
public ModMatrix(ModMatrix matrix){ public ModMatrix(ModMatrix matrix){
super(); super();
setMod(matrix.mod); this.mod = validateMod(matrix.mod);
setGrid(matrix.grid); setGrid(matrix.grid);
} }
/** /**
@@ -135,7 +140,7 @@ public class ModMatrix extends IntegerMatrix{
*/ */
public ModMatrix(IntegerMatrix matrix, int mod){ public ModMatrix(IntegerMatrix matrix, int mod){
super(); super();
setMod(mod); this.mod = validateMod(mod);
setGrid(matrix.grid); setGrid(matrix.grid);
} }
/** /**
@@ -149,7 +154,7 @@ public class ModMatrix extends IntegerMatrix{
*/ */
public ModMatrix(int rows, int cols, int fill, int mod){ public ModMatrix(int rows, int cols, int fill, int mod){
super(rows, cols, fill); super(rows, cols, fill);
setMod(mod); this.mod = validateMod(mod);
modGrid(); modGrid();
} }

View File

@@ -1,4 +1,6 @@
#junit.jupiter.execution.parallel.enabled=true #Enable parallel test execution
#junit.jupiter.execution.parallel.config.strategy=dynamic junit.jupiter.execution.parallel.enabled=true
#junit.jupiter.execution.parallel.mode.default=concurrent #Per-function behavior
#junit.jupiter.execution.parallel.mode.classes.default=concurrent junit.jupiter.execution.parallel.mode.default=concurrent
#Per-class behavior
junit.jupiter.execution.parallel.mode.classes.default=concurrent