package org.uva.sea.ql.parser.test;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.uva.sea.ql.ast.stmt.AnswerableQuestion;
import org.uva.sea.ql.ast.stmt.ComputedQuestion;
import org.uva.sea.ql.ast.stmt.IfThenElseStatement;
import org.uva.sea.ql.ast.stmt.IfThenStatement;
import org.uva.sea.ql.ast.stmt.Stmt;
public class TestStatements {
private IParser<Stmt> parser;
public TestStatements() {
this.parser = new StmtParser();
}
@Test
public void testAnswerable() throws ParseError {
assertEquals(parser.parse("a: \"b\" c").getClass(), AnswerableQuestion.class);
}
@Test
public void testComputed() throws ParseError {
assertEquals(parser.parse("a: \"b\" c ( x + y )").getClass(), ComputedQuestion.class);
assertEquals(parser.parse("a: \"b\" c ( ( x + y ) * z )").getClass(), ComputedQuestion.class);
assertEquals(parser.parse("a: \"b\" c ( x )").getClass(), ComputedQuestion.class);
assertEquals(parser.parse("a: \"b\" c ( 1 )").getClass(), ComputedQuestion.class);
assertEquals(parser.parse("a: \"b\" c ( true )").getClass(), ComputedQuestion.class);
assertEquals(parser.parse("a: \"b\" c ( false )").getClass(), ComputedQuestion.class);
assertEquals(parser.parse("a: \"b\" c ( \"x\" )").getClass(), ComputedQuestion.class);
}
@Test
public void testIfThen() throws ParseError {
assertEquals(parser.parse("if ( x + y ) { b }").getClass(), IfThenStatement.class);
assertEquals(parser.parse("if ( ( x + y ) * z ) { b }").getClass(), IfThenStatement.class);
assertEquals(parser.parse("if ( x ) { b }").getClass(), IfThenStatement.class);
assertEquals(parser.parse("if ( 1 ) { b }").getClass(), IfThenStatement.class);
assertEquals(parser.parse("if ( true ) { b }").getClass(), IfThenStatement.class);
assertEquals(parser.parse("if ( false ) { b }").getClass(), IfThenStatement.class);
assertEquals(parser.parse("if ( \"x\" ) { b }").getClass(), IfThenStatement.class);
}
@Test
public void testIfThenElse() throws ParseError {
assertEquals(parser.parse("if ( x + y ) { b } else { e }").getClass(), IfThenElseStatement.class);
assertEquals(parser.parse("if ( ( x + y ) * z ) { b } else { e }").getClass(), IfThenElseStatement.class);
assertEquals(parser.parse("if ( x ) { b } else { e }").getClass(), IfThenElseStatement.class);
assertEquals(parser.parse("if ( 1 ) { b } else { e }").getClass(), IfThenElseStatement.class);
assertEquals(parser.parse("if ( true ) { b } else { e }").getClass(), IfThenElseStatement.class);
assertEquals(parser.parse("if ( false ) { b } else { e }").getClass(), IfThenElseStatement.class);
assertEquals(parser.parse("if ( \"x\" ) { b } else { e }").getClass(), IfThenElseStatement.class);
}
}