### Question:
ImmutableQuality implements Quality { @Override public int hashCode() { return Objects.hash(this.type,this.weight); } private  ImmutableQuality(double value, Type type); @Override Type type(); @Override double weight(); @Override int compareTo(Quality that); @Override int hashCode(); @Override boolean equals(final Object obj); @Override String toString();  }### Answer:
@Test public void qualitiesWithDifferentTypeHaveDifferentHashCode() { assertThat(VALUE.hashCode(),not(equalTo(VALUE_SMALLER_TYPE.hashCode()))); }
@Test public void qualitiesWithDifferentWeightHaveDifferentHashCode() { assertThat(VALUE.hashCode(),not(equalTo(VALUE_SMALLER_WEIGHT.hashCode()))); }
@Test public void qualitiesWithDifferentAttributesHaveDifferentHashCode() { assertThat(VALUE.hashCode(),not(equalTo(DIFFERENT.hashCode()))); }