package com.sap.furcas.parser.tcs.scenario;
import static org.junit.Assert.assertEquals;
import java.io.File;
import java.util.Collection;
import org.junit.BeforeClass;
import org.junit.Test;
import com.sap.furcas.parsergenerator.TCSSyntaxContainerBean;
import com.sap.furcas.runtime.parser.ParserFacade;
import com.sap.furcas.runtime.parser.testbase.GeneratedParserBasedTest;
import com.sap.furcas.runtime.parser.testbase.GeneratedParserTestConfiguration;
import com.sap.furcas.runtime.parser.testbase.stubs.StubModelAdapter;
import com.sap.furcas.runtime.parser.testbase.stubs.StubModelElement;
import com.sap.furcas.runtime.parser.testbase.stubs.StubParsingHelper;
import com.sap.furcas.test.fixture.ScenarioFixtureData;
/**
* Simple Test for the custom Expression language
*/
public class TestEnumAutomatic extends GeneratedParserBasedTest {
private static final String LANGUAGE = "EnumTestAutomatic";
private static final File TCS = ScenarioFixtureData.ENUMTEST_AUTOMATIC_TCS;
private static final File[] METAMODELS = { ScenarioFixtureData.ENUMERATION_METAMODEL };
private static StubParsingHelper parsingHelper;
@BeforeClass
public static void setupParser() throws Exception {
GeneratedParserTestConfiguration testConfig = new GeneratedParserTestConfiguration(LANGUAGE, TCS, METAMODELS);
TCSSyntaxContainerBean syntaxBean = parseSyntax(testConfig);
ParserFacade facade = generateParserForLanguage(syntaxBean, testConfig, new ClassLookupImpl());
parsingHelper = new StubParsingHelper(facade);
}
/**
* test syntax errors cause parsing errors
*
* @throws Exception
*/
@Test
public void testSampleDirect() throws Exception {
StubModelAdapter stubModelHandler = parsingHelper.parseString("mars with speed slow", 0);
Collection<StubModelElement> expressions = stubModelHandler.getElementsOfType("enumtest::PlanetExpression");
assertEquals(1, expressions.size());
StubModelElement element = expressions.iterator().next();
StubModelElement planet = (StubModelElement) element.get("planet");
assertEquals("mars", planet.type);
StubModelElement speed = (StubModelElement) element.get("speed");
assertEquals("slow", speed.type);
}
}