package restx.common.watch; import static org.assertj.core.api.Assertions.assertThat; import com.google.common.eventbus.EventBus; import com.google.common.eventbus.Subscribe; import org.junit.Test; import java.util.ArrayList; import java.util.List; /** * User: xavierhanin * Date: 9/11/13 * Time: 5:53 PM */ public class EventCoalescorTest { @Test public void should_coalesce() throws Exception { EventBus eventBus = new EventBus(); final List<String> messages = new ArrayList<>(); eventBus.register(new Object() { @Subscribe public void onMessage(String msg) { messages.add(msg); } }); EventCoalescor coalescor = EventCoalescor.generic(eventBus, 30); coalescor.post("test1"); coalescor.post("test2"); coalescor.post("test1"); coalescor.post("test3"); Thread.sleep(40); assertThat(messages).containsExactly("test1", "test2", "test3"); messages.clear(); coalescor.post("test2"); coalescor.post("test1"); coalescor.post("test1"); coalescor.post("test1"); coalescor.post("test1"); Thread.sleep(40); assertThat(messages).containsExactly("test2", "test1"); } }