EqualsExpr: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Zeile 13: Zeile 13:


===Beispiel===
===Beispiel===
  equalsExpr('x^2 - 5*x + 6','(x-2)*(x-3)')   --> returns true
  equalsExpr(x^2 - 5*x + 6,(x-2)*(x-3))    --> returns true
'''ACHTUNG BEI''' rationalen Zahlen:
equalsExpr(1/3 , 1/3) --> returns true
equalsExpr(divide(1,3), 1/3) --> returns true
equalsExpr(rational(1,3), 1/3) --> returns false
equalsExpr(1/3, rational(1,3)) --> returns false
equalsExpr(rational(1,3), rational(1,3)) --> returns true


====JUnit Tests====
Hier wird unterschieden, ob es eine rationale Zahl ist (mit [[Rational]]), oder ein ausgerechneter Wert (mit [[Division]]). Die rationale Zahl ist genauer als der ausgerechnete Wert und die Funktion ''equalsExpr'' liefert den boolischen Wert '''false'''.
<span class="mw-customtoggle-myDivision">[Anzeigen]</span>
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision">
@BeforeClass
public static void beforeTest() throws FunctionNotImplementedException, UndefinedFillInVariableException,
UndefinedExerciseVariableException, ParserException, ErroneousFillInVariableException, ErroneousExerciseVariableException {
equalsExprFillInVariableMap.put(1, ExpressionParser.parse("0", null, null));
equalsExprFillInVariableMap.put(2, ExpressionParser.parse("x^2", null, null));
 
equalsExprExerciseVariableMap.put("a", ExpressionParser.parse("0", null, null));
equalsExprExerciseVariableMap.put("b", ExpressionParser.parse("1", null, null));
equalsExprExerciseVariableMap.put("c", ExpressionParser.parse("5", null, null));
equalsExprExerciseVariableMap.put("d", ExpressionParser.parse("x^2", null, null));
}
 
@Test
public void testEqualsExpr1() {
assertTrue(Evaluator.getBooleanResult("equalsExpr('x^2-5*x+6','(x-2)*(x-3)')", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExpr2() {
assertTrue(Evaluator.getBooleanResult("equalsExpr('x*x-5*x+6','(x-2)*(x-3)')", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExpr3() {
assertTrue(Evaluator.getBooleanResult("equalsExpr('1/2*x^2+3*x-5','0.5*x^2+3*x-5')", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExpr4() {
assertTrue(Evaluator.getBooleanResult("equalsExpr('(a-b)/(b^2-a^2)','(a-b)/(b^2-a^2)')",
equalsExprExerciseVariableMap, equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExpr5() {
assertTrue(!Evaluator.getBooleanResult("equalsExpr('x^2+x+1','a^2+a+1')", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExpr6() {
assertTrue(Evaluator.getBooleanResult("equalsExpr('(x^2)/2','0.5*x^2')", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExpr7() {
assertTrue(Evaluator.getBooleanResult("equalsExpr('1','1')", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExprWithInput1() {
assertTrue(Evaluator.getBooleanResult("equalsExpr('0','[pos=1]')", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExprWithInput2() {
assertTrue(Evaluator.getBooleanResult("equalsExpr('x*x','[pos=2]')", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExprWithVariables1() {
assertTrue(Evaluator.getBooleanResult("equalsExpr('[var=b]*x^2+[var=c]*x+[var=a]','x^2+5*x')",
equalsExprExerciseVariableMap, equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExprWithVariables2() {
assertTrue(Evaluator.getBooleanResult("equalsExpr('[var=d]','x^2')", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExprWithEmptyStringArguments1() {
assertTrue(!Evaluator.getBooleanResult("equalsExpr('x^2+x+1','')", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExprWithEmptyStringArguments2() {
assertTrue(!Evaluator.getBooleanResult("equalsExpr('','x^2+x+1')", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExprWithEmptyStringArguments3() {
assertTrue(Evaluator.getBooleanResult("equalsExpr('','')", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test (expected = FunctionInvalidNumberOfArgumentsException.class)
public void testEqualsExprWithEmptyArgument() {
assertTrue(!Evaluator.getBooleanResult("equalsExpr()", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test
public void testEqualsExprWithONECharacter() {
assertTrue(Evaluator.getBooleanResult("equalsExpr(a, a)", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap));
}
 
@Test(expected = UndefinedExerciseVariableException.class)
public void testEqualsExprWithoutExerciseVariable() {
Evaluator.getBooleanResult("equalsExpr([var=j], [var=j])", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap);
fail();
}
 
@Test(expected = UndefinedFillInVariableException.class)
public void testEqualsExprWithoutInput() {
Evaluator.getBooleanResult("equalsExpr([pos=42], [pos=42])", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap);
fail();
}
 
@Test
public void testEqualsExprWithSemanticallyIncorrectInput() {
Evaluator.getBooleanResult("equalsExpr('(4,2)', '4.2')", equalsExprExerciseVariableMap,
equalsExprFillInVariableMap);
}
</syntaxhighlight>


===Hinweise===
===Hinweise===


[[Kategorie:Evaluatorfunktion]][[Kategorie:Ausdruckfunktionen]]
[[Kategorie:Evaluatorfunktion]][[Kategorie:Ausdruckfunktionen]]

Version vom 9. Juli 2018, 12:04 Uhr

Beschreibung

Die Funktion equalsExpr vergleicht zwei mathematische Ausdrücke miteinander. Sie erwartet zwei Strings und gibt einen Boolean zurück.

Syntax

equalsExpr(Ausdruck term1, Ausdruck term2)

Parameter

  • term1 - der Ausdruck, der als Grundlage für den Vergleich dient
  • term2 - der Ausdruck, der mit term1 verglichen werden soll

Return Value

  • Gibt einen Boolean zurück, true falls die beiden Ausdrücke übereinstimmen und false falls sie nicht übereinstimmen.

Beispiel

equalsExpr(x^2 - 5*x + 6,(x-2)*(x-3))    --> returns true

ACHTUNG BEI rationalen Zahlen:

equalsExpr(1/3 , 1/3) --> returns true
equalsExpr(divide(1,3), 1/3) --> returns true
equalsExpr(rational(1,3), 1/3) --> returns false
equalsExpr(1/3, rational(1,3)) --> returns false
equalsExpr(rational(1,3), rational(1,3)) --> returns true

Hier wird unterschieden, ob es eine rationale Zahl ist (mit Rational), oder ein ausgerechneter Wert (mit Division). Die rationale Zahl ist genauer als der ausgerechnete Wert und die Funktion equalsExpr liefert den boolischen Wert false.

Hinweise