package com.sap.furcas.ide.editor.contentassist;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.antlr.runtime.ClassicToken;
import org.antlr.runtime.Token;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.junit.Before;
import org.junit.Test;
import com.sap.furcas.metamodel.FURCAS.TCS.ConcreteSyntax;
import com.sap.furcas.parser.tcs.TCSParserFactory;
import com.sap.furcas.runtime.tcs.TcsUtil;
public class TestCtsContentAssistParsingHandler {
CtsContentAssistParsingHandler handler;
@Before
public void initParsingHandler() {
ResourceSet resourceSet = new ResourceSetImpl();
TCSParserFactory factory = new TCSParserFactory();
ConcreteSyntax tcsSyntax = (ConcreteSyntax) resourceSet.getEObject(URI.createURI(factory.getSyntaxUUID()), /*load*/true);
assertNotNull(tcsSyntax);
handler = new CtsContentAssistParsingHandler(resourceSet, TcsUtil.createClassTemplateMap(tcsSyntax),
TcsUtil.createOperatorTemplateMap(tcsSyntax));
}
@Test
public void testGetFloorTokenNull() {
Token token = new ClassicToken(0, "a");
CtsContentAssistContext context = new CtsContentAssistContext();
context.setToken(token);
handler.getPositionMap().put(new TextPosition(1, 0), context);
assertEquals(null, handler.getFloorContext(0, 0));
}
@Test
public void testGetFloorTokenDifferentLine() {
Token token = new ClassicToken(0, "a");
CtsContentAssistContext contextA = new CtsContentAssistContext();
contextA.setToken(token);
handler.getPositionMap().put(new TextPosition(0, 0), contextA);
token = new ClassicToken(0, "b");
CtsContentAssistContext contextB = new CtsContentAssistContext();
contextB.setToken(token);
handler.getPositionMap().put(new TextPosition(1, 10), contextB);
assertEquals(contextA, handler.getFloorContext(0, 0));
assertEquals(contextA, handler.getFloorContext(0, 15));
assertEquals(contextA, handler.getFloorContext(1, 0));
assertEquals(contextB, handler.getFloorContext(1, 10));
assertEquals(contextB, handler.getFloorContext(1, 15));
}
@Test
public void testGetFloorTokenSameLine() {
Token token = new ClassicToken(0, "a");
CtsContentAssistContext contextA = new CtsContentAssistContext();
contextA.setToken(token);
handler.getPositionMap().put(new TextPosition(0, 0), contextA);
token = new ClassicToken(0, "b");
CtsContentAssistContext contextB = new CtsContentAssistContext();
contextB.setToken(token);
handler.getPositionMap().put(new TextPosition(0, 10), contextB);
assertEquals(contextA, handler.getFloorContext(0, 0));
assertEquals(contextA, handler.getFloorContext(0, 9));
assertEquals(contextB, handler.getFloorContext(0, 10));
assertEquals(contextB, handler.getFloorContext(1, 0));
assertEquals(contextB, handler.getFloorContext(1, 15));
}
}