/**
*
*/
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.metamodel.FURCAS.TCS.stubs.ClassTemplateStub;
import com.sap.furcas.metamodel.FURCAS.TCS.stubs.ConcreteSyntaxStub;
import com.sap.furcas.parsergenerator.tcs.t2m.grammar.SemanticErrorBucket;
import com.sap.furcas.parsergenerator.tcs.t2m.grammar.handlerStub.MetaLookupStub;
/**
*
*/
public class TestMainTemplateValidation {
@Test
public void testValidateOneMain() {
ConcreteSyntaxStub syntaxStub = new ConcreteSyntaxStub();
MetaLookupStub metaLookupStub = new MetaLookupStub();
SemanticErrorBucket errorBucket = new SemanticErrorBucket();
ClassTemplateStub tempStub = new ClassTemplateStub();
tempStub.names = list("test");
tempStub.isMain = true;
syntaxStub.templates.add(tempStub);
MainTemplateValidation validator = new MainTemplateValidation();
validator.validate(syntaxStub, metaLookupStub, errorBucket);
assertEquals(0, errorBucket.getErrors().size());
}
@Test
public void testValidateOneMainOneNot() {
ConcreteSyntaxStub syntaxStub = new ConcreteSyntaxStub();
MetaLookupStub metaLookupStub = new MetaLookupStub();
SemanticErrorBucket errorBucket = new SemanticErrorBucket();
ClassTemplateStub tempStub = new ClassTemplateStub();
tempStub.names = list("test");
tempStub.isMain = true;
syntaxStub.templates.add(tempStub);
tempStub = new ClassTemplateStub();
tempStub.names = list("test2");
tempStub.isMain = false;
syntaxStub.templates.add(tempStub);
MainTemplateValidation validator = new MainTemplateValidation();
validator.validate(syntaxStub, metaLookupStub, errorBucket);
assertEquals(0, errorBucket.getErrors().size());
}
@Test
public void testValidateTwoMain() {
ConcreteSyntaxStub syntaxStub = new ConcreteSyntaxStub();
MetaLookupStub metaLookupStub = new MetaLookupStub();
SemanticErrorBucket errorBucket = new SemanticErrorBucket();
ClassTemplateStub tempStub = new ClassTemplateStub();
tempStub.names = list("test");
tempStub.isMain = true;
syntaxStub.templates.add(tempStub);
tempStub = new ClassTemplateStub();
tempStub.names = list("test2");
tempStub.isMain = true;
syntaxStub.templates.add(tempStub);
MainTemplateValidation validator = new MainTemplateValidation();
validator.validate(syntaxStub, metaLookupStub, errorBucket);
assertEquals(1, errorBucket.getErrors().size());
}
@Test
public void testValidateEmpty() {
ConcreteSyntaxStub syntaxStub = new ConcreteSyntaxStub();
MetaLookupStub metaLookupStub = new MetaLookupStub();
SemanticErrorBucket errorBucket = new SemanticErrorBucket();
MainTemplateValidation validator = new MainTemplateValidation();
validator.validate(syntaxStub, metaLookupStub, errorBucket);
// one error as one main classtemplate has to be defined
assertEquals(1, errorBucket.getErrors().size());
}
}