@Test public void changeInConsole() { ConsoleAppender<Object> ca = (ConsoleAppender<Object>) getAppender(); EchoEncoder<Object> encoder = new EchoEncoder<Object>(); ca.setEncoder(encoder); ca.start(); ca.doAppend("a"); assertEquals("a" + CoreConstants.LINE_SEPARATOR, tee.toString()); XTeeOutputStream newTee = new XTeeOutputStream(null); System.setOut(new PrintStream(newTee)); ca.doAppend("b"); assertEquals("b" + CoreConstants.LINE_SEPARATOR, newTee.toString()); }
@Test public void testUTF16BE() throws UnsupportedEncodingException { ConsoleAppender<Object> ca = (ConsoleAppender<Object>) getAppender(); DummyEncoder<Object> dummyEncoder = new DummyEncoder<Object>(); Charset utf16BE = Charset.forName("UTF-16BE"); dummyEncoder.setCharset(utf16BE); ca.setEncoder(dummyEncoder); ca.start(); ca.doAppend(new Object()); assertEquals(DummyLayout.DUMMY, new String(tee.toByteArray(), utf16BE)); }
@Test public void smoke() { ConsoleAppender<Object> ca = (ConsoleAppender<Object>) getAppender(); ca.setEncoder(new DummyEncoder<Object>()); ca.start(); ca.doAppend(new Object()); assertEquals(DummyLayout.DUMMY, tee.toString()); }
@Test public void testClose() { ConsoleAppender<Object> ca = (ConsoleAppender<Object>) getAppender(); DummyEncoder<Object> dummyEncoder = new DummyEncoder<Object>(); dummyEncoder.setFileFooter("CLOSED"); ca.setEncoder(dummyEncoder); ca.start(); ca.doAppend(new Object()); ca.stop(); // ConsoleAppender must keep the underlying stream open. // The console is not ours to close. assertFalse(tee.isClosed()); assertEquals(DummyLayout.DUMMY + "CLOSED", tee.toString()); }
@Test public void open() { ConsoleAppender<Object> ca = (ConsoleAppender<Object>) getAppender(); DummyEncoder<Object> dummyEncoder = new DummyEncoder<Object>(); dummyEncoder.setFileHeader("open"); ca.setEncoder(dummyEncoder); ca.start(); ca.doAppend(new Object()); ca.stop(); assertEquals("open" + CoreConstants.LINE_SEPARATOR + DummyLayout.DUMMY, tee .toString()); }
@Test public void wrongTarget() { ConsoleAppender<Object> ca = (ConsoleAppender<Object>) getAppender(); EchoEncoder<Object> encoder = new EchoEncoder<Object>(); encoder.setContext(context); ca.setContext(context); ca.setTarget("foo"); ca.setEncoder(encoder); ca.start(); ca.doAppend("a"); StatusChecker checker = new StatusChecker(context); //21:28:01,246 + WARN in ch.qos.logback.core.ConsoleAppender[null] - [foo] should be one of [System.out, System.err] //21:28:01,246 |-WARN in ch.qos.logback.core.ConsoleAppender[null] - Using previously set target, System.out by default. // StatusPrinter.print(context); checker.assertContainsMatch(Status.WARN, "\\[foo\\] should be one of \\[System.out, System.err\\]"); }