@BeforeClass
public static void beforeTest() {
fillInVariableMap.put(7, OMConverter.toObject("<OMOBJ><OMSTR>test</OMSTR></OMOBJ>"));
exerciseVariableMap.put("g", OMConverter.toObject("<OMOBJ><OMSTR>test</OMSTR></OMOBJ>"));
}
@Test
public void testIfthenelse1() {
assertEquals(ExpressionParser.parse("'else'", null, null),
Evaluator.evaluate("ifthenelse(0, 'then', 'else')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testIfthenelse2() {
assertEquals(ExpressionParser.parse("'then'", null, null),
Evaluator.evaluate("ifthenelse(1, 'then', 'else')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testIfthenelse3() {
assertEquals(ExpressionParser.parse("'five'", null, null),
Evaluator.evaluate("ifthenelse(5.7, 'five', 'notFive')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testIfthenelseWithInput1() {
assertEquals(ExpressionParser.parse("'else'", null, null),
Evaluator.evaluate("ifthenelse([pos=1], 'then', 'else')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testIfthenelseWithInput2() {
assertEquals(ExpressionParser.parse("'test'", null, null),
Evaluator.evaluate("ifthenelse(1, '[pos=7]', 'else')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testIfthenelseWithInput3() {
assertEquals(ExpressionParser.parse("'test'", null, null), Evaluator
.evaluate("ifthenelse([pos=2], '[pos=7]', 'notFive')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testIfthenelseWithVariables1() {
assertEquals(ExpressionParser.parse("'else'", null, null),
Evaluator.evaluate("ifthenelse([var=a], 'then', 'else')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testIfthenelseWithVariables2() {
assertEquals(ExpressionParser.parse("'test'", null, null),
Evaluator.evaluate("ifthenelse(1, '[var=g]', 'else')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testIfthenelseWithVariables3() {
assertEquals(ExpressionParser.parse("'test'", null, null), Evaluator
.evaluate("ifthenelse([var=b], '[var=g]', 'notFive')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testIfthenelseWithExpressions1() {
assertEquals(ExpressionParser.parse("a", null, null),
Evaluator.evaluate("ifthenelse('5*2 +5 == 5*3', 'a', 'b')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testIfthenelseWithExpressions2() {
assertEquals(ExpressionParser.parse("b", null, null), Evaluator
.evaluate("ifthenelse(ifthenelse(0, '1', '0'), 'a', 'b')", exerciseVariableMap, fillInVariableMap));
}
@Test(expected = ParserException.class)
public void testIfthenelseWithWrongInputCharacter() {
Evaluator.evaluate("ifthenelse(ab, 'a', 'b')", exerciseVariableMap, fillInVariableMap);
}
@Test
public void testIfthenelseWithTwoRationalAndOneTextArgument() {
assertEquals(ExpressionParser.parse("0", null, null), Evaluator.evaluate("ifthenelse(1, 0, 'b')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testIfthenelseWithThreeRationalArguments() {
assertEquals(ExpressionParser.parse("0", null, null), Evaluator.evaluate("ifthenelse(1, 0, 7)", exerciseVariableMap, fillInVariableMap));
}
@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
public void testIfthenelseWithOneArgument() {
Evaluator.evaluate("ifthenelse(1)", exerciseVariableMap, fillInVariableMap);
fail();
}
@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
public void testIfthenelseWithTwoArguments() {
Evaluator.evaluate("ifthenelse(0, 'this')", exerciseVariableMap, fillInVariableMap);
fail();
}
@Test(expected = UndefinedExerciseVariableException.class)
public void testIfthenelseWithMissingExerciseVariable() {
Evaluator.evaluate("ifthenelse('[var=j]', 'a', 'b')", exerciseVariableMap, fillInVariableMap);
fail();
}
@Test(expected = UndefinedFillInVariableException.class)
public void testIfthenelseWithMissingInput() {
Evaluator.evaluate("ifthenelse('[pos=42]', 'a', 'b')", exerciseVariableMap, fillInVariableMap);
fail();
}