LastIndexOf: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 22: Zeile 22:
  lastIndexOf('text','[var=a]',4)
  lastIndexOf('text','[var=a]',4)
  lastIndexOf('[var=b]','x',[pos=2])
  lastIndexOf('[var=b]','x',[pos=2])
====JUnit Tests====
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed">
@Before
public void beforeTest(){
  placeExerciseVariable("a", OMParser.parse("oneString"));
  placeExerciseVariable("b", OMParser.parse("b"));
  placeFillInVariable(1, OMParser.parse("oneString"));
  placeFillInVariable(2, OMParser.parse("b"));
}
@Test
public void testLastIndexOf(){
  assertTrue(4 == getEvaluator().getNumberResult("lastIndexOf('abbbb','b',5)"));
  assertTrue(0 == getEvaluator().getNumberResult("lastIndexOf('cabade','c',10)"));
  assertTrue(-1 == getEvaluator().getNumberResult("lastIndexOf('cabade','test',10)"));
  assertTrue(6 == getEvaluator().getNumberResult("lastIndexOf('he  llo','lo',7)"));
  assertTrue(0 == getEvaluator().getNumberResult("lastIndexOf('','',0)"));
}
@Test
public void testLastIndexOfWithInput(){
  assertTrue(3 == getEvaluator().getNumberResult("lastIndexOf('[pos=1]','S',7)"));
  assertTrue(4 == getEvaluator().getNumberResult("lastIndexOf('abbbb','[pos=2]',5)"));
}
@Test
public void testLastIndexOfWithVariable(){
  assertTrue(3 == getEvaluator().getNumberResult("lastIndexOf('[var=a]','S',7)"));
  assertTrue(4 == getEvaluator().getNumberResult("lastIndexOf('abbbb','[var=b]',5)"));
}
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testLastIndexOfWithWrongInputCharacter(){
  getEvaluator().getNumberResult("lastIndexOf(a, a, a)");
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testLastIndexOfWithOneArgument(){
  getEvaluator().getNumberResult("lastIndexOf('abab')");
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testLastIndexOfWithTwoArguments(){
  getEvaluator().getNumberResult("lastIndexOf('abab', 'ab')");
}
@Test(expected=UndefinedExerciseVariableException.class)
public void testLastIndexOfWithMissingExerciseVariable(){
  getEvaluator().getNumberResult("lastIndexOf('[var=j]', '[var=j]', '[var=j]')");
}
@Test(expected=UndefinedFillInVariableException.class)
public void testLastIndexOfWithMissingInput(){
  getEvaluator().getNumberResult("lastIndexOf('[pos=42]', '[pos=42]', '[pos=42]')");
}
</syntaxhighlight>


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

Version vom 20. Juni 2017, 16:46 Uhr

Beschreibung

Die Funktion lastIndexOf bestimmt die Position an der eine Zeichenkette oder ein einzelnes Zeichen das letzte Mal innerhalb einer anderen Zeichenkette vorkommt. Außerdem muss angegeben werden, ab welcher Stelle innerhalb der durchsuchten Zeichenkette gesucht werden soll. Die Funktion erwartet zwei Strings, die zu durchsuchende und die zu suchende Zeichenkette, und eine Ganzzahl, bis zu welcher Stelle die Suche durchgeführt werden soll. Es wird eine Ganzzahl zurückgegeben.

Syntax

lastIndexOf(String zeichenkette, String muster, int position)

Parameter

  • zeichenkette - Zeichenkette in dem gesucht wird
  • muster - Zeichenkette, die innnerhalb der ersten gesucht wird
  • position - Endpositition der Suche

Return Value

  • Gibt eine Ganzzahl zurück

Beispiele

Standardfälle

lastIndexOf('Hello World!','o',0)   --> returns -1
lastIndexOf('Hello World!','o',6)   --> returns 4

Benutzung von Variablen

lastIndexOf('[pos=1]','x',10)
lastIndexOf('text','[var=a]',4)
lastIndexOf('[var=b]','x',[pos=2])

JUnit Tests

@Before
public void beforeTest(){
  placeExerciseVariable("a", OMParser.parse("oneString"));
  placeExerciseVariable("b", OMParser.parse("b"));
		
  placeFillInVariable(1, OMParser.parse("oneString"));
  placeFillInVariable(2, OMParser.parse("b"));
}
	
@Test
public void testLastIndexOf(){
  assertTrue(4 == getEvaluator().getNumberResult("lastIndexOf('abbbb','b',5)"));
  assertTrue(0 == getEvaluator().getNumberResult("lastIndexOf('cabade','c',10)"));
  assertTrue(-1 == getEvaluator().getNumberResult("lastIndexOf('cabade','test',10)"));
		
  assertTrue(6 == getEvaluator().getNumberResult("lastIndexOf('he   llo','lo',7)"));
  assertTrue(0 == getEvaluator().getNumberResult("lastIndexOf('','',0)"));
}

@Test
public void testLastIndexOfWithInput(){	
  assertTrue(3 == getEvaluator().getNumberResult("lastIndexOf('[pos=1]','S',7)"));
  assertTrue(4 == getEvaluator().getNumberResult("lastIndexOf('abbbb','[pos=2]',5)"));
}
	
@Test
public void testLastIndexOfWithVariable(){
  assertTrue(3 == getEvaluator().getNumberResult("lastIndexOf('[var=a]','S',7)"));
  assertTrue(4 == getEvaluator().getNumberResult("lastIndexOf('abbbb','[var=b]',5)"));
}
	
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testLastIndexOfWithWrongInputCharacter(){
  getEvaluator().getNumberResult("lastIndexOf(a, a, a)");
}
	
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testLastIndexOfWithOneArgument(){
  getEvaluator().getNumberResult("lastIndexOf('abab')");
}
	
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testLastIndexOfWithTwoArguments(){
  getEvaluator().getNumberResult("lastIndexOf('abab', 'ab')");
}
	
@Test(expected=UndefinedExerciseVariableException.class)
public void testLastIndexOfWithMissingExerciseVariable(){
  getEvaluator().getNumberResult("lastIndexOf('[var=j]', '[var=j]', '[var=j]')");
}
	
@Test(expected=UndefinedFillInVariableException.class)
public void testLastIndexOfWithMissingInput(){
  getEvaluator().getNumberResult("lastIndexOf('[pos=42]', '[pos=42]', '[pos=42]')");
}

Hinweise

  • Die Nummerierung innerhalb der Zeichenkette beginnt mit 0.
  • Sollte die gesuchte Zeichenkette nicht gefunden werden, gibt die Funktion -1 zurück.