### Question:
Tag { @Override public int hashCode() { int hash = 37; if ( description != null ) { hash = hash * 17 + description.hashCode(); } hash = hash * 17 + Long.valueOf( revision ).hashCode(); return hash; } Tag( long revision, String description );  Tag( long revision, String description, Date tagDate, Date revisionDate );  Tag( long revision, String description, long tagTime, long revisionTime ); long getRevision(); String getDescription(); Date getTagDate(); Date getRevisionDate(); @Override int hashCode(); @Override boolean equals( Object other ); @Override String toString();  }### Answer:
@Test public void testHashCodeReflexive() throws Exception { assertEquals( tagA.hashCode(), tagA.hashCode() ); assertEquals( tagANull.hashCode(), tagANull.hashCode() ); }
@Test public void testHashCodeSymmetric() throws Exception { assertEquals( tagA.hashCode(), tagACopy.hashCode() ); assertEquals( tagACopy.hashCode(), tagA.hashCode() ); }
@Test public void testHashCodeTransitive() throws Exception { assertEquals( tagA.hashCode(), tagACopy.hashCode() ); assertEquals( tagACopy.hashCode(), tagB.hashCode() ); assertEquals( tagA.hashCode(), tagB.hashCode() ); }