package com.github.fge.grappa.parsers;
import com.github.fge.grappa.Grappa;
import com.github.fge.grappa.rules.Rule;
import com.github.fge.grappa.run.ParseRunner;
import com.google.common.eventbus.Subscribe;
import org.testng.annotations.Test;
import static org.mockito.Mockito.only;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
public class EventBusParserTest
{
protected static class MyParser
extends EventBusParser<Void>
{
public Rule theRule()
{
return sequence(empty(), post(match()));
}
}
private static class MyListener
{
@Subscribe
public void triggered(final String ignored)
{
}
}
@Test
public void busPostTest()
{
final MyParser parser = Grappa.createParser(MyParser.class);
final MyListener listener = spy(new MyListener());
parser.register(listener);
final ParseRunner<Void> runner = new ParseRunner<>(parser.theRule());
runner.run("");
verify(listener, only()).triggered("");
}
}