/** * */ package com.sap.furcas.parsergenerator.tcs.t2m.grammar; import static com.sap.furcas.test.testutils.StringListHelper.list; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Test; import com.sap.furcas.metamodel.FURCAS.TCS.QualifiedNamedElement; import com.sap.furcas.metamodel.FURCAS.TCS.stubs.FunctionTemplateStub; import com.sap.furcas.metamodel.FURCAS.TCS.stubs.PrimitiveTemplateStub; import com.sap.furcas.metamodel.FURCAS.TCS.stubs.TemplateStub; import com.sap.furcas.parsergenerator.tcs.t2m.grammar.handlerStub.MetaModelElementResolutionHelperStub; import com.sap.furcas.runtime.common.exceptions.MetaModelLookupException; import com.sap.furcas.runtime.common.exceptions.NameResolutionFailedException; import com.sap.furcas.runtime.common.exceptions.SyntaxElementException; import com.sap.furcas.runtime.common.interfaces.ResolvedNameAndReferenceBean; import com.sap.furcas.runtime.parser.exceptions.SyntaxParsingException; import com.sap.furcas.runtime.tcs.MetamodelNameResolvingException; import com.sap.furcas.runtime.tcs.TemplateNamingHelper; import com.sap.furcas.test.testutils.ResolutionBeanHelper; /** * */ public class TemplateNamingHelperTest { /** * Test method for {@link com.sap.mi.textual.grammar.impl.tcs.t2m.grammar.naming.TemplateNamingHelper#TemplateNamingHelper(com.sap.mi.textual.interfaces.IMetaModelLookup, java.lang.String)}. * @throws SyntaxParsingException * @throws MetamodelNameResolvingException * @throws MetaModelLookupException */ @Test public void testTemplateNamingHelper() throws SyntaxElementException, MetamodelNameResolvingException, MetaModelLookupException { MetaModelElementResolutionHelperStub metaStub = new MetaModelElementResolutionHelperStub(); TemplateNamingHelper helper = new TemplateNamingHelper(metaStub); assertEquals("test_test2_class", helper.buildRuleName(ResolutionBeanHelper.refE("test", "test2", "class"))); /** test it uses the separator**/ TemplateStub template = new TemplateStub(); template.names = list("test2", "test", "class"); assertEquals("list(\"test2\",\"test\",\"class\")", helper.getMetaTypeListParameter(template)); } /** * Test method for {@link com.sap.mi.textual.grammar.impl.tcs.t2m.grammar.naming.TemplateNamingHelper#buildRuleName(TCS.QualifiedNamedElement)}. * @throws SyntaxElementException */ @Test public void testGetRuleNameQualifiedNamedElement() throws SyntaxElementException { MetaModelElementResolutionHelperStub metaStub = new MetaModelElementResolutionHelperStub(); TemplateNamingHelper helper = new TemplateNamingHelper(metaStub); TemplateStub template = new TemplateStub(); template.names = list("test", "class"); assertEquals("test_class", helper.getRuleName(template)); PrimitiveTemplateStub stub = new PrimitiveTemplateStub(); stub.templateName = "templateName"; stub.names = list("test", "class"); assertEquals("templateName", helper.getRuleName(stub)); } /** * Test method for {@link com.sap.mi.textual.grammar.impl.tcs.t2m.grammar.naming.TemplateNamingHelper#buildRuleName(TCS.QualifiedNamedElement)}. * @throws SyntaxElementException */ @Test public void testGetRuleNameQualifiedNamedElementException() throws SyntaxElementException { MetaModelElementResolutionHelperStub metaStub = new MetaModelElementResolutionHelperStub() { @Override public ResolvedNameAndReferenceBean resolve( QualifiedNamedElement template) throws NameResolutionFailedException{ throw new NameResolutionFailedException("test"); } }; TemplateNamingHelper helper = new TemplateNamingHelper(metaStub); TemplateStub template = new TemplateStub(); template.names = list("test", "class"); boolean caught = false; try { helper.getRuleName(template); } catch(SyntaxElementException e) { caught = true; } assertTrue("SyntaxElementException expected because metaStub does not know this class", caught); } /** * Test method for {@link com.sap.mi.textual.grammar.impl.tcs.t2m.grammar.naming.TemplateNamingHelper#buildRuleName(TCS.QualifiedNamedElement)}. * @throws SyntaxElementException */ @Test public void testGetRuleNamePrimitive() throws SyntaxElementException { MetaModelElementResolutionHelperStub metaStub = new MetaModelElementResolutionHelperStub(); TemplateNamingHelper helper = new TemplateNamingHelper(metaStub); PrimitiveTemplateStub stub = new PrimitiveTemplateStub(); stub.templateName = "templateName"; stub.names = list("test", "class"); assertEquals("templateName", helper.getRuleName(stub)); } /** * Test method for {@link com.sap.mi.textual.grammar.impl.tcs.t2m.grammar.naming.TemplateNamingHelper#buildRuleName(TCS.QualifiedNamedElement)}. * @throws SyntaxElementException */ @Test public void testGetRuleNameFunction() throws SyntaxElementException { MetaModelElementResolutionHelperStub metaStub = new MetaModelElementResolutionHelperStub(); TemplateNamingHelper helper = new TemplateNamingHelper(metaStub); FunctionTemplateStub stub = new FunctionTemplateStub(); stub.functionName = "functionName"; stub.names = list("test", "class"); assertEquals("functionname", helper.getRuleName(stub)); stub.functionName = "OTHERName"; stub.names = list("test", "class"); assertEquals("othername", helper.getRuleName(stub)); } /** * Test method for {@link com.sap.mi.textual.grammar.impl.tcs.t2m.grammar.naming.TemplateNamingHelper#buildRuleName(java.util.List)}. * @throws SyntaxElementException * @throws MetamodelNameResolvingException */ @Test public void testGetRuleNameListOfString() throws Exception { MetaModelElementResolutionHelperStub metaStub = new MetaModelElementResolutionHelperStub(); TemplateNamingHelper helper = new TemplateNamingHelper(metaStub); boolean caught = false; // Nullpointer is acceptable here as it points to a bug, and should in the integration case never happen. caught = false; try { helper.buildRuleName(null); } catch(NullPointerException e) { caught = true; } assertTrue("NullPointerException expected", caught); } /** * Test method for {@link com.sap.mi.textual.grammar.impl.tcs.t2m.grammar.naming.TemplateNamingHelper#getMetaTypeListParameter(TCS.QualifiedNamedElement)}. * @throws SyntaxElementException * @throws MetamodelNameResolvingException * @throws MetaModelLookupException */ @Test public void testGetReferedMetaObjectName() throws SyntaxElementException, MetaModelLookupException, MetamodelNameResolvingException { MetaModelElementResolutionHelperStub metaStub = new MetaModelElementResolutionHelperStub(); TemplateNamingHelper helper = new TemplateNamingHelper(metaStub); TemplateStub template = new TemplateStub(); template.names = list("test","class"); assertEquals("list(\"test\",\"class\")", helper.getMetaTypeListParameter(template)); } }