package jalview.math;
import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotEquals;
import static org.testng.Assert.assertNotSame;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
values[0][0] = -1d;
assertEquals(m.getValue(0, 0), 1d, DELTA); // unchanged
}
+
+ @Test(groups = "Functional")
+ public void testEquals_hashCode()
+ {
+ double[][] values = new double[][] { { 1, 2, 3 }, { 4, 5, 6 } };
+ Matrix m1 = new Matrix(values);
+ double[][] values2 = new double[][] { { 1, 2, 3 }, { 4, 5, 6 } };
+ Matrix m2 = new Matrix(values2);
+
+ assertTrue(m1.equals(m1));
+ assertTrue(m1.equals(m2));
+ assertTrue(m2.equals(m1));
+ // equal objects should have same hashCode
+ assertEquals(m1.hashCode(), m2.hashCode());
+
+ double[][] values3 = new double[][] { { 1, 2, 3 }, { 4, 5, 7 } };
+ m2 = new Matrix(values3);
+ assertFalse(m1.equals(m2));
+ assertFalse(m2.equals(m1));
+ assertNotEquals(m1.hashCode(), m2.hashCode());
+
+ // same hashCode doesn't always mean equal
+ values2 = new double[][] { { 1, 2, 3 }, { 4, 6, 5 } };
+ m2 = new Matrix(values2);
+ assertFalse(m2.equals(m1));
+ assertEquals(m1.hashCode(), m2.hashCode());
+
+ assertFalse(m1.equals(null));
+ assertFalse(m1.equals("foo"));
+ }
}