EvalEq

Aus JACK Wiki
Zur Navigation springen Zur Suche springen

Beschreibung

Die Funktion evalEq evaluiert zwei Ausdrücke miteinander. Das können z.B. zwei Fill-In Kästchen, die die linke und rechte Seite einer Gleichung darstellen, sein. evalEq erwartet zwei Strings und gibt einen String zurück.

Syntax

evalEq(Expression term1, Expression term2)

Parameter

  • term1 - der Ausdruck, der z.B. auf der linken Seite einer Gleichung steht
  • term2 - der Ausdruck, der z.B. auf der rechten Seite einer Gleichung steht

Return Value

  • Gibt einen String zurück, evaluiert aus string1-string2.

Beispiele

evalEq('x^2 + 4','3x')    --> returns 'x^2-3x+4'
evalEq('5','5')    --> returns '0'

JUnit Tests

[Anzeigen]

@Before 
public void beforeTest() {
  placeFillInVariable(1, OMParser.parse("0"));
  placeFillInVariable(2, OMParser.parse("1"));
		
  placeExerciseVariable("a", OMParser.parse("0"));
  placeExerciseVariable("b", OMParser.parse("1"));
}
	
@Test
public void testEvalEq() {
  assertTrue("'-1-x+x^2'".equals(getEvaluator().getResultAsEvaluatorString("evalEq('x^2', 'x+1')")));
  assertTrue("'x^2-(y+1)'".equals(getEvaluator().getResultAsEvaluatorString("evalEq('x^2', 'y+1')")));
  assertTrue("'5-(5)'".equals(getEvaluator().getResultAsEvaluatorString("evalEq('5', '5')")));
}
	
@Test
public void testEvalEqWithInput() {
  assertTrue("'-4-x^2'".equals(getEvaluator().getResultAsEvaluatorString("evalEq('[pos=1]','x^2+4')")));
  assertTrue("'-3+3*x'".equals(getEvaluator().getResultAsEvaluatorString("evalEq('3x-2','[pos=2]')")));
}
	
@Test
public void testEvalEqWithVariables() {
  assertTrue("'-4-x^2'".equals(getEvaluator().getResultAsEvaluatorString("evalEq('[var=a]','x^2+4')")));
  assertTrue("'-3+3*x'".equals(getEvaluator().getResultAsEvaluatorString("evalEq('3x-2','[var=b]')")));
}
	
@Test
public void testEvalEqWithONECharacter() {
  assertTrue("'a-(a)'".equals(getEvaluator().getResultAsEvaluatorString("evalEq(a, a)")));
}
	
@Test(expected=InvalidCASFunctionArgumentException.class)
public void testEvalEqWithEmptyArguments() {
  getEvaluator().getResultAsEvaluatorString("evalEq('' , '')");
}
	
@Test(expected=UndefinedExerciseVariableException.class)
public void testEvalEqWithoutExerciseVariable() {
  getEvaluator().getResultAsEvaluatorString("evalEq([var=j], [var=j])");
}
	
@Test(expected=UndefinedFillInVariableException.class)
public void testEvalEqWithoutInput() {
  getEvaluator().getResultAsEvaluatorString("evalEq([pos=42], [pos=42])");
}

Hinweise

  • Um den Ausdruck anschließend sinnvoll vergleichen zu können kann man z.B. die Funktion equalsExpr benutzen. Ein Beispiel:
equalsExpr(evalEq('x^2','x+1'),'x^2-x-1')    --> returns true