### Question:
Operation implements IOperation { @Override public boolean equals( Object o ) { if ( this == o ) { return true; } if ( o == null || getClass() != o.getClass() ) { return false; } Operation operation = (Operation) o; if ( category != null ? !category.equals( operation.category ) : operation.category != null ) { return false; } if ( description != null ? !description.equals( operation.description ) : operation.description != null ) { return false; } if ( name != null ? !name.equals( operation.name ) : operation.name != null ) { return false; } if ( type != operation.type ) { return false; } return true; } private  Operation();  Operation( final String category, final ChangeType type, final String name, final String description );  Operation( final String name, final String description ); @Override String getCategory(); @Override void setCategory( String category ); @Override ChangeType getType(); @Override void setType( ChangeType type ); String getDescription(); void setDescription( String description ); String getName(); void setName( String name ); @Override String toString(); static Operation getRenameOperation(); @Override boolean equals( Object o ); @Override int hashCode();  }### Answer:
@Test public void testEquals() { assertTrue( operation.equals( operation ) ); assertFalse( operation.equals( new Object() ) ); Operation operation2 = new Operation( "operationName", "operationDescription" ); assertTrue( operation.equals( operation2 ) ); operation2.setCategory( "Some other category" ); assertFalse( operation.equals( operation2 ) ); operation2 = new Operation( "operationName", "operationDescription" ); operation2.setDescription( "Some other description" ); assertFalse( operation.equals( operation2 ) ); operation2 = new Operation( "operationName", "operationDescription" ); operation2.setName( "Some other name" ); assertFalse( operation.equals( operation2 ) ); operation2 = new Operation( "operationName", "operationDescription" ); operation2.setType( ChangeType.DATA ); assertFalse( operation.equals( operation2 ) ); }