Merge "EventLogger + test fixes"
This commit is contained in:
committed by
Android (Google) Code Review
commit
9cae44ac78
@@ -36,8 +36,11 @@ import java.util.Locale;
|
||||
*/
|
||||
public class EventLogger {
|
||||
|
||||
/** Prefix for the title added at the beginning of a {@link #dump(PrintWriter)} operation */
|
||||
private static final String DUMP_TITLE_PREFIX = "Events log: ";
|
||||
|
||||
/** Identifies the source of events. */
|
||||
private final String mTag;
|
||||
@Nullable private final String mTag;
|
||||
|
||||
/** Stores the events using a ring buffer. */
|
||||
private final ArrayDeque<Event> mEvents;
|
||||
@@ -55,7 +58,7 @@ public class EventLogger {
|
||||
* @param size the maximum number of events to keep in log
|
||||
* @param tag the string displayed before the recorded log
|
||||
*/
|
||||
public EventLogger(int size, String tag) {
|
||||
public EventLogger(int size, @Nullable String tag) {
|
||||
mEvents = new ArrayDeque<>(size);
|
||||
mMemSize = size;
|
||||
mTag = tag;
|
||||
@@ -64,10 +67,10 @@ public class EventLogger {
|
||||
/** Enqueues {@code event} to be logged. */
|
||||
public synchronized void enqueue(Event event) {
|
||||
if (mEvents.size() >= mMemSize) {
|
||||
mEvents.removeLast();
|
||||
mEvents.removeFirst();
|
||||
}
|
||||
|
||||
mEvents.addFirst(event);
|
||||
mEvents.addLast(event);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -91,13 +94,19 @@ public class EventLogger {
|
||||
dump(pw, "" /* prefix */);
|
||||
}
|
||||
|
||||
protected String getDumpTitle() {
|
||||
if (mTag == null) {
|
||||
return DUMP_TITLE_PREFIX;
|
||||
}
|
||||
return DUMP_TITLE_PREFIX + mTag;
|
||||
}
|
||||
|
||||
/** Dumps events using {@link PrintWriter} with a certain indent. */
|
||||
public synchronized void dump(PrintWriter pw, String indent) {
|
||||
pw.println(indent + "Events log: " + mTag);
|
||||
pw.println(getDumpTitle());
|
||||
|
||||
String childrenIndention = indent + " ";
|
||||
for (Event evt : mEvents) {
|
||||
pw.println(childrenIndention + evt.toString());
|
||||
pw.println(indent + evt.toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -71,9 +71,10 @@ public class EventLoggerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testThatPrintWriterProducesEmptyListFromEmptyLog() {
|
||||
public void testThatPrintWriterProducesOnlyTitleFromEmptyLog() {
|
||||
mEventLogger.dump(mTestPrintWriter);
|
||||
assertThat(mTestStringWriter.toString()).isEmpty();
|
||||
assertThat(mTestStringWriter.toString())
|
||||
.isEqualTo(mEventLogger.getDumpTitle() + "\n");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,27 +88,27 @@ public class EventLoggerTest {
|
||||
// insertion order, max size is 3
|
||||
new EventLogger.Event[] { TEST_EVENT_1, TEST_EVENT_2 },
|
||||
// expected events
|
||||
new EventLogger.Event[] { TEST_EVENT_2, TEST_EVENT_1 }
|
||||
new EventLogger.Event[] { TEST_EVENT_1, TEST_EVENT_2 }
|
||||
},
|
||||
{
|
||||
// insertion order, max size is 3
|
||||
new EventLogger.Event[] { TEST_EVENT_1, TEST_EVENT_3, TEST_EVENT_2 },
|
||||
// expected events
|
||||
new EventLogger.Event[] { TEST_EVENT_2, TEST_EVENT_3, TEST_EVENT_1 }
|
||||
new EventLogger.Event[] { TEST_EVENT_1, TEST_EVENT_3, TEST_EVENT_2 }
|
||||
},
|
||||
{
|
||||
// insertion order, max size is 3
|
||||
new EventLogger.Event[] { TEST_EVENT_1, TEST_EVENT_2, TEST_EVENT_3,
|
||||
TEST_EVENT_4 },
|
||||
// expected events
|
||||
new EventLogger.Event[] { TEST_EVENT_4, TEST_EVENT_3, TEST_EVENT_2 }
|
||||
new EventLogger.Event[] { TEST_EVENT_2, TEST_EVENT_3, TEST_EVENT_4 }
|
||||
},
|
||||
{
|
||||
// insertion order, max size is 3
|
||||
new EventLogger.Event[] { TEST_EVENT_1, TEST_EVENT_2, TEST_EVENT_3,
|
||||
TEST_EVENT_4, TEST_EVENT_5 },
|
||||
// expected events
|
||||
new EventLogger.Event[] { TEST_EVENT_5, TEST_EVENT_4, TEST_EVENT_3 }
|
||||
new EventLogger.Event[] { TEST_EVENT_3, TEST_EVENT_4, TEST_EVENT_5 }
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user