DependsOn: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
 
(12 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
===Beschreibung===
===Beschreibung===
Die Funktion ''dependsOn'' prüft, ob ein Ausdruck von einer bestimmten Variable abhängt. Sie erwartet zwei Werte, zum einen die Expression und zum anderen die Variable. Die Funktion gibt einen Boolean zurück.
Die Funktion ''dependsOn'' prüft, ob ein Ausdruck von einer bestimmten Variable abhängt. Sie erwartet zwei Werte, zum einen die Expression und zum anderen die Variable. Die Funktion gibt einen Boolean zurück.
Zeile 14: Zeile 17:


===Beispiele===
===Beispiele===
dependsOn('2x^2 + 3x + 6','x')    --> returns true
==== Standardfälle ====
 
'''Jack2:'''
dependsOn('2x+3a-b','y')    --> returns false
dependsOn('2*x^2 + 3*x + 6','x')   --> returns ''true''
 
====JUnit Tests====
dependsOn('2*x^2 + 3*x + 6',x)   --> returns ''true''
<span class="mw-customtoggle-myDivision">[Anzeigen]</span>
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision">
dependsOn('2*x+3*a-b','y')   --> returns ''false''
@BeforeClass
public static void beforeTest() throws FunctionNotImplementedException, UndefinedFillInVariableException,
UndefinedExerciseVariableException, ParserException, ErroneousFillInVariableException,
ErroneousExerciseVariableException {
dependsOnFillInVariableMap.put(1, ExpressionParser.parse("x", null, null));
dependsOnFillInVariableMap.put(2, ExpressionParser.parse("y", null, null));
 
dependsOnExerciseVariableMap.put("a", ExpressionParser.parse("x", null, null));
dependsOnExerciseVariableMap.put("b", ExpressionParser.parse("y", null, null));
}
 
@Test
public void testDependsOn1() {
assertTrue(Evaluator.getBooleanResult("dependsOn('2*x+3*m-n+2*b','m')", dependsOnExerciseVariableMap,
dependsOnFillInVariableMap));
}
 
@Test
public void testDependsOn2() {
assertTrue(!Evaluator.getBooleanResult("dependsOn('2*x+3*a-x+2*b','y')", dependsOnExerciseVariableMap,
dependsOnFillInVariableMap));
}
 
@Test
public void testDependsOn3() {
assertTrue(Evaluator.getBooleanResult("dependsOn(2*x+3*m-n+2*b, m)", dependsOnExerciseVariableMap,
dependsOnFillInVariableMap));
}
 
@Test
public void testDependsOn4() {
assertTrue(Evaluator.getBooleanResult("dependsOn(m, m)", dependsOnExerciseVariableMap,
dependsOnFillInVariableMap));
}
 
@Test
public void testDependsOn5() {
assertTrue(!Evaluator.getBooleanResult("dependsOn(0, a)", dependsOnExerciseVariableMap,
dependsOnFillInVariableMap));
}
 
@Test
public void testDependsOnWithInput1() {
assertTrue(!Evaluator.getBooleanResult("dependsOn('2*x+3*a-x+2*b','[pos=2]')", dependsOnExerciseVariableMap,
dependsOnFillInVariableMap));
}
 
@Test
public void testDependsOnWithInput2() {
assertTrue(Evaluator.getBooleanResult("dependsOn('[pos=1]','x')", dependsOnExerciseVariableMap,
dependsOnFillInVariableMap));
}
 
@Test
public void testDependsOnWithVariables1() {
assertTrue(Evaluator.getBooleanResult("dependsOn('2*[var=a]+3*a-[var=a]+2*b','x')",
dependsOnExerciseVariableMap, dependsOnFillInVariableMap));
}
 
@Test
public void testDependsOnWithVariables2() {
assertTrue(Evaluator.getBooleanResult("dependsOn('2*[var=b]+3*a-x+2*b','y')", dependsOnExerciseVariableMap,
dependsOnFillInVariableMap));
}
 
@Test
public void testDependsOnWithVariables3() {
assertTrue(!Evaluator.getBooleanResult("dependsOn('2*a+a+4','[var=a]')", dependsOnExerciseVariableMap,
dependsOnFillInVariableMap));
}
 
@Test
public void testDependsOnWithONECharacter() {
assertTrue(Evaluator.getBooleanResult("dependsOn(a, a)", dependsOnExerciseVariableMap,
dependsOnFillInVariableMap));
}


@Test(expected = FunctionInvalidArgumentTypeException.class)
'''Jack3:'''
public void testDependsOnWithEmptyStringArguments() {
dependsOn('2x^2 + 3x + 6',x)   --> returns ''true''
Evaluator.getNumberResult("dependsOn('', '')", dependsOnExerciseVariableMap, dependsOnFillInVariableMap);
fail();
dependsOn('2x+3a-b',y)    --> returns ''false''
}


@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
==== Benutzung mit Variablen ====
public void testDependsOnWithEmptyArgument() {
dependsOn([var=a], [var=b])
Evaluator.getNumberResult("dependsOn()", dependsOnExerciseVariableMap, dependsOnFillInVariableMap);
fail();
}


@Test(expected = UndefinedExerciseVariableException.class)
==== Benutzung mit studentischen Eingaben ====
public void testDependsOnWithoutExerciseVariable() {
'''Jack2:'''
Evaluator.getNumberResult("dependsOn([var=j], [var=j])", dependsOnExerciseVariableMap,
dependsOn([pos=1], x)
dependsOnFillInVariableMap);
dependsOn([var=a], [pos=1])
fail();
}


@Test(expected = UndefinedFillInVariableException.class)
'''Jack3:'''
public void testDependsOnWithoutInput() {
dependsOn([input=field1], x)
Evaluator.getNumberResult("dependsOn([pos=42], [pos=42])", dependsOnExerciseVariableMap,
dependsOn([var=a], [input=field1])
dependsOnFillInVariableMap);
fail();
}
</syntaxhighlight>


===Hinweise===
===Hinweise===
* Wenn mit ''dependsOn'' eine studentische Eingabe überprüft werden soll, wird in JACK2 ein Editor in der Aufgabe benötigt.
* Soll dem Studenten kein Editor angezeigt werden, kann der Editor "invisible" genutzt werden.
* Bei der Verwendung in Jack2 müssen auch Mal-Zeichen und ähnliches ausgeschrieben werden. In Jack3 ist das nicht nötig.
* Wenn Variablen genutzt werden muss darauf geachtet werden, dass diese die Voraussetzung erfüllen.
* Wenn die Eingabe der Studierenden genutzt wird muss auch hier darauf geachtet werden, dass die Voraussetzungen erfüllt sind und ob diese an der Stelle genutzt werden können.


[[Kategorie:Evaluatorfunktion]]
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Testfunktionen]][[Kategorie:Ausdruckfunktionen]][[Kategorie:JACK2]][[Kategorie:JACK3]]

