Substring: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 22: | Zeile 22: | ||
substring('[pos=1]',0,5) | substring('[pos=1]',0,5) | ||
substring('[var=a]',6,11) | substring('[var=a]',6,11) | ||
====JUnit Tests==== | |||
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed"> | |||
@Before | |||
public void beforeTest(){ | |||
placeFillInVariable(10, OMParser.parse("helloworld")); | |||
placeFillInVariable(0, OMParser.parse("0")); | |||
placeFillInVariable(5, OMParser.parse("5")); | |||
placeExerciseVariable("suba", OMParser.parse("helloworld")); | |||
placeExerciseVariable("a", OMParser.parse("0")); | |||
placeExerciseVariable("b", OMParser.parse("5")); | |||
} | |||
@Test public void testSubstring(){ | |||
assertTrue("'hello'".equals(getEvaluator().getResultAsEvaluatorString("substring('hello world', 0, 5)"))); | |||
assertTrue("'world'".equals(getEvaluator().getResultAsEvaluatorString("substring('hello world', 6, 11)"))); | |||
assertTrue("' '".equals(getEvaluator().getResultAsEvaluatorString("substring('hello world', 5, 6)"))); | |||
assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 0, 1)"))); | |||
assertTrue("'e'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4, 5)"))); | |||
assertTrue("''".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4, 4)"))); | |||
assertTrue("'e'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4.0, 5)"))); | |||
} | |||
@Test public void testSubstringWithInput(){ | |||
assertTrue("'orld'".equals(getEvaluator().getResultAsEvaluatorString("substring('[pos=10]', 6, 10)"))); | |||
assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', [pos=0], 1)"))); | |||
assertTrue("'e'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4, [pos=5])"))); | |||
} | |||
@Test public void testSubstringWithVariables(){ | |||
assertTrue("'orld'".equals(getEvaluator().getResultAsEvaluatorString("substring('[var=suba]', 6, 10)"))); | |||
assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', [var=a], 1)"))); | |||
assertTrue("'e'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4, [var=b])"))); | |||
} | |||
@Test(expected =InvalidEvaluatorFunctionArgumentException.class) | |||
public void testSubstringWithWrongInputSecondAndThirdArgument(){ | |||
getEvaluator().getResultAsEvaluatorString("substring('hello', -1, 6)"); | |||
} | |||
@Test(expected =InvalidEvaluatorFunctionArgumentException.class) | |||
public void testSubstringWithWrongInputSecondArgumentAsPointNumber(){ | |||
getEvaluator().getResultAsEvaluatorString("substring('hello', 1.3, 2)"); | |||
} | |||
@Test(expected =InvalidEvaluatorFunctionArgumentException.class) | |||
public void testSubstringWithWrongInputThirdArgumentAsPointNumber(){ | |||
getEvaluator().getResultAsEvaluatorString("substring('hello', 3, 1.5)"); | |||
} | |||
@Test(expected=InvalidEvaluatorFunctionArgumentException.class) | |||
public void testSubstringWithWrongInputCharacter(){ | |||
getEvaluator().getResultAsEvaluatorString("substring(a, a, a)"); | |||
} | |||
@Test(expected=UnsupportedEvaluatorFunctionException.class) | |||
public void testSubstringWithOneArgument(){ | |||
getEvaluator().getResultAsEvaluatorString("substring('hello')"); | |||
} | |||
@Test(expected=UnsupportedEvaluatorFunctionException.class) | |||
public void testSubstringWithTwoArguments(){ | |||
getEvaluator().getResultAsEvaluatorString("substring('hello', 2)"); | |||
} | |||
@Test(expected=UndefinedExerciseVariableException.class) | |||
public void testSubstringWithMissingExerciseVariable(){ | |||
getEvaluator().getResultAsEvaluatorString("substring('[var=j]', '[var=j]', '[var=j]')"); | |||
} | |||
@Test(expected=UndefinedFillInVariableException.class) | |||
public void testSubstringWithMissingInput(){ | |||
getEvaluator().getResultAsEvaluatorString("substring('[pos=42]', '[pos=42]', '[pos=42]')"); | |||
} | |||
</syntaxhighlight> | |||
=== Hinweise === | === Hinweise === |
Version vom 20. Juni 2017, 15:56 Uhr
Beschreibung
Die Funktion Substring gibt anhand des Anfangs- und der Endposition eine Zeichenkette aus einer übergebenen Zeichenkette zurück. Die Funktion erwartet einen Zeichenkette aus der eine Zeichenkette extrahiert werden soll und jeweils eine Zahl für die Anfangs- und die Endposition. Die Werte der Positionen dürfen nicht geringer als 0 und nicht größer als die Länge der übergebenen Zeichenkette sein. Es wird die extrahierte Zeichenkette zurück gegeben.
Syntax
substring(String zeichenkette, int anfangsPosition, int endPosition)
Parameter
- zeichenkette - die Zeichenkette aus der eine Zeichenkette extrahiert werde soll.
- anfangsPosition - die Position des ersten Zeichens in der Zeichenkette, ab dem extrahiert werden soll.
- endPosition - die Position+1 des letzten Zeichen, bis zu dem extrahiert werden soll.
Return Value
- Gibt einen String zurück
Beispiele
Standardfälle
substring('hello world',0,5) --> returns 'hello' substring('hello world',6,11) --> returns 'world'
Benutzung mit Variablen
substring('[pos=1]',0,5) substring('[var=a]',6,11)
JUnit Tests
@Before
public void beforeTest(){
placeFillInVariable(10, OMParser.parse("helloworld"));
placeFillInVariable(0, OMParser.parse("0"));
placeFillInVariable(5, OMParser.parse("5"));
placeExerciseVariable("suba", OMParser.parse("helloworld"));
placeExerciseVariable("a", OMParser.parse("0"));
placeExerciseVariable("b", OMParser.parse("5"));
}
@Test public void testSubstring(){
assertTrue("'hello'".equals(getEvaluator().getResultAsEvaluatorString("substring('hello world', 0, 5)")));
assertTrue("'world'".equals(getEvaluator().getResultAsEvaluatorString("substring('hello world', 6, 11)")));
assertTrue("' '".equals(getEvaluator().getResultAsEvaluatorString("substring('hello world', 5, 6)")));
assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 0, 1)")));
assertTrue("'e'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4, 5)")));
assertTrue("''".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4, 4)")));
assertTrue("'e'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4.0, 5)")));
}
@Test public void testSubstringWithInput(){
assertTrue("'orld'".equals(getEvaluator().getResultAsEvaluatorString("substring('[pos=10]', 6, 10)")));
assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', [pos=0], 1)")));
assertTrue("'e'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4, [pos=5])")));
}
@Test public void testSubstringWithVariables(){
assertTrue("'orld'".equals(getEvaluator().getResultAsEvaluatorString("substring('[var=suba]', 6, 10)")));
assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', [var=a], 1)")));
assertTrue("'e'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4, [var=b])")));
}
@Test(expected =InvalidEvaluatorFunctionArgumentException.class)
public void testSubstringWithWrongInputSecondAndThirdArgument(){
getEvaluator().getResultAsEvaluatorString("substring('hello', -1, 6)");
}
@Test(expected =InvalidEvaluatorFunctionArgumentException.class)
public void testSubstringWithWrongInputSecondArgumentAsPointNumber(){
getEvaluator().getResultAsEvaluatorString("substring('hello', 1.3, 2)");
}
@Test(expected =InvalidEvaluatorFunctionArgumentException.class)
public void testSubstringWithWrongInputThirdArgumentAsPointNumber(){
getEvaluator().getResultAsEvaluatorString("substring('hello', 3, 1.5)");
}
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testSubstringWithWrongInputCharacter(){
getEvaluator().getResultAsEvaluatorString("substring(a, a, a)");
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testSubstringWithOneArgument(){
getEvaluator().getResultAsEvaluatorString("substring('hello')");
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testSubstringWithTwoArguments(){
getEvaluator().getResultAsEvaluatorString("substring('hello', 2)");
}
@Test(expected=UndefinedExerciseVariableException.class)
public void testSubstringWithMissingExerciseVariable(){
getEvaluator().getResultAsEvaluatorString("substring('[var=j]', '[var=j]', '[var=j]')");
}
@Test(expected=UndefinedFillInVariableException.class)
public void testSubstringWithMissingInput(){
getEvaluator().getResultAsEvaluatorString("substring('[pos=42]', '[pos=42]', '[pos=42]')");
}
Hinweise
- Die Position 0 ist das erste Zeichen, nicht Position 1