### Question:
AnnotationType implements Serializable { public boolean equalsLogically( AnnotationType obj ) { if ( obj == null || obj.getClass() != getClass() ) { return false; } EqualsBuilder eq = new EqualsBuilder(); String thatName = obj.getName() == null ? null : obj.getName().toLowerCase(); String myName = getName() == null ? null : getName().toLowerCase(); eq.append( myName, thatName ); return eq.isEquals(); }  List<String> getModelPropertyIds(); void setModelPropertyValueById( String id, Object value ); Object getModelPropertyValueById( String id ); Object getModelPropertyValueByName( String name ); Class getModelPropertyNameClassType( String name ); List<String> getModelPropertyNames(); List<ModelProperty> getModelProperties(); void setModelPropertyByName( String modelPropertyName, Object value ); Map<String, Serializable> describe(); void populate( final Map<String, Serializable> propertiesMap ); void iterateProperties( KeyValueClosure closure ); @Override boolean equals( Object obj ); @Override int hashCode(); abstract boolean apply(
      final ModelerWorkspace workspace, final IMetaStore metaStore ); abstract boolean apply( final Document schema ); abstract void validate(); abstract ModelAnnotation.Type getType(); abstract String getSummary(); abstract String getName(); abstract String getField(); boolean equalsLogically( AnnotationType obj );  }### Answer:
@Test public void testEqualsLogically() throws Exception { AnnotationType left = mock( AnnotationType.class, Mockito.CALLS_REAL_METHODS ); doReturn( "Hello, my name is..." ).when( left ).getName(); AnnotationType right = mock( AnnotationType.class ); doReturn( "Hello, my name is..." ).when( right ).getName(); assertTrue( left.equalsLogically( right ) ); }