### Question:
ItemId { @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final ItemId other = (ItemId) obj; if (supportingValue == null) { if (other.supportingValue != null) { return false; } } else if (!supportingValue.equals(other.supportingValue)) { return false; } if (value == null) { if (other.value != null) { return false; } } else if (!value.equals(other.value)) { return false; } return true; } ItemId(final String value);  ItemId(final String value, final String supportingValue); String value(); String supportingValue(); @Override int hashCode(); @Override boolean equals(final Object obj); @Override String toString();  }### Answer:
@Test public void shouldReturnEqualItemId_withSameValue() throws Exception { final String itemIdStr = randomId(); final ItemId itemId1 = new ItemId(itemIdStr); final ItemId itemId2 = new ItemId(itemIdStr); final boolean itemId1Equals2 = itemId1.equals(itemId2); assertTrue(itemId1Equals2); final boolean itemId2Equals1 = itemId2.equals(itemId1); assertTrue(itemId2Equals1); }