/**
*
*/
package com.sap.furcas.parsergenerator.tcs.t2m.grammar.rules;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import com.sap.furcas.parsergenerator.util.VarStringBuffer;
/**
*
*/
public class TestRules {
protected static final String COLONSTRING = "\n :\n ";
protected static final String SEMICOLONSTRING = "\n ;\n";
private static final String RETURNSTRING = " returns[";
private static final String INITSTRING = " @init{";
/**
* Test method for {@link com.sap.furcas.parsergenerator.tcs.t2m.grammar.rules.AbstractAntlr3Rule#AbstractAntlr3Rule(java.lang.String)}.
*/
@Test
public void testAbstractAntlr3Rule() {
VarStringBuffer result = new VarStringBuffer();
AbstractAntlr3Rule rule = new AbstractAntlr3Rule("head") {
@Override
protected void addRuleBody(VarStringBuffer buf) {
buf.append("body");
}
@Override
public int getLength() {
return 42;
}};
rule.addToSerializationBuffer(result);
assertEquals("head" + COLONSTRING + "body" + SEMICOLONSTRING, result.toString());
// test toString as well
assertEquals("head" + COLONSTRING + "body" + SEMICOLONSTRING, rule.toString());
}
/**
* Test method for {@link com.sap.furcas.parsergenerator.tcs.t2m.grammar.rules.AbstractAntlr3Rule#addToSerializationBuffer(com.sap.furcas.parsergenerator.util.VarStringBuffer)}.
*/
@Test
public void testClassRule() {
VarStringBuffer result ;
ClassProductionRule rule = new ClassProductionRule("head", "returnDec", "initDec", "body", null);
result = new VarStringBuffer();
rule.addToSerializationBuffer(result);
assertEquals("head" + RETURNSTRING + "returnDec" + "]" + INITSTRING + "initDec" +"}" + COLONSTRING + "body" + SEMICOLONSTRING, result.toString());
rule = new ClassProductionRule("head", null, "initDec", "body", null);
result = new VarStringBuffer();
rule.addToSerializationBuffer(result);
assertEquals("head" + INITSTRING + "initDec" +"}" + COLONSTRING + "body" + SEMICOLONSTRING, result.toString());
rule = new ClassProductionRule("head", null, null, "body", null);
result = new VarStringBuffer();
rule.addToSerializationBuffer(result);
assertEquals("head" + COLONSTRING + "body" + SEMICOLONSTRING, result.toString());
}
/**
* Test method for {@link com.sap.furcas.parsergenerator.tcs.t2m.grammar.rules.AbstractAntlr3Rule#getLength()}.
*/
@Test
public void testOperatorTemplateProductionRule() {
VarStringBuffer result ;
OperatorTemplateProductionRule rule = new OperatorTemplateProductionRule("head", "paramDec", "returnDec", "initDec", "body");
result = new VarStringBuffer();
rule.addToSerializationBuffer(result);
assertEquals("head" +"[" +"paramDec"+"]"+ RETURNSTRING + "returnDec" + "]" + INITSTRING + "initDec" +"}" + COLONSTRING + "body" + SEMICOLONSTRING + " finally {onExitTemplateRule();}", result.toString());
rule = new OperatorTemplateProductionRule("head", null, "returnDec", "initDec", "body");
result = new VarStringBuffer();
rule.addToSerializationBuffer(result);
assertEquals("head" + RETURNSTRING + "returnDec" + "]" + INITSTRING + "initDec" +"}" + COLONSTRING + "body" + SEMICOLONSTRING + " finally {onExitTemplateRule();}", result.toString());
rule = new OperatorTemplateProductionRule("head", null, null, "initDec", "body");
result = new VarStringBuffer();
rule.addToSerializationBuffer(result);
assertEquals("head" + INITSTRING + "initDec" +"}" + COLONSTRING + "body" + SEMICOLONSTRING + " finally {onExitTemplateRule();}", result.toString());
rule = new OperatorTemplateProductionRule("head", null, null, null, "body");
result = new VarStringBuffer();
rule.addToSerializationBuffer(result);
assertEquals("head" + COLONSTRING + "body" + SEMICOLONSTRING + " finally {onExitTemplateRule();}", result.toString());
}
/**
* Test method for {@link com.sap.furcas.parsergenerator.tcs.t2m.grammar.rules.AbstractAntlr3Rule#addRuleHead(com.sap.furcas.parsergenerator.util.VarStringBuffer)}.
*/
@Test
public void testSimpleRule() {
VarStringBuffer result ;
SimpleProductionRule rule = new SimpleProductionRule("head", "body");
result = new VarStringBuffer();
rule.addToSerializationBuffer(result);
assertEquals("head" + COLONSTRING + "body" + SEMICOLONSTRING, result.toString());
}
@Test
public void testSymbolRule() {
VarStringBuffer result ;
SymbolProductionRule rule = new SymbolProductionRule("head", "body");
result = new VarStringBuffer();
rule.addToSerializationBuffer(result);
assertEquals("head" + COLONSTRING + "'body'" + SEMICOLONSTRING, result.toString());
}
}