Equals: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(18 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
=== Beschreibung ===
=== Beschreibung ===
Die Funktion ''equals'' vergleicht zwei Zeichenketten auf ihre exakte Übereinstimmung. Die Funktion erwartet zwei Strings und gibt einen Boolean zurück.
Die Funktion ''equals'' vergleicht zwei Zeichenketten auf ihre exakte Übereinstimmung. Die Funktion erwartet zwei Strings und gibt einen Boolean zurück.
Zeile 14: Zeile 17:
=== Beispiele ===
=== Beispiele ===
==== Standardfälle ====
==== Standardfälle ====
  equals('hallo','hallo')  --> returns true
  equals('hallo','hallo')  --> returns ''true''
  equals('JACK','jack')  --> returns false
  equals('JACK','jack')  --> returns ''false''
equals('2', 'sqrt(4)')  --> returns ''false''
equals(2, sqrt(4))  --> returns ''true''


==== Benutzung von Variablen ====
==== Benutzung von Variablen ====
equals('[pos=1]','text')
equals('text','[var=a]')
equals('[var=b]','[pos=2]')
====JUnit Tests====
<span class="mw-customtoggle-myDivision">[Anzeigen]</span>
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision">
@BeforeClass
public static void beforeTest() {
fillInVariableMap.put(7, OMConverter.toObject("<OMOBJ><OMSTR>hallo</OMSTR></OMOBJ>"));
fillInVariableMap.put(8, OMConverter.toObject("<OMOBJ><OMSTR>Hallo</OMSTR></OMOBJ>"));
exerciseVariableMap.put("g", OMConverter.toObject("<OMOBJ><OMSTR>hallo</OMSTR></OMOBJ>"));
exerciseVariableMap.put("h", OMConverter.toObject("<OMOBJ><OMSTR>Hallo</OMSTR></OMOBJ>"));
}
@Test
public void testEquals1() {
assertTrue(Evaluator.getBooleanResult("equals('hallo','hallo')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testEquals2() {
assertFalse(Evaluator.getBooleanResult("equals('HALLO','hallo')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testEquals3() {
assertFalse(Evaluator.getBooleanResult("equals('hallo welt','hallowelt')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testEquals4() {
assertTrue(Evaluator.getBooleanResult("equals(' ',' ')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testEquals5() {
assertFalse(Evaluator.getBooleanResult("equals(' ','  ')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testEquals6() {
assertTrue(Evaluator.getBooleanResult("equals('','')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testEquals7() {
assertTrue(Evaluator.getBooleanResult("equals('1', '1')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testEquals8() {
assertTrue(Evaluator.getBooleanResult("equals('3+5','8')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testEqualsWithInput1() {
assertTrue(Evaluator.getBooleanResult("equals('[pos=7]','hallo')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testEqualsWithInput2() {
assertFalse(Evaluator.getBooleanResult("equals('hallo','[pos=8]')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testEqualsWithVariables1() {
assertTrue(Evaluator.getBooleanResult("equals('[var=g]','hallo')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testEqualsWithVariables2() {
assertFalse(Evaluator.getBooleanResult("equals('hallo','[var=h]')", exerciseVariableMap, fillInVariableMap));
}
@Test
public void testEqualsWithExpressions() {
assertTrue(Evaluator.getBooleanResult("equals(equals('a','a'), equals('b','b'))", exerciseVariableMap, fillInVariableMap));
}


@Test (expected=ParserException.class)
equals('text',[var=a])
public void testEqualsWithWrongInputCharacter() {
Evaluator.getBooleanResult("equals(ab, ab)", exerciseVariableMap, fillInVariableMap);
fail();
}


@Test (expected=FunctionInvalidNumberOfArgumentsException.class)
==== Benutzung mit studentischen Eingaben ====
public void testEqualsWithThreeArguments() {
Evaluator.getBooleanResult("equals('hallo','hallo', 'test')", exerciseVariableMap, fillInVariableMap);
fail();
}


@Test (expected=UndefinedFillInVariableException.class)
'''Jack2:'''
public void testEqualsWithMissingInput() {
equals([pos=1],'text')
Evaluator.getBooleanResult("equals('[pos=42]','hallo')", exerciseVariableMap, fillInVariableMap);
equals([var=b],[pos=2])
fail();
}


@Test (expected=UndefinedExerciseVariableException.class)
'''Jack3:'''
public void testEqualsWithMissingExerciseVariable() {
equals([input=fillin1],'text')
Evaluator.getBooleanResult("equals('[var=j]','hallo')", exerciseVariableMap, fillInVariableMap);
equals([var=b],[input=fillin2])
fail();
}
</syntaxhighlight>


=== Hinweise ===
=== Hinweise ===
* Die Zeichenketten sollten in einfachen Anführungszeichen stehen, da sonst bei Rechenausdrücken das Ergebnis verglichen wird.
* Strings werden nicht in Sage umgeformt, beide Strings werden mit der Java-Methode equals verglichen.
* Wenn ein String mit einem mathematischen Ausdruck verglichen wird, dann wird zunächst der Ausdruck mit Sage evaluiert und das Ergebnis zu einem String umgeformt. Dieser wird dann mit dem anderen String verglichen. Dadurch liefert <code>equals('5',2+3)</code> ''true'' zurück.
* Wenn zwei mathematische Ausdrücke miteinander verglichen werden, dann werden beide Ausdrücke jeweils zuerst in Sage evaluiert. Sage liefert dann für beide das Ergebnis als Strings zurück. Diese werden dann miteinander verglichen.
* Es wird zwischen Groß- und Kleinschreibung unterschieden.
* Es wird zwischen Groß- und Kleinschreibung unterschieden.
* Die Funktion ''equals'' vergleicht zwei strings, auch Leerzeichen werden gezählt.
* Die Funktion ''equals'' vergleicht zwei Strings, auch Leerzeichen werden gezählt.
* 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:Zeichenkettenfunktionen]][[Kategorie:JACK2]][[Kategorie:JACK3]]

Aktuelle Version vom 18. April 2024, 11:28 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion equals vergleicht zwei Zeichenketten auf ihre exakte Übereinstimmung. Die Funktion erwartet zwei Strings und gibt einen Boolean zurück.

Syntax

equals(Zeichenkette zeichenkette1, Zeichenkette zeichenkette2)

Parameter

  • zeichenkette1 - erste zu vergleichende Zeichenkette
  • zeichenkette2 - zweite zu vergleichende Zeichenkette

Return Value

Beispiele

Standardfälle

equals('hallo','hallo')   --> returns true
equals('JACK','jack')   --> returns false
equals('2', 'sqrt(4)')  --> returns false
equals(2, sqrt(4))  --> returns true

Benutzung von Variablen

equals('text',[var=a])

Benutzung mit studentischen Eingaben

Jack2:
equals([pos=1],'text')
equals([var=b],[pos=2])
Jack3:
equals([input=fillin1],'text')
equals([var=b],[input=fillin2])

Hinweise

  • Die Zeichenketten sollten in einfachen Anführungszeichen stehen, da sonst bei Rechenausdrücken das Ergebnis verglichen wird.
  • Strings werden nicht in Sage umgeformt, beide Strings werden mit der Java-Methode equals verglichen.
  • Wenn ein String mit einem mathematischen Ausdruck verglichen wird, dann wird zunächst der Ausdruck mit Sage evaluiert und das Ergebnis zu einem String umgeformt. Dieser wird dann mit dem anderen String verglichen. Dadurch liefert equals('5',2+3) true zurück.
  • Wenn zwei mathematische Ausdrücke miteinander verglichen werden, dann werden beide Ausdrücke jeweils zuerst in Sage evaluiert. Sage liefert dann für beide das Ergebnis als Strings zurück. Diese werden dann miteinander verglichen.
  • Es wird zwischen Groß- und Kleinschreibung unterschieden.
  • Die Funktion equals vergleicht zwei Strings, auch Leerzeichen werden gezählt.
  • 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.