blob: 386e3e9e8bd194b572ac06d8bbeb5ac0ec534479 [file] [log] [blame]
package com.android.clockwork.common;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import java.util.Arrays;
import java.util.Collections;
@RunWith(RobolectricTestRunner.class)
public class EventHistoryTest {
public class MockEvent extends EventHistory.Event {
private final String event;
MockEvent(String event) {
this.event = event;
}
@Override
public String getName() {
return event;
}
@Override
public long getTimestampMs() {
return 0;
}
@Override
public boolean isDuplicateOf(EventHistory.Event event) {
return this.getName().equals(event.getName());
}
}
private EventHistory<MockEvent> mEventHistory;
@Test
public void testBasicRecordEvents() {
mEventHistory = new EventHistory<>("foo", 10, true);
MockEvent evt1 = new MockEvent("One");
MockEvent evt2 = new MockEvent("Two");
assertTrue(mEventHistory.recordEvent(evt1));
assertEquals(evt1, mEventHistory.getMostRecentEvent());
assertEquals(Collections.singletonList(evt1), mEventHistory.getAllEvents());
assertTrue(mEventHistory.recordEvent(evt2));
assertEquals(evt2, mEventHistory.getMostRecentEvent());
assertEquals(Arrays.asList(evt2, evt1), mEventHistory.getAllEvents());
}
@Test
public void testEventHistoryNoDups() {
mEventHistory = new EventHistory<>("foo", 10, false);
MockEvent evt1 = new MockEvent("One");
MockEvent evt1Copy = new MockEvent("One");
MockEvent evt2 = new MockEvent("Two");
MockEvent evt3 = new MockEvent("Three");
assertTrue(mEventHistory.recordEvent(evt1));
Assert.assertFalse(mEventHistory.recordEvent(evt1Copy));
assertEquals(evt1, mEventHistory.getMostRecentEvent());
assertEquals(Collections.singletonList(evt1), mEventHistory.getAllEvents());
assertTrue(mEventHistory.recordEvent(evt2));
assertTrue(mEventHistory.recordEvent(evt3));
assertTrue(mEventHistory.recordEvent(evt1Copy));
assertEquals(evt1Copy, mEventHistory.getMostRecentEvent());
assertEquals(
Arrays.asList(evt1Copy, evt3, evt2, evt1),
mEventHistory.getAllEvents());
}
@Test
public void testEventHistoryAllowsDups() {
mEventHistory = new EventHistory<>("foo", 10, true);
MockEvent evt1 = new MockEvent("One");
MockEvent evt1Copy = new MockEvent("One");
assertTrue(mEventHistory.recordEvent(evt1));
assertTrue(mEventHistory.recordEvent(evt1Copy));
assertEquals(evt1Copy, mEventHistory.getMostRecentEvent());
assertEquals(Arrays.asList(evt1Copy, evt1), mEventHistory.getAllEvents());
}
@Test
public void testSizeLimit() {
mEventHistory = new EventHistory<>("foo", 2, true);
MockEvent evt1 = new MockEvent("One");
MockEvent evt2 = new MockEvent("Two");
MockEvent evt3 = new MockEvent("Three");
MockEvent evt4 = new MockEvent("Four");
assertTrue(mEventHistory.recordEvent(evt1));
assertTrue(mEventHistory.recordEvent(evt2));
assertEquals(Arrays.asList(evt2, evt1), mEventHistory.getAllEvents());
assertTrue(mEventHistory.recordEvent(evt3));
assertEquals(Arrays.asList(evt3, evt2), mEventHistory.getAllEvents());
assertTrue(mEventHistory.recordEvent(evt4));
assertEquals(Arrays.asList(evt4, evt3), mEventHistory.getAllEvents());
}
}