CharAt: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Zeile 141: Zeile 141:
* Die angegebene Zahl darf nicht kleiner als 0 und nicht größer als die Länge der Zeichenkette -1 sein.
* Die angegebene Zahl darf nicht kleiner als 0 und nicht größer als die Länge der Zeichenkette -1 sein.


[[Kategorie:Evaluatorfunktion]]
[[Kategorie:Evaluatorfunktion]][[Kategorie:Zeichenkettenfunktionen]]

Version vom 4. Oktober 2017, 14:11 Uhr

Beschreibung

Die Funktion charAt gibt das Zeichen an einer beliebigen Stelle innerhalb einer Zeichenkette zurück. Das erste Zeichen hat dabei den Index 0, das zweite Zeichen den Index 1 usw.

Die Funktion erwartet eine Zeichenkette und eine natürliche Zahl und gibt das Zeichen an der entsprechenden Stelle zurück.

Syntax

charAt(Zeichenkette text, Ganzzahl stelle)

Parameter

  • zeichenkette - die Zeichenkette, aus der das Zeichen bestimmt wird
  • stelle - das wievielte Zeichen zurückgegeben werden soll

Return Value

  • Gibt eine Character zurück.

Beispiele

charAt('hallo',0)   --> returns h
charAt('JACK',3)   --> returns K

JUnit Tests

[Anzeigen]

@BeforeClass
public static void beforeTest() {
	
		charAtFillInVariableMap.put(1, OMConverter.toObject("<OMOBJ><OMSTR>W</OMSTR></OMOBJ>"));

		charAtExerciseVariableMap.put("a", OMConverter.toObject("<OMOBJ><OMSTR>W</OMSTR></OMOBJ>"));
	
}

@Test
public void testCharAt1() {
	assertEquals(OMCreator.createOMOBJ(OMCreator.createOMSTR("o")),
			Evaluator.evaluate("charAt('Hello World!1',4)", charAtExerciseVariableMap, charAtFillInVariableMap));
}

@Test
public void testCharAt2() {
	assertEquals(OMCreator.createOMOBJ(OMCreator.createOMSTR("W")),
			Evaluator.evaluate("charAt('Hello World!1',6)", charAtExerciseVariableMap, charAtFillInVariableMap));
}

@Test
public void testCharAt3() {
	assertEquals(OMCreator.createOMOBJ(OMCreator.createOMSTR(" ")),
			Evaluator.evaluate("charAt('Hello World!1',5)", charAtExerciseVariableMap, charAtFillInVariableMap));
}

@Test
public void testCharAt4() {
	assertEquals(OMCreator.createOMOBJ(OMCreator.createOMSTR("!")),
			Evaluator.evaluate("charAt('Hello World!1',11)", charAtExerciseVariableMap, charAtFillInVariableMap));
}

@Test
public void testCharAt5() {
	assertEquals(OMCreator.createOMOBJ(OMCreator.createOMSTR("1")),
			Evaluator.evaluate("charAt('Hello World!1',12)", charAtExerciseVariableMap, charAtFillInVariableMap));
}

@Test(expected = FunctionInvalidArgumentException.class)
public void testCharAtOutOfBoundsIndexNegative() {
	Evaluator.evaluate("charAt('Hello World!1',-1)", charAtExerciseVariableMap, charAtFillInVariableMap);
	fail();
}

@Test(expected = FunctionInvalidArgumentException.class)
public void testCharAtOutOfBoundsIndexToHigh() {
	Evaluator.evaluate("charAt('Hello World!1',55)", charAtExerciseVariableMap, charAtFillInVariableMap);
	fail();
}

@Test
public void testCharAtWithInput() {
	assertEquals(OMCreator.createOMOBJ(OMCreator.createOMSTR("W")),
			Evaluator.evaluate("charAt('Hello [pos=1]orld!1',6)", charAtExerciseVariableMap, charAtFillInVariableMap));
}

@Test
public void testCharAtWithVariables() {
	assertEquals(OMCreator.createOMOBJ(OMCreator.createOMSTR("W")),
			Evaluator.evaluate("charAt('Hello [var=a]orld!1',6)", charAtExerciseVariableMap, charAtFillInVariableMap));
}

@Test
public void testCharAtWithExpressions1() {
	assertEquals(OMCreator.createOMOBJ(OMCreator.createOMSTR("b")),
			Evaluator.evaluate("charAt(charAt('abc', 1), 0)", charAtExerciseVariableMap, charAtFillInVariableMap));
}

@Test(expected = FunctionInvalidArgumentTypeException.class) //Throws Error, because carAt returns a String! This should not work
public void testCharAtWithExpressions2() {
	assertEquals(OMCreator.createOMOBJ(OMCreator.createOMSTR("a")),
			Evaluator.evaluate("charAt('abc', charAt('00', 0))", charAtExerciseVariableMap, charAtFillInVariableMap));
}

@Test (expected=FunctionInvalidArgumentTypeException.class)
public void testCharAtWithWrongInputCharacter() {
	Evaluator.evaluate("charAt('abcd', a)", charAtExerciseVariableMap, charAtFillInVariableMap);
	fail();
}

@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
public void testCharAtWithOneArgument() {
	Evaluator.evaluate("charAt('abcd')", charAtExerciseVariableMap, charAtFillInVariableMap);
	fail();
}

@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
public void testCharAtWithThreeArguments() {
	Evaluator.evaluate("charAt('abcd', 0, 2)", charAtExerciseVariableMap, charAtFillInVariableMap);
	fail();
}

@Test(expected = FunctionInvalidArgumentException.class)
public void testCharAtWithTwoRationalArguments() {
	Evaluator.evaluate("charAt(5, 12)", charAtExerciseVariableMap, charAtFillInVariableMap);
}

@Test
public void testCharAtWithTwoTextArguments() {
	Evaluator.evaluate("charAt('abc', '1')", charAtExerciseVariableMap, charAtFillInVariableMap);
}

@Test(expected = UndefinedExerciseVariableException.class)
public void testCharAtWithMissingExcerciseVariable() {
	Evaluator.evaluate("charAt('[var=j]', 2)", charAtExerciseVariableMap, charAtFillInVariableMap);
	fail();
}

@Test(expected = UndefinedFillInVariableException.class)
public void testCharAtWithMissingInput() {
	Evaluator.evaluate("charAt('[pos=42]', 2)", charAtExerciseVariableMap, charAtFillInVariableMap);
	fail();
}

Hinweise

  • Die angegebene Zahl darf nicht kleiner als 0 und nicht größer als die Länge der Zeichenkette -1 sein.