@Test public void testEqualsAndHashCode() { Credentials nullNullCreds = new Credentials(null, null); Credentials abcNullCreds = new Credentials("abc", new NullToken()); Credentials cbaNullCreds = new Credentials("cba", new NullToken()); Credentials abcBlahCreds = new Credentials("abc", new PasswordToken("blah")); // check hash codes assertEquals(0, nullNullCreds.hashCode()); assertEquals("abc".hashCode(), abcNullCreds.hashCode()); assertEquals(abcNullCreds.hashCode(), abcBlahCreds.hashCode()); assertFalse(abcNullCreds.hashCode() == cbaNullCreds.hashCode()); // identity assertEquals(abcNullCreds, abcNullCreds); assertEquals(new Credentials("abc", new NullToken()), abcNullCreds); // equal, but different token constructors assertEquals( new Credentials("abc", new PasswordToken("abc".getBytes(Constants.UTF8))), new Credentials("abc", new PasswordToken("abc"))); // test not equals assertFalse(nullNullCreds.equals(abcBlahCreds)); assertFalse(nullNullCreds.equals(abcNullCreds)); assertFalse(abcNullCreds.equals(abcBlahCreds)); }