package org.marketcetera.core.position.impl; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.greaterThanOrEqualTo; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import ca.odell.glazedlists.event.ListEvent; import ca.odell.glazedlists.event.ListEventListener; /* $License$ */ /** * Utility for asserting expected GlazedList list events. * * @author <a href="mailto:will@marketcetera.com">Will Horn</a> * @version $Id: ExpectedListChanges.java 16154 2012-07-14 16:34:05Z colin $ * @since 1.5.0 */ public class ExpectedListChanges<E> implements ListEventListener<E> { int current = 0; private final int[] expected; private final String name; public ExpectedListChanges(String name, int[] expected) { this.name = name; this.expected = expected; } @Override public void listChanged(ListEvent<E> listChanges) { while (listChanges.next()) { assertThat(name + " had an unexpected event", expected.length, greaterThan(current + 1)); int change = current / 2; assertEquals(name + ", change " + change, expected[current], listChanges.getType()); current++; assertEquals(name + ", change " + change, expected[current], listChanges.getIndex()); current++; } } public void exhausted() { assertThat(name + " did not have enough events", current, greaterThanOrEqualTo(expected.length)); } }