package com.github.jknack.antlr4ide.issues;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.EList;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import com.github.jknack.antlr4ide.lang.Grammar;
import com.github.jknack.antlr4ide.lang.GrammarAction;
import com.github.jknack.antlr4ide.lang.PrequelConstruct;
import com.github.jknack.antlr4ide.validation.Antlr4Validator;
@RunWith(PowerMockRunner.class)
@PrepareForTest({Antlr4Validator.class })
public class Issue28 {
@Test
public void actionOnDiffScopesMustNotFail() throws Exception {
EList<PrequelConstruct> prequels = new BasicEList<PrequelConstruct>();
Grammar grammar = createMock(Grammar.class);
GrammarAction action1 = createMock(GrammarAction.class);
GrammarAction action2 = createMock(GrammarAction.class);
Antlr4Validator validator = PowerMock.createPartialMock(Antlr4Validator.class, "error");
expect(grammar.getPrequels()).andReturn(prequels);
expect(action1.getScope()).andReturn("lexer");
expect(action1.getName()).andReturn("header");
expect(action2.getScope()).andReturn("parser");
expect(action2.getName()).andReturn("header");
prequels.add(action1);
prequels.add(action2);
Object[] mocks = {grammar, validator, action1, action2 };
replay(mocks);
validator.checkActionRedefinition(grammar);
verify(mocks);
}
}