### Question:
OutputStreamDestination implements Destination<T> { @Override public void close() throws Exception { if (!streamIsSpecial()) { output.close(); } } OutputStreamDestination(PrintStream output, StackTraceProcessor stackTraceProcessor); @Override void beginBatch(); @Override void publish(LogicalLogRecord<T> record); @Override void endBatch(); @Override void close(); PrintStream getOutput(); @Override StackTraceProcessor getStackTraceProcessor();  }### Answer:
@Test public void close_shouldCloseThePrintStream() throws Exception { destination.close(); assertTrue(output.isClosed()); }
@Test public void close_shouldNotCloseThePrintStream_whenThePrintStreamIsSystemOut() throws Exception { System.setOut(output); destination.close(); assertFalse(output.isClosed()); }
@Test public void close_shouldNotCloseThePrintStream_whenThePrintStreamIsSystemErr() throws Exception { System.setErr(output); destination.close(); assertFalse(output.isClosed()); }