Files
Java/src/test/java/com/thealgorithms/divideandconquer/StrassenMatrixMultiplicationTest.java
2022-10-25 12:15:41 +00:00

42 lines
1.6 KiB
Java

package com.thealgorithms.divideandconquer;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
class StrassenMatrixMultiplicationTest {
StrassenMatrixMultiplication SMM = new StrassenMatrixMultiplication();
// Strassen Matrix Multiplication can only be allplied to matrices of size 2^n
// and has to be a Square Matrix
@Test
public void StrassenMatrixMultiplicationTest2x2() {
int[][] A = { { 1, 2 }, { 3, 4 } };
int[][] B = { { 5, 6 }, { 7, 8 } };
int[][] expResult = { { 19, 22 }, { 43, 50 } };
int[][] actResult = SMM.multiply(A, B);
assertArrayEquals(expResult, actResult);
}
@Test
void StrassenMatrixMultiplicationTest4x4() {
int[][] A = { { 1, 2, 5, 4 }, { 9, 3, 0, 6 }, { 4, 6, 3, 1 }, { 0, 2, 0, 6 } };
int[][] B = { { 1, 0, 4, 1 }, { 1, 2, 0, 2 }, { 0, 3, 1, 3 }, { 1, 8, 1, 2 } };
int[][] expResult = { { 7, 51, 13, 28 }, { 18, 54, 42, 27 }, { 11, 29, 20, 27 }, { 8, 52, 6, 16 } };
int[][] actResult = SMM.multiply(A, B);
assertArrayEquals(expResult, actResult);
}
@Test
void StrassenMatrixMultiplicationTestNegetiveNumber4x4() {
int[][] A = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, { 13, 14, 15, 16 } };
int[][] B = { { 1, -2, -3, 4 }, { 4, -3, -2, 1 }, { 5, -6, -7, 8 }, { 8, -7, -6, -5 } };
int[][] expResult = { { 56, -54, -52, 10 }, { 128, -126, -124, 42 }, { 200, -198, -196, 74 },
{ 272, -270, -268, 106 } };
int[][] actResult = SMM.multiply(A, B);
assertArrayEquals(expResult, actResult);
}
}