Aktuelle Version vom 18. April 2024, 10:26 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion dependsOn prüft, ob ein Ausdruck von einer bestimmten Variable abhängt. Sie erwartet zwei Werte, zum einen die Expression und zum anderen die Variable. Die Funktion gibt einen Boolean zurück.

Syntax

dependsOn(Ausdruck term, Zeichen variable)

Parameter

  • term - der Ausdruck, der nach Abhängigkeit der Variable geprüft wird
  • variable - die Variable, von der der Ausdruck abhängen soll

Return Value

  • Gibt einen Boolean zurück, true wenn der Ausdruck von der Variable abhängt, ansonsonsten false.

Beispiele

Standardfälle

Jack2:
dependsOn('2*x^2 + 3*x + 6','x')    --> returns true

dependsOn('2*x^2 + 3*x + 6',x)    --> returns true

dependsOn('2*x+3*a-b','y')    --> returns false
Jack3:
dependsOn('2x^2 + 3x + 6',x)    --> returns true

dependsOn('2x+3a-b',y)    --> returns false

Benutzung mit Variablen

dependsOn([var=a], [var=b])

Benutzung mit studentischen Eingaben

Jack2:
dependsOn([pos=1], x)
dependsOn([var=a], [pos=1])
Jack3:
dependsOn([input=field1], x)
dependsOn([var=a], [input=field1])

Hinweise

  • Wenn mit dependsOn eine studentische Eingabe überprüft werden soll, wird in JACK2 ein Editor in der Aufgabe benötigt.
  • Soll dem Studenten kein Editor angezeigt werden, kann der Editor "invisible" genutzt werden.
  • Bei der Verwendung in Jack2 müssen auch Mal-Zeichen und ähnliches ausgeschrieben werden. In Jack3 ist das nicht nötig.
  • Wenn Variablen genutzt werden muss darauf geachtet werden, dass diese die Voraussetzung erfüllen.
  • Wenn die Eingabe der Studierenden genutzt wird muss auch hier darauf geachtet werden, dass die Voraussetzungen erfüllt sind und ob diese an der Stelle genutzt werden können.