### Question:
ClientExpressionContainer implements DeepCloneable<ClientExpressionContainer> { public ClientExpressionContainer setString(String expressionString) { this.string = expressionString; return this; } ClientExpressionContainer();  ClientExpressionContainer(ClientExpressionContainer source);  ClientExpressionContainer(String expression);  ClientExpressionContainer(ClientExpression expression); @XmlElements(value = { @XmlElement(name = ClientNull.EXPRESSION_ID, type = ClientNull.class), @XmlElement(name = ClientBoolean.EXPRESSION_ID, type = ClientBoolean.class), @XmlElement(name = ClientNumber.EXPRESSION_ID, type = ClientNumber.class), @XmlElement(name = ClientRelativeDateRange.EXPRESSION_ID, type = ClientRelativeDateRange.class), @XmlElement(name = ClientRelativeTimestampRange.EXPRESSION_ID, type = ClientRelativeTimestampRange.class), @XmlElement(name = ClientString.EXPRESSION_ID, type = ClientString.class), @XmlElement(name = ClientDate.EXPRESSION_ID, type = ClientDate.class), @XmlElement(name = ClientTime.EXPRESSION_ID, type = ClientTime.class), @XmlElement(name = ClientTimestamp.EXPRESSION_ID, type = ClientTimestamp.class), @XmlElement(name = ClientVariable.EXPRESSION_ID, type = ClientVariable.class), @XmlElement(name = ClientNot.EXPRESSION_ID, type = ClientNot.class), @XmlElement(name = ClientAnd.EXPRESSION_ID, type = ClientAnd.class), @XmlElement(name = ClientOr.EXPRESSION_ID, type = ClientOr.class), @XmlElement(name = ClientGreater.EXPRESSION_ID, type = ClientGreater.class), @XmlElement(name = ClientGreaterOrEqual.EXPRESSION_ID, type = ClientGreaterOrEqual.class), @XmlElement(name = ClientLess.EXPRESSION_ID, type = ClientLess.class), @XmlElement(name = ClientLessOrEqual.EXPRESSION_ID, type = ClientLessOrEqual.class), @XmlElement(name = ClientNotEqual.EXPRESSION_ID, type = ClientNotEqual.class), @XmlElement(name = ClientEquals.EXPRESSION_ID, type = ClientEquals.class), @XmlElement(name = ClientFunction.EXPRESSION_ID, type = ClientFunction.class), @XmlElement(name = ClientIn.EXPRESSION_ID, type = ClientIn.class), @XmlElement(name = ClientRange.EXPRESSION_ID, type = ClientRange.class), @XmlElement(name = ClientAdd.EXPRESSION_ID, type = ClientAdd.class), @XmlElement(name = ClientSubtract.EXPRESSION_ID, type = ClientSubtract.class), @XmlElement(name = ClientMultiply.EXPRESSION_ID, type = ClientMultiply.class), @XmlElement(name = ClientDivide.EXPRESSION_ID, type = ClientDivide.class), @XmlElement(name = ClientPercentRatio.EXPRESSION_ID, type = ClientPercentRatio.class), @XmlElement(name = ClientList.EXPRESSION_ID, type = ClientList.class) }) ClientExpression getObject(); ClientExpressionContainer setObject(ClientExpression expressionObject); String getString(); ClientExpressionContainer setString(String expressionString); @XmlTransient String getExpression(); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString(); @Override ClientExpressionContainer deepClone(); static final String EXPRESSION_REPRESENTATION_PARAMETER_NAME; static final String EXPRESSION_REPRESENTATION_STRING; static final String EXPRESSION_REPRESENTATION_OBJECT; }### Answer:
@Test public void equalsWithTwoDifferentStrings() { ClientExpressionContainer first = new ClientExpressionContainer().setString(TEST_STRING); ClientExpressionContainer second = new ClientExpressionContainer().setString(TEST_STRING_ALT); assertNotEquals(first, second); }
@Test public void equalsWithStringAndNullString() { ClientExpressionContainer first = new ClientExpressionContainer().setString(null); ClientExpressionContainer second = new ClientExpressionContainer().setString(TEST_STRING_ALT); assertNotEquals(first, second); }
@Test public void equalsWithNullStringAndString() { ClientExpressionContainer first = new ClientExpressionContainer().setString(TEST_STRING); ClientExpressionContainer second = new ClientExpressionContainer().setString(null); assertNotEquals(first, second); }