@Test public void hashCodeEqualsTest() { final double[] knots1 = new double[] {1., 2., 3., 4.}; final double[] knots2 = new double[] {1., 2., 3., 4., 5., 6., 7.}; final double[][] matrix1 = new double[][] { {3., 3., 3.}, {1., 1., 1.}, {2., 2., 2.}, {3., 3., 3.}, {1., 1., 1.}, {2., 2., 2.} }; final double[][] matrix2 = new double[][] {{3., 3., 3.}, {1., 1., 1.}, {2., 2., 2.}}; final int order = 3; final int dim1 = 2; final int dim2 = 1; final PiecewisePolynomialResult res1 = new PiecewisePolynomialResult( new DoubleMatrix1D(knots1), new DoubleMatrix2D(matrix1), order, dim1); final PiecewisePolynomialResult res2 = new PiecewisePolynomialResult( new DoubleMatrix1D(knots1), new DoubleMatrix2D(matrix1), order, dim1); final PiecewisePolynomialResult res3 = new PiecewisePolynomialResult( new DoubleMatrix1D(knots2), new DoubleMatrix2D(matrix2), order, dim2); final PiecewisePolynomialResult res4 = new PiecewisePolynomialResult( new DoubleMatrix1D(knots1), new DoubleMatrix2D(matrix1), 2, dim1); final PiecewisePolynomialResult res5 = new PiecewisePolynomialResult( new DoubleMatrix1D(knots1), new DoubleMatrix2D(matrix1), order, dim1 - 1); final PiecewisePolynomialResult res6 = new PiecewisePolynomialResult( new DoubleMatrix1D(new double[] {1., 2., 3., 5.}), new DoubleMatrix2D(matrix1), order, dim1); assertTrue(res1.equals(res1)); assertTrue(res1.equals(res2)); assertTrue(res2.equals(res1)); assertTrue(res2.hashCode() == res1.hashCode()); assertTrue(!(res3.hashCode() == res1.hashCode())); assertTrue(!(res1.equals(res3))); assertTrue(!(res3.equals(res1))); assertTrue(!(res4.hashCode() == res1.hashCode())); assertTrue(!(res1.equals(res4))); assertTrue(!(res4.equals(res1))); assertTrue(!(res5.hashCode() == res1.hashCode())); assertTrue(!(res1.equals(res5))); assertTrue(!(res5.equals(res1))); assertTrue(!(res6.hashCode() == res1.hashCode())); assertTrue(!(res1.equals(res6))); assertTrue(!(res6.equals(res1))); assertTrue(!(res1.equals(null))); assertTrue(!(res1.equals(new DoubleMatrix1D(knots1)))); final DoubleMatrix2D[] sense1 = new DoubleMatrix2D[] {new DoubleMatrix2D(matrix1), new DoubleMatrix2D(matrix1)}; final DoubleMatrix2D[] sense2 = new DoubleMatrix2D[] { new DoubleMatrix2D(matrix1), new DoubleMatrix2D(matrix1), new DoubleMatrix2D(matrix1) }; final PiecewisePolynomialResultsWithSensitivity resSen1 = new PiecewisePolynomialResultsWithSensitivity( new DoubleMatrix1D(knots1), new DoubleMatrix2D(matrix1), order, 1, sense1); final PiecewisePolynomialResultsWithSensitivity resSen2 = new PiecewisePolynomialResultsWithSensitivity( new DoubleMatrix1D(knots1), new DoubleMatrix2D(matrix1), order, 1, sense1); final PiecewisePolynomialResultsWithSensitivity resSen3 = new PiecewisePolynomialResultsWithSensitivity( new DoubleMatrix1D(knots1), new DoubleMatrix2D(matrix1), order, 1, sense2); assertTrue(resSen1.equals(resSen1)); assertTrue(!(resSen1.equals(new DoubleMatrix1D(knots1)))); assertTrue(!(resSen1.equals(res5))); assertTrue(resSen1.equals(resSen2)); assertTrue(resSen2.equals(resSen1)); assertTrue(resSen1.hashCode() == resSen2.hashCode()); assertTrue(!(resSen1.hashCode() == resSen3.hashCode())); assertTrue(!(resSen1.equals(resSen3))); assertTrue(!(resSen3.equals(resSen1))); try { @SuppressWarnings("unused") final PiecewisePolynomialResultsWithSensitivity resSen0 = new PiecewisePolynomialResultsWithSensitivity( new DoubleMatrix1D(knots1), new DoubleMatrix2D(matrix1), order, 2, sense1); throw new RuntimeException(); } catch (Exception e) { assertTrue(e instanceof NotImplementedException); } }