// return equivalent(this, (ViewStyle) other);
}
+ /**
+ * Overridden to ensure that whenever vs1.equals(vs2) then vs1.hashCode() ==
+ * vs2.hashCode()
+ */
@Override
public int hashCode()
{
- return 0; // TODO
+ /*
+ * No need to include all properties, just a selection...
+ */
+ int hash = 0;
+ int m = 1;
+ // Boolean.hashCode returns 1231 or 1237
+ hash += m++ * Boolean.valueOf(this.abovePIDThreshold).hashCode();
+ hash += m++ * Boolean.valueOf(this.centreColumnLabels).hashCode();
+ hash += m++ * Boolean.valueOf(this.colourAppliesToAllGroups).hashCode();
+ hash += m++ * Boolean.valueOf(this.displayReferenceSeq).hashCode();
+ hash += m++ * Boolean.valueOf(this.renderGaps).hashCode();
+ hash += m++ * Boolean.valueOf(this.rightAlignIds).hashCode();
+ hash += m++ * Boolean.valueOf(this.scaleProteinAsCdna).hashCode();
+ hash += m++ * Boolean.valueOf(this.scaleRightWrapped).hashCode();
+ hash += m++ * Boolean.valueOf(this.seqNameItalics).hashCode();
+ hash += m++ * Boolean.valueOf(this.showAnnotation).hashCode();
+ hash += m++ * Boolean.valueOf(this.showBoxes).hashCode();
+ hash += m++ * Boolean.valueOf(this.showdbrefs).hashCode();
+ hash += m++ * Boolean.valueOf(this.showJVSuffix).hashCode();
+ hash += m++ * Boolean.valueOf(this.showSequenceFeatures).hashCode();
+ hash += m++ * Boolean.valueOf(this.showUnconserved).hashCode();
+ hash += m++ * Boolean.valueOf(this.wrapAlignment).hashCode();
+ hash += m++ * this.charHeight;
+ hash += m++ * this.charWidth;
+ hash += m++ * fontSize;
+ hash += m++ * fontStyle;
+ hash += m++ * idWidth;
+ hash += String.valueOf(this.fontName).hashCode();
+ return hash;
}
+
/**
* @return the upperCasebold
*/
+ value2 + ") - not set in copy constructor?";
assertEquals(msg, value1, value2);
}
+ assertEquals("Hashcode not equals", vs1.hashCode(), vs2.hashCode());
}
/**
throws IllegalAccessException
{
Class<?> type = field.getType();
- final int numValue = 1 + r.nextInt(100);
if (type.equals(boolean.class) || type.equals(Boolean.class))
{
changeValue(vs2, field);
assertFalse("equals method ignores " + field.getName(),
vs1.equals(vs2));
+
+ if (vs1.hashCode() == vs2.hashCode())
+ {
+ // uncomment next line to see which fields hashCode ignores
+ // System.out.println("hashCode ignores " + field.getName());
+ }
// restore original value before testing the next field
field.set(vs2, oldValue);
}