83 lines
2.3 KiB
Java
83 lines
2.3 KiB
Java
/*
|
|
* Copyright (C) 2007 The Guava Authors
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package com.google.common.eventbus;
|
|
|
|
import com.google.common.collect.Lists;
|
|
import java.util.List;
|
|
import java.util.concurrent.Executor;
|
|
import junit.framework.TestCase;
|
|
|
|
/**
|
|
* Test case for {@link AsyncEventBus}.
|
|
*
|
|
* @author Cliff Biffle
|
|
*/
|
|
public class AsyncEventBusTest extends TestCase {
|
|
private static final String EVENT = "Hello";
|
|
|
|
/** The executor we use to fake asynchronicity. */
|
|
private FakeExecutor executor;
|
|
|
|
private AsyncEventBus bus;
|
|
|
|
@Override
|
|
protected void setUp() throws Exception {
|
|
super.setUp();
|
|
executor = new FakeExecutor();
|
|
bus = new AsyncEventBus(executor);
|
|
}
|
|
|
|
public void testBasicDistribution() {
|
|
StringCatcher catcher = new StringCatcher();
|
|
bus.register(catcher);
|
|
|
|
// We post the event, but our Executor will not deliver it until instructed.
|
|
bus.post(EVENT);
|
|
|
|
List<String> events = catcher.getEvents();
|
|
assertTrue("No events should be delivered synchronously.", events.isEmpty());
|
|
|
|
// Now we find the task in our Executor and explicitly activate it.
|
|
List<Runnable> tasks = executor.getTasks();
|
|
assertEquals("One event dispatch task should be queued.", 1, tasks.size());
|
|
|
|
tasks.get(0).run();
|
|
|
|
assertEquals("One event should be delivered.", 1, events.size());
|
|
assertEquals("Correct string should be delivered.", EVENT, events.get(0));
|
|
}
|
|
|
|
/**
|
|
* An {@link Executor} wanna-be that simply records the tasks it's given. Arguably the Worst
|
|
* Executor Ever.
|
|
*
|
|
* @author cbiffle
|
|
*/
|
|
public static class FakeExecutor implements Executor {
|
|
List<Runnable> tasks = Lists.newArrayList();
|
|
|
|
@Override
|
|
public void execute(Runnable task) {
|
|
tasks.add(task);
|
|
}
|
|
|
|
public List<Runnable> getTasks() {
|
|
return tasks;
|
|
}
|
|
}
|
|
}
|