SingleFieldConstraintEBLeftSide extends SingleFieldConstraint { @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; SingleFieldConstraintEBLeftSide that = (SingleFieldConstraintEBLeftSide) o; if (expLeftSide != null ? !expLeftSide.equals(that.expLeftSide) : that.expLeftSide != null) return false; return true; } SingleFieldConstraintEBLeftSide();  SingleFieldConstraintEBLeftSide( String factType,
                                            String fieldName,
                                            String fieldType,
                                            FieldConstraint parent );  SingleFieldConstraintEBLeftSide( String field ); boolean isBound(); ExpressionFormLine getExpressionLeftSide(); void setExpressionLeftSide( ExpressionFormLine expression ); @Override String getFieldBinding(); @Override void setFieldBinding( String fieldBinding ); @Override String getFieldType(); @Override String getFieldName(); @Override void addNewConnective(); @Override boolean equals(Object o); @Override int hashCode();  }
@Test public void testEquals() { final FactPattern fp = new FactPattern(); fp.setFactType( "Applicant" ); fp.setBoundName( "$a" ); final SingleFieldConstraintEBLeftSide con = new SingleFieldConstraintEBLeftSide(); con.setConstraintValueType( SingleFieldConstraint.TYPE_UNDEFINED ); fp.addConstraint( con ); con.setExpressionLeftSide( new ExpressionFormLine( new ExpressionUnboundFact( fp.getFactType() ) ) ); assertEquals( con, con ); }