LocalProcessLog implements ProcessLog { @Override public boolean equals(Object object) { if (this == object) { return true; } if (!(object instanceof ProcessLog)) { return false; } ProcessLog processLog = (ProcessLog)object; if ((_level == processLog.getLevel()) && Objects.equals(_message, processLog.getMessage()) && Objects.equals(_throwable, processLog.getThrowable())) { return true; } return false; } LocalProcessLog(
		ProcessLog.Level level, String message, Throwable throwable); @Override boolean equals(Object object); @Override ProcessLog.Level getLevel(); @Override String getMessage(); @Override Throwable getThrowable(); @Override int hashCode(); @Override String toString();  }
@Test public void testEquals() { String message = "message"; Throwable throwable = new Throwable(); LocalProcessLog localProcessLog = new LocalProcessLog( ProcessLog.Level.DEBUG, "message", throwable); Assert.assertTrue(localProcessLog.equals(localProcessLog)); Assert.assertFalse(localProcessLog.equals(message)); Assert.assertFalse( localProcessLog.equals( new LocalProcessLog( ProcessLog.Level.ERROR, message, throwable))); Assert.assertFalse( localProcessLog.equals( new LocalProcessLog( ProcessLog.Level.DEBUG, "message2", throwable))); Assert.assertFalse( localProcessLog.equals( new LocalProcessLog( ProcessLog.Level.DEBUG, message, new Throwable()))); Assert.assertTrue( localProcessLog.equals( new LocalProcessLog( ProcessLog.Level.DEBUG, message, throwable))); }