private char cMax = Character.MAX_VALUE;
private char cMin = Character.MIN_VALUE;
@Before
public void beforeTest(){
placeFillInVariable(1, OMParser.parse("HaveQaQniceQday"));
placeFillInVariable(2, OMParser.parse("a"));
placeFillInVariable(3, OMParser.parse("b"));
placeExerciseVariable("a", OMParser.parse("HaveQaQniceQday"));
placeExerciseVariable("b", OMParser.parse("a"));
placeExerciseVariable("c", OMParser.parse("b"));
}
@Test
public void testReplace(){
assertTrue("'Hello$$World!$'".equals(getEvaluator().getResultAsEvaluatorString("replace('Hello World! ', ' ', '$')")));
assertTrue("'Have a nice day '".equals(getEvaluator().getResultAsEvaluatorString("replace('Have a nice day!', '!', ' ')")));
assertTrue("'1010101'".equals(getEvaluator().getResultAsEvaluatorString("replace('a0a0a0a', 'a', '1'))")));
assertTrue("'`0`0`0`'".equals(getEvaluator().getResultAsEvaluatorString("replace('a0a0a0a', 'a', '`'))")));
}
@Test
public void testReplaceWithInput(){
assertTrue("'Have a nice day'".equals(getEvaluator().getResultAsEvaluatorString("replace('[pos=1]', 'Q', ' ')")));
assertTrue("'H veQ QniceQd y'".equals(getEvaluator().getResultAsEvaluatorString("replace('[pos=1]', '[pos=2]', ' ')")));
assertTrue("'HbveQbQniceQdby'".equals(getEvaluator().getResultAsEvaluatorString("replace('[pos=1]', '[pos=2]', '[pos=3]')")));
}
@Test
public void testReplaceWithVariables(){
assertTrue("'Have a nice day'".equals(getEvaluator().getResultAsEvaluatorString("replace('[var=a]', 'Q', ' ')")));
assertTrue("'H veQ QniceQd y'".equals(getEvaluator().getResultAsEvaluatorString("replace('[var=a]', '[var=b]', ' ')")));
assertTrue("'HbveQbQniceQdby'".equals(getEvaluator().getResultAsEvaluatorString("replace('[var=a]', '[var=b]', '[var=c]')")));
}
@Test
public void testReplaceWithCharacterMaxMinValue(){
assertTrue(("'" + cMax + "0'").equals(getEvaluator().getResultAsEvaluatorString("replace('a0', 'a', '" + cMax + "'))")));
assertTrue(("'" + cMin + "0'").equals(getEvaluator().getResultAsEvaluatorString("replace('a0', 'a', '" + cMin + "'))")));
}
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testReplaceWithWrongInputSecondArgumentEmpty(){
getEvaluator().getResultAsEvaluatorString("replace('a', '', 'a')");
}
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void tesReplaceWithWrongInputThirdArgumentEmpty(){
getEvaluator().getResultAsEvaluatorString("replace('a ', ' ', '')");
}
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testReplaceWithWrongInputCharacter(){
getEvaluator().getResultAsEvaluatorString("replace(a, a, a)");
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testReplaceWithOneArgument(){
getEvaluator().getResultAsEvaluatorString("replace('a')");
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testReplaceWithTwoArguments(){
getEvaluator().getResultAsEvaluatorString("replace('a', 'b')");
}
@Test(expected=UndefinedExerciseVariableException.class)
public void testReplaceWithMissingExerciseVariable(){
getEvaluator().getResultAsEvaluatorString("replace('[var=j]', '[var=j]', '[var=j]')");
}
@Test(expected=UndefinedFillInVariableException.class)
public void testReplaceWithMissingInput(){
getEvaluator().getResultAsEvaluatorString("replace('[pos=42]', '[pos=42]', '[pos=42]')");
}