@Before
public void beforeTest() {
placeFillInVariable(1, OMParser.parse("0"));
placeFillInVariable(2, OMParser.parse("1"));
placeFillInVariable(3, OMParser.parse("test"));
placeExerciseVariable("a", OMParser.parse("0"));
placeExerciseVariable("b", OMParser.parse("1"));
placeExerciseVariable("c", OMParser.parse("test"));
}
@Test
public void testIfthenelse(){
assertTrue("'else'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse(0, 'then', 'else')")));
assertTrue("'then'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse(1, 'then', 'else')")));
assertTrue("'five'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse(5.7, 'five', 'notFive')")));
}
@Test
public void testIfthenelseWithInput(){
assertTrue("'else'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse([pos=1], 'then', 'else')")));
assertTrue("'test'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse(1, '[pos=3]', 'else')")));
assertTrue("'test'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse([pos=2], '[pos=3]', 'notFive')")));
}
@Test
public void testIfthenelseWithVariables(){
assertTrue("'else'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse([var=a], 'then', 'else')")));
assertTrue("'test'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse(1, '[var=c]', 'else')")));
assertTrue("'test'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse([var=b], '[var=c]', 'notFive')")));
}
@Test
public void testIfthenelseWithExpressions(){
assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse('5*2 +5 == 5*3', 'a', 'b')")));
assertTrue("'b'".equals(getEvaluator().getResultAsEvaluatorString("ifthenelse('ifthenelse(0, '1', '0')', 'a', 'b')")));
}
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testIfthenelseWithWrongInputCharacter(){
getEvaluator().getResultAsEvaluatorString("ifthenelse(a, 'a', 'b')");
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testIfthenelseWithTwoRationalAndOneTextArgument(){
getEvaluator().getResultAsEvaluatorString("ifthenelse(1, 0, 'b')");
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testIfthenelseWithThreeRationalArguments(){
getEvaluator().getResultAsEvaluatorString("ifthenelse(1, 0, 7)");
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testIfthenelseWithOneArgument(){
getEvaluator().getResultAsEvaluatorString("ifthenelse(1)");
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testIfthenelseWithTwoArguments(){
getEvaluator().getResultAsEvaluatorString("ifthenelse(0, 'this')");
}
@Test(expected=UndefinedExerciseVariableException.class)
public void testIfthenelseWithMissingExerciseVariable(){
getEvaluator().getResultAsEvaluatorString("ifthenelse('[var=j]', 'a', 'b')");
}
@Test(expected=UndefinedFillInVariableException.class)
public void testIfthenelseWithMissingInput(){
getEvaluator().getResultAsEvaluatorString("ifthenelse('[pos=42]', 'a', 'b')");
}