package com.sap.furcas.parser.tcs.scenario;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
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.StubParsingHelper;
import com.sap.furcas.test.fixture.ScenarioFixtureData;
/**
* Simple Test for the a custom language having a metamodel with several subpackages and classnames that are not unique (only
* unique within package)
*/
public class TestMultiPackage extends GeneratedParserBasedTest {
private static final String LANGUAGE = "MultiPackage";
private static final File TCS = ScenarioFixtureData.MULTIPACKAGE_TCS;
private static final File[] METAMODELS = { ScenarioFixtureData.MULTIPACKAGE_METAMODEL };
private static final String DSLSAMPLEDIR = "./scenarioTestSample/";
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
public void testSample1() throws Exception {
StubModelAdapter stubModelHandler = parsingHelper.parseFile("ExpressionSample01.sam", DSLSAMPLEDIR, 0);
Collection<?> values = stubModelHandler.getElementsOfType("expression::rightPackage::ExpressionList");
assertNotNull(values);
assertEquals(1, values.size());
values = stubModelHandler.getElementsOfType("expression::rightPackage::BinaryExpression");
assertNotNull(values);
assertEquals(6, values.size());
values = stubModelHandler.getElementsOfType("expression::rightPackage::ValueExpression");
assertNotNull(values);
assertEquals(9, values.size());
}
@Test
public void testSample2() throws Exception {
parsingHelper.parseFile("ExpressionSample02.sam", DSLSAMPLEDIR, 1);
}
@Test
public void testSampleDirect() throws Exception {
parsingHelper.parseString("1+1+2", 0);
parsingHelper.parseString("1+1+", 1);
parsingHelper.parseString("1+1+a", 1);
parsingHelper.parseString("1+1+b, 2+c", 2);
}
}