### Question:
MatrixAlgebra { public Matrix divide(Matrix m1, Matrix m2) { ArgChecker.notNull(m1, "m1"); ArgChecker.notNull(m2, "m2"); ArgChecker.isTrue(m1 instanceof DoubleMatrix, "Can only divide a 2D matrix"); ArgChecker.isTrue(m2 instanceof DoubleMatrix, "Can only perform division with a 2D matrix"); return multiply(m1, getInverse(m2)); }  Matrix add(Matrix m1, Matrix m2); Matrix divide(Matrix m1, Matrix m2); Matrix kroneckerProduct(Matrix m1, Matrix m2); abstract Matrix multiply(Matrix m1, Matrix m2); Matrix scale(Matrix m, double scale); Matrix subtract(Matrix m1, Matrix m2); abstract double getCondition(Matrix m); abstract double getDeterminant(Matrix m); abstract DoubleMatrix getInverse(Matrix m); abstract double getInnerProduct(Matrix m1, Matrix m2); abstract DoubleMatrix getOuterProduct(Matrix m1, Matrix m2); abstract double getNorm1(Matrix m); abstract double getNorm2(Matrix m); abstract double getNormInfinity(Matrix m); abstract DoubleMatrix getPower(Matrix m, int p); abstract DoubleMatrix getPower(Matrix m, double p); abstract double getTrace(Matrix m); abstract DoubleMatrix getTranspose(Matrix m); DoubleMatrix matrixTransposeMultiplyMatrix(DoubleMatrix a);  }### Answer:
@Test public void testDivide1D() { assertThatIllegalArgumentException() .isThrownBy(() -> ALGEBRA.divide(M1, M3)); }
@Test public void testDivide2D() { assertThatIllegalArgumentException() .isThrownBy(() -> ALGEBRA.divide(M3, M1)); }