/** * */ package com.sap.furcas.parsergenerator.tcs.t2m.validation; import static com.sap.furcas.test.testutils.StringListHelper.list; import static org.junit.Assert.assertEquals; import org.junit.Test; import com.sap.furcas.emf.stubs.EcoreAnyStub; import com.sap.furcas.metamodel.FURCAS.TCS.stubs.ClassTemplateStub; import com.sap.furcas.metamodel.FURCAS.TCS.stubs.ConcreteSyntaxStub; import com.sap.furcas.metamodel.FURCAS.TCS.stubs.TemplateStub; import com.sap.furcas.parsergenerator.tcs.t2m.grammar.SemanticErrorBucket; import com.sap.furcas.parsergenerator.tcs.t2m.grammar.handlerStub.MetaLookupStub; /** * */ public class TestTemplateNameValidation { @Test public void testValidateEmpty() { ConcreteSyntaxStub syntaxStub = new ConcreteSyntaxStub(); MetaLookupStub metaLookupStub = new MetaLookupStub(); SemanticErrorBucket errorBucket = new SemanticErrorBucket(); TemplateNameValidation validation = new TemplateNameValidation(); validation.validate(syntaxStub, metaLookupStub, errorBucket); assertEquals(0, errorBucket.getErrors().size()); } @Test public void testValidateOneTemplate() { ConcreteSyntaxStub syntaxStub = new ConcreteSyntaxStub(); MetaLookupStub metaLookupStub = new MetaLookupStub(); SemanticErrorBucket errorBucket = new SemanticErrorBucket(); TemplateStub tempStub = new TemplateStub(); tempStub.names = list("test"); syntaxStub.templates.add(tempStub); TemplateNameValidation validation = new TemplateNameValidation(); validation.validate(syntaxStub, metaLookupStub, errorBucket); assertEquals(0, errorBucket.getErrors().size()); } @Test public void testValidateTwoTemplate() { ConcreteSyntaxStub syntaxStub = new ConcreteSyntaxStub(); MetaLookupStub metaLookupStub = new MetaLookupStub(); SemanticErrorBucket errorBucket = new SemanticErrorBucket(); TemplateStub tempStub = new TemplateStub(); tempStub.names = list("test"); syntaxStub.templates.add(tempStub); tempStub = new TemplateStub(); tempStub.names = list("test2"); syntaxStub.templates.add(tempStub); TemplateNameValidation validation = new TemplateNameValidation(); validation.validate(syntaxStub, metaLookupStub, errorBucket); assertEquals(0, errorBucket.getErrors().size()); } @Test public void testValidateDuplicateClassTemplateNamesDifferentMode() { ConcreteSyntaxStub syntaxStub = new ConcreteSyntaxStub(); MetaLookupStub metaLookupStub = new MetaLookupStub(); SemanticErrorBucket errorBucket = new SemanticErrorBucket(); ClassTemplateStub tempStub = new ClassTemplateStub(); tempStub.names = list("test"); tempStub.mode = "mode1"; syntaxStub.templates.add(tempStub); tempStub = new ClassTemplateStub(); tempStub.names = list("test"); tempStub.mode = "mode2"; syntaxStub.templates.add(tempStub); TemplateNameValidation validation = new TemplateNameValidation(); validation.validate(syntaxStub, metaLookupStub, errorBucket); assertEquals(0, errorBucket.getErrors().size()); } @Test public void testValidateDifferentClassTemplateNamesSameModeMoinRef() { // tests after a specific bug ConcreteSyntaxStub syntaxStub = new ConcreteSyntaxStub(); MetaLookupStub metaLookupStub = new MetaLookupStub(); SemanticErrorBucket errorBucket = new SemanticErrorBucket(); ClassTemplateStub tempStub = new ClassTemplateStub(); EcoreAnyStub metaClass1 = new EcoreAnyStub(); metaClass1.name = "test1"; tempStub.metaReference = metaClass1; tempStub.mode = "mode1"; syntaxStub.templates.add(tempStub); EcoreAnyStub metaClass2 = new EcoreAnyStub(); metaClass2.name = "test2"; tempStub = new ClassTemplateStub(); tempStub.metaReference = metaClass2; tempStub.mode = "mode1"; syntaxStub.templates.add(tempStub); TemplateNameValidation validation = new TemplateNameValidation(); validation.validate(syntaxStub, metaLookupStub, errorBucket); assertEquals(0, errorBucket.getErrors().size()); } /******** error cases ****/ @Test public void testValidateNoName() { ConcreteSyntaxStub syntaxStub = new ConcreteSyntaxStub(); MetaLookupStub metaLookupStub = new MetaLookupStub(); SemanticErrorBucket errorBucket = new SemanticErrorBucket(); TemplateStub tempStub = new TemplateStub(); tempStub.names = null; syntaxStub.templates.add(tempStub); TemplateNameValidation validation = new TemplateNameValidation(); validation.validate(syntaxStub, metaLookupStub, errorBucket); assertEquals(1, errorBucket.getErrors().size()); } @Test public void testValidate2Errors() { ConcreteSyntaxStub syntaxStub = new ConcreteSyntaxStub(); MetaLookupStub metaLookupStub = new MetaLookupStub(); SemanticErrorBucket errorBucket = new SemanticErrorBucket(); TemplateStub tempStub = new TemplateStub(); tempStub.names = null; syntaxStub.templates.add(tempStub); tempStub = new TemplateStub(); tempStub.names = list(); syntaxStub.templates.add(tempStub); TemplateNameValidation validation = new TemplateNameValidation(); validation.validate(syntaxStub, metaLookupStub, errorBucket); assertEquals(2, errorBucket.getErrors().size()); } @Test public void testValidateDuplicateTemplateNames() { ConcreteSyntaxStub syntaxStub = new ConcreteSyntaxStub(); MetaLookupStub metaLookupStub = new MetaLookupStub(); SemanticErrorBucket errorBucket = new SemanticErrorBucket(); TemplateStub tempStub = new TemplateStub(); tempStub.names = list("test"); syntaxStub.templates.add(tempStub); tempStub = new TemplateStub(); tempStub.names = list("test"); syntaxStub.templates.add(tempStub); TemplateNameValidation validation = new TemplateNameValidation(); validation.validate(syntaxStub, metaLookupStub, errorBucket); assertEquals(1, errorBucket.getErrors().size()); } @Test public void testValidateDuplicateModedClassTemplateNames() { ConcreteSyntaxStub syntaxStub = new ConcreteSyntaxStub(); MetaLookupStub metaLookupStub = new MetaLookupStub(); SemanticErrorBucket errorBucket = new SemanticErrorBucket(); ClassTemplateStub tempStub = new ClassTemplateStub(); tempStub.names = list("test"); tempStub.mode = "errorMode"; syntaxStub.templates.add(tempStub); tempStub = new ClassTemplateStub(); tempStub.names = list("test"); tempStub.mode = "errorMode"; syntaxStub.templates.add(tempStub); TemplateNameValidation validation = new TemplateNameValidation(); validation.validate(syntaxStub, metaLookupStub, errorBucket); assertEquals(1, errorBucket.getErrors().size()); } }