IsFraction: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
 
(11 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Zugehörige Evaluatoren ===
*'''MathEvaluator'''
=== Beschreibung ===
=== Beschreibung ===
Die Funktion ''isFraction'' prüft, ob es sich bei einem String bezüglich des Aufbaus um einen Bruch handelt. Die Funktion erwartet einen String, der darauf geprüft wird, ob er wie ein Bruch aufgebaut ist, und gibt einen Boolean zurück.
Die Funktion ''isFraction'' prüft, ob es sich bei einem Objekt bezüglich des Aufbaus um einen Bruch handelt. Die Funktion erwartet ein Objekt, der darauf geprüft wird, ob er wie ein Bruch aufgebaut ist, und gibt einen Boolean zurück.


=== Syntax ===
=== Syntax ===
  isFraction(Objekt zeichenkette)
  isFraction([[Objekt]] objekt)


=== Parameter ===
=== Parameter ===
* '''zeichenkette''' - der zu prüfende String
* '''objekt''' - das zu prüfende Objekt


=== Return Value ===
=== Return Value ===
Zeile 13: Zeile 16:
=== Beispiele ===
=== Beispiele ===
==== Standardfälle ====
==== Standardfälle ====
  isFraction('7/9')  --> returns true
  isFraction(7/9)  --> returns ''true''
  isFraction('10.76')  --> returns false
 
  isFraction(10.76)  --> returns ''false''
==== Benutzung von Variablen ====
isFraction('[pos=1]')
isFraction('[var=a]')
 
====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() {
OMOBJ six = new OMOBJ();
six.setOMI(OMCreator.createOMI(6));
 
exerVar.put("a", OMConverter
.toObject("<OMOBJ><OMA><OMS name=\"divide\" cd=\"arith1\" /><OMI>1</OMI><OMI>5</OMI></OMA></OMOBJ>"));
exerVar.put("b", OMConverter
.toObject("<OMOBJ><OMA><OMS name=\"divide\" cd=\"arith1\" /><OMI>10</OMI><OMI>2</OMI></OMA></OMOBJ>"));
exerVar.put("c", OMConverter
.toObject("<OMOBJ><OMA><OMS name=\"divide\" cd=\"arith1\" /><OMI>7</OMI><OMI>9</OMI></OMA></OMOBJ>"));
exerVar.put("d", six);


fillIn.put(1, OMConverter
==== Benutzung mit Variablen ====
.toObject("<OMOBJ><OMA><OMS name=\"divide\" cd=\"arith1\" /><OMI>1</OMI><OMI>5</OMI></OMA></OMOBJ>"));
isFraction([var=a])
fillIn.put(2, OMConverter
.toObject("<OMOBJ><OMA><OMS name=\"divide\" cd=\"arith1\" /><OMI>10</OMI><OMI>2</OMI></OMA></OMOBJ>"));
fillIn.put(3, OMConverter
.toObject("<OMOBJ><OMA><OMS name=\"divide\" cd=\"arith1\" /><OMI>7</OMI><OMI>9</OMI></OMA></OMOBJ>"));
fillIn.put(4, six);
}


@Test
==== Benutzung mit studentischen Eingaben ====
public void testIsFraction1() {
'''JACK2:'''
assertEquals(true, Evaluator.getBooleanResult("isFraction(1/3)", exerVar, fillIn));
isFraction([pos=1])
}


@Test
'''JACK3:'''
public void testIsFraction2() {
isFraction([input=field1])
assertEquals(true, Evaluator.getBooleanResult("isFraction(7/10)", exerVar, fillIn));
}
 
@Test
public void testIsFraction3() {
assertEquals(true, Evaluator.getBooleanResult("isFraction(90/65)", exerVar, fillIn));
}
 
@Test
public void testIsFraction4() {
assertEquals(true, !Evaluator.getBooleanResult("isFraction(1)", exerVar, fillIn));
}
 
@Test
public void testIsFraction5() {
assertEquals(true, !Evaluator.getBooleanResult("isFraction(10.76)", exerVar, fillIn));
}
 
@Test
public void testIsFractionWithInput1() {
assertEquals(true, Evaluator.getBooleanResult("isFraction([pos=1])", exerVar, fillIn));
}
 
@Test
public void testIsFractionWithInput2() {
assertEquals(true, Evaluator.getBooleanResult("isFraction([pos=2])", exerVar, fillIn));
}
 
@Test
public void testIsFractionWithInput3() {
assertEquals(true, Evaluator.getBooleanResult("isFraction([pos=3])", exerVar, fillIn));
}
 
@Test
public void testIsFractionWithInput4() {
assertEquals(true, !Evaluator.getBooleanResult("isFraction([pos=4])", exerVar, fillIn));
}
 
@Test
public void testIsFractionWithVariables1() {
assertEquals(true, Evaluator.getBooleanResult("isFraction([var=a])", exerVar, fillIn));
}
 
@Test
public void testIsFractionWithVariables2() {
assertEquals(true, Evaluator.getBooleanResult("isFraction([var=b])", exerVar, fillIn));
}
 
@Test
public void testIsFractionWithVariables3() {
assertEquals(true, Evaluator.getBooleanResult("isFraction([var=c])", exerVar, fillIn));
}
 
@Test
public void testIsFractionWithVariables4() {
assertEquals(true, !Evaluator.getBooleanResult("isFraction([var=d])", exerVar, fillIn));
}
 
@Test(expected = FunctionInvalidArgumentTypeException.class)
public void testIsFractionWithWrongInputCharacter() {
Evaluator.getBooleanResult("isFraction(a)", exerVar, fillIn);
}
 
@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
public void testIsFractionWithTwoArguments() {
Evaluator.getBooleanResult("isFraction(3/2 , 0)", exerVar, fillIn);
}
 
@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
public void testIsFractionWithThreeArguments() {
Evaluator.getBooleanResult("isFraction(3/2, 1/3, 3/1)", exerVar, fillIn);
}
 
@Test(expected = UndefinedExerciseVariableException.class)
public void testIsFractionWithMissingExerciseVariable() {
Evaluator.getBooleanResult("isFraction('[var=j]')", exerVar, fillIn);
}
 
@Test(expected = UndefinedFillInVariableException.class)
public void testIsFractionWithMissingInput() {
Evaluator.getBooleanResult("isFraction('[pos=42]')", exerVar, fillIn);
}
</syntaxhighlight>


=== Hinweise ===
=== Hinweise ===
* Auch wenn sich jede rationale Zahl natürlich als Bruch darstellen lässt, wird bei dieser Funktion explizit der Aufbau des Strings überprüft.
* Auch wenn sich jede rationale Zahl natürlich als Bruch darstellen lässt, wird bei dieser Funktion explizit der Aufbau des Strings überprüft.
'''JACK3:'''
* Für die Überprüfung eines Fill-In Feldes muss der Formeleditor verwendet werden.
'''JACK2:'''
* Die Überprüfung mit Textfeldern funktioniert nur, wenn man den [[:Formeleditor]] verwendet.
* Gibt man keinen Editor an, wird für ein Textfeld (<code>[pos=1] usw.</code>) ein OpenMath String zurückgegeben. Dadurch gibt <code>isFraction([pos=1])</code> sowie <code> isFraction('[pos=1]')</code> immer false zurück.
Um ein richtiges Ergebnis zu erlangen, muss [[Matches#Benutzung von Textfeldern|Matches]] genutzt werden.


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

Aktuelle Version vom 17. April 2024, 09:05 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion isFraction prüft, ob es sich bei einem Objekt bezüglich des Aufbaus um einen Bruch handelt. Die Funktion erwartet ein Objekt, der darauf geprüft wird, ob er wie ein Bruch aufgebaut ist, und gibt einen Boolean zurück.

Syntax

isFraction(Objekt objekt)

Parameter

  • objekt - das zu prüfende Objekt

Return Value

Beispiele

Standardfälle

isFraction(7/9)   --> returns true

isFraction(10.76)   --> returns false

Benutzung mit Variablen

isFraction([var=a])

Benutzung mit studentischen Eingaben

JACK2:
isFraction([pos=1])
JACK3:
isFraction([input=field1])

Hinweise

  • Auch wenn sich jede rationale Zahl natürlich als Bruch darstellen lässt, wird bei dieser Funktion explizit der Aufbau des Strings überprüft.

JACK3:

  • Für die Überprüfung eines Fill-In Feldes muss der Formeleditor verwendet werden.

JACK2:

  • Die Überprüfung mit Textfeldern funktioniert nur, wenn man den Formeleditor verwendet.
  • Gibt man keinen Editor an, wird für ein Textfeld ([pos=1] usw.) ein OpenMath String zurückgegeben. Dadurch gibt isFraction([pos=1]) sowie isFraction('[pos=1]') immer false zurück.

Um ein richtiges Ergebnis zu erlangen, muss Matches genutzt werden.