@Override public void evaluate() throws Throwable { base.evaluate(); List<LogItem> logs = ShadowLog.getLogs(); for (LogItem log : logs) { LogItem throwLessLogItem = new LogItem(log.type, log.tag, log.msg, null);
@Test public void clear() { assertThat(ShadowLog.getLogsForTag("tag1")).isEmpty(); Log.d("tag1", "1"); assertThat(ShadowLog.getLogsForTag("tag1")).isNotEmpty(); ShadowLog.clear(); assertThat(ShadowLog.getLogsForTag("tag1")).isEmpty(); assertThat(ShadowLog.getLogs()).isEmpty(); } }
private void assertLogged(int type, String tag, String msg, Throwable throwable) { List<ShadowLog.LogItem> logs = ShadowLog.getLogs(); ShadowLog.LogItem lastLog = logs.get(logs.size() - 1); assertEquals(type, lastLog.type); assertEquals(msg, lastLog.msg); assertEquals(tag, lastLog.tag); assertEquals(throwable, lastLog.throwable); } }
private void assertLogged(int type, String tag, String msg, Throwable throwable) { List<ShadowLog.LogItem> logs = ShadowLog.getLogs(); ShadowLog.LogItem lastLog = logs.get(logs.size() - 1); assertEquals(type, lastLog.type); assertEquals(msg, lastLog.msg); assertEquals(tag, lastLog.tag); assertEquals(throwable, lastLog.throwable); }
private void assertNotLogged() { final List<ShadowLog.LogItem> logs = ShadowLog.getLogs(); for (ShadowLog.LogItem log : logs) { //INFO level log was introduced by ASOP //https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/content/res/AssetManager.java assertThat(log.type, isOneOf(Log.INFO, Log.WARN, Log.ERROR)); } } }
@Test public void shouldLogAccordingToTag() throws Exception { ShadowLog.reset(); Log.d("tag1", "1"); Log.i("tag2", "2"); Log.e("tag3", "3"); Log.w("tag1", "4"); Log.i("tag1", "5"); Log.d("tag2", "6"); List<LogItem> allItems = ShadowLog.getLogs(); assertThat(allItems.size()).isEqualTo(6); int i = 1; for (LogItem item : allItems) { assertThat(item.msg).isEqualTo(Integer.toString(i)); i++; } assertUniformLogsForTag("tag1", 3); assertUniformLogsForTag("tag2", 2); assertUniformLogsForTag("tag3", 1); }
private void assertLogged(int type, String tag, String msg, Throwable throwable) { LogItem lastLog = Iterables.getLast(ShadowLog.getLogs()); assertEquals(type, lastLog.type); assertEquals(msg, lastLog.msg); assertEquals(tag, lastLog.tag); assertEquals(throwable, lastLog.throwable); }
@Override public void evaluate() throws Throwable { base.evaluate(); List<LogItem> logs = ShadowLog.getLogs(); for (LogItem log : logs) { LogItem throwLessLogItem = new LogItem(log.type, log.tag, log.msg, null);
private void assertLogged(int type, String tag, String msg, Throwable throwable) { LogItem lastLog = ShadowLog.getLogs().get(0); assertEquals(type, lastLog.type); assertEquals(msg, lastLog.msg); assertEquals(tag, lastLog.tag); assertEquals(throwable, lastLog.throwable); }
private void assertNotLogged(String msg) { List<LogItem> logList = ShadowLog.getLogs(); if (!logList.isEmpty()) { assertFalse(logList.get(0).msg.contains(msg)); ShadowLog.reset(); } } }
@After public void tearDown() { assertThat(ShadowLog.getLogs()).isEmpty(); }
@Test public void verboseLevelLogsEverything() { Logger logger = Logger.with(Analytics.LogLevel.VERBOSE); logger.debug("foo"); logger.info("bar"); logger.verbose("qaz"); logger.error(null, "qux"); assertThat(ShadowLog.getLogs()).hasSize(4); }
@Test public void errorMessagesShowInLog() throws Exception { Logger logger = Logger.with(Analytics.LogLevel.DEBUG); Throwable throwable = new AssertionError("testing"); logger.error(throwable, "some message with an %s", "argument"); assertThat(ShadowLog.getLogs()) // .containsExactly( new LogItemBuilder() // .type(Log.ERROR) // .throwable(throwable) // .msg("some message with an argument") // .build()); }
@Test public void debugMessagesShowInLog() { Logger logger = Logger.with(Analytics.LogLevel.DEBUG); logger.debug("some message with an %s", "argument"); assertThat(ShadowLog.getLogs()) // .containsExactly( new LogItemBuilder() // .type(Log.DEBUG) // .msg("some message with an argument") // .build()); }
@Test public void verboseMessagesShowInLog() { Logger logger = Logger.with(Analytics.LogLevel.VERBOSE); logger.verbose("some message with an %s", "argument"); assertThat(ShadowLog.getLogs()) // .containsExactly( new LogItemBuilder() // .type(Log.VERBOSE) // .msg("some message with an argument") // .build()); }
@Test public void infoMessagesShowInLog() { Logger logger = Logger.with(Analytics.LogLevel.INFO); logger.info("some message with an %s", "argument"); assertThat(ShadowLog.getLogs()) // .containsExactly( new LogItemBuilder() // .type(Log.INFO) // .msg("some message with an argument") // .build()); }
@Test public void debugTest() { Timber.plant(new Timber.DebugTree()); logger.debug("Hello, world!"); List<LogItem> logs = ShadowLog.getLogs(); assertThat(logs).hasSize(1); LogItem log = logs.get(0); assertThat(log.type).isEqualTo(Log.DEBUG); assertThat(log.tag).isEqualTo("TimberLoggerAdapterTest"); assertThat(log.msg).isEqualTo("Hello, world!"); assertThat(log.throwable).isNull(); } }
@Test public void subLog() throws Exception { Logger logger = Logger.with(Analytics.LogLevel.DEBUG).subLog("foo"); logger.debug("some message with an %s", "argument"); assertThat(ShadowLog.getLogs()) // .containsExactly( new LogItemBuilder() // .tag("Analytics-foo") // .type(Log.DEBUG) // .msg("some message with an argument") // .build()); }