### Question:
L { public static void d(Object msg) { if (sLogProxy != null) { sLogProxy.d(o2String(msg)); } }  static void setProxy(LogProxy logProxy); static void d(Object msg); static void d(String format, Object... msgs); static void e(Object msg); static void w(Object msg); static void onRuntimeException(RuntimeException e); static final String DEFAULT_TAG; }### Answer:
@Test public void d() { CountDownLatch countDownLatch = new CountDownLatch(4); L.setProxy(new L.LogProxy() { @Override public void d(String msg) { countDownLatch.countDown(); if (countDownLatch.getCount() == 3) { Assert.assertEquals("AndroidGodEye-String", msg); } if (countDownLatch.getCount() == 2) { Assert.assertTrue(msg.contains("AndroidGodEye-Exception")); } if (countDownLatch.getCount() == 1) { Assert.assertTrue(msg.contains(String.valueOf(LTest.this))); } if (countDownLatch.getCount() == 0) { Assert.assertEquals("null", msg); } } @Override public void w(String msg) { } @Override public void e(String msg) { Assert.fail(); } @Override public void onRuntimeException(RuntimeException e) { Assert.fail(); } }); L.d("AndroidGodEye-String"); L.d(new Exception("AndroidGodEye-Exception")); L.d(this); L.d(null); }