From 84fb717509a5831979671f6e50204f900a1d9fb6 Mon Sep 17 00:00:00 2001 From: Alex Klymenko Date: Sat, 24 Aug 2024 10:38:16 +0200 Subject: [PATCH] test: `DeterminantOfMatrix` (#5376) --- .../maths/DeterminantOfMatrix.java | 28 +++-------- .../maths/DeterminantOfMatrixTest.java | 50 +++++++++++++++++++ 2 files changed, 57 insertions(+), 21 deletions(-) create mode 100644 src/test/java/com/thealgorithms/maths/DeterminantOfMatrixTest.java diff --git a/src/main/java/com/thealgorithms/maths/DeterminantOfMatrix.java b/src/main/java/com/thealgorithms/maths/DeterminantOfMatrix.java index a2a327117..b652d4903 100644 --- a/src/main/java/com/thealgorithms/maths/DeterminantOfMatrix.java +++ b/src/main/java/com/thealgorithms/maths/DeterminantOfMatrix.java @@ -1,7 +1,5 @@ package com.thealgorithms.maths; -import java.util.Scanner; - /* * @author Ojasva Jain * Determinant of a Matrix Wikipedia link: https://en.wikipedia.org/wiki/Determinant @@ -10,8 +8,13 @@ public final class DeterminantOfMatrix { private DeterminantOfMatrix() { } - // Determinant calculator - //@return determinant of the input matrix + /** + * Calculates the determinant of a given matrix. + * + * @param a the input matrix + * @param n the size of the matrix + * @return the determinant of the matrix + */ static int determinant(int[][] a, int n) { int det = 0; int sign = 1; @@ -41,21 +44,4 @@ public final class DeterminantOfMatrix { } return det; } - - // Driver Method - public static void main(String[] args) { - Scanner in = new Scanner(System.in); - // Input Matrix - System.out.println("Enter matrix size (Square matrix only)"); - int n = in.nextInt(); - System.out.println("Enter matrix"); - int[][] a = new int[n][n]; - for (int i = 0; i < n; i++) { - for (int j = 0; j < n; j++) { - a[i][j] = in.nextInt(); - } - } - System.out.println(determinant(a, n)); - in.close(); - } } diff --git a/src/test/java/com/thealgorithms/maths/DeterminantOfMatrixTest.java b/src/test/java/com/thealgorithms/maths/DeterminantOfMatrixTest.java new file mode 100644 index 000000000..dd1c3ac4e --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/DeterminantOfMatrixTest.java @@ -0,0 +1,50 @@ +package com.thealgorithms.maths; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +public class DeterminantOfMatrixTest { + + @Test + public void testDeterminant2x2Matrix() { + int[][] matrix = {{1, 2}, {3, 4}}; + int expected = -2; + assertEquals(expected, DeterminantOfMatrix.determinant(matrix, 2)); + } + + @Test + public void testDeterminant3x3Matrix() { + int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; + int expected = 0; + assertEquals(expected, DeterminantOfMatrix.determinant(matrix, 3)); + } + + @Test + public void testDeterminant3x3MatrixNonZero() { + int[][] matrix = {{1, 2, 3}, {0, 1, 4}, {5, 6, 0}}; + int expected = 1; + assertEquals(expected, DeterminantOfMatrix.determinant(matrix, 3)); + } + + @Test + public void testDeterminant1x1Matrix() { + int[][] matrix = {{7}}; + int expected = 7; + assertEquals(expected, DeterminantOfMatrix.determinant(matrix, 1)); + } + + @Test + public void testDeterminant4x4Matrix() { + int[][] matrix = {{1, 0, 0, 1}, {0, 1, 0, 0}, {0, 0, 1, 0}, {1, 0, 0, 1}}; + int expected = 0; + assertEquals(expected, DeterminantOfMatrix.determinant(matrix, 4)); + } + + @Test + public void testDeterminant4x4MatrixZero() { + int[][] matrix = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}; + int expected = 0; + assertEquals(expected, DeterminantOfMatrix.determinant(matrix, 4)); + } +}