package lang;
import org.junit.Test;
public class Announcer_Test {
@Test
public void allowListenersAdditionWhileAnnouncing() throws Exception {
Announcer<Runnable> announcer = new Announcer<>(Runnable.class);
AlreadyAdded alreadyAdded = new AlreadyAdded(announcer);
announcer.addListener(alreadyAdded);
announcer.announce().run();
}
private static class AlreadyAdded implements Runnable {
private final Announcer<Runnable> announcer;
public AlreadyAdded(Announcer<Runnable> announcer) {
this.announcer = announcer;
}
@Override
public void run() {
announcer.addListener(new Runnable() {
@Override
public void run() {
//nothing to do ...
}
});
}
}
}