Klasa ParseResponse wyodrębnia łańcuch z argumentu wejściowego. Klasa ExtractToken wyodrębnia konkretny element (łańcuch) z argumentu
wejściowego. Obie klasy mogą być przydatne do obsługi niektórych typów
korelacji danych dynamicznych.
Klasa ParseResponse wyodrębnia łańcuch z argumentu wejściowego,
korzystając z wyrażenia regularnego na potrzeby dopasowywania wzorca.
package customcode;
import com.ibm.rational.test.lt.kernel.services.ITestExecutionServices;
import java.util.regex.*;
/**
* Klasa ParseResponse demonstruje użycie kodu niestandardowego do wyodrębnienia
* łańcucha z argumentu wejściowego z użyciem wyrażenia regularnego na potrzeby
* dopasowywania wzorca.
*
* W tym przykładzie przyjęto, że łańcuch wejściowy args[0] jest pełną odpowiedzią
* z poprzedniego żądania. Ta odpowiedź zawiera nagłówki wiadomości dnia
* w formacie takim jak:
*
* <a class=f href=r/d2>Wiadomości</a><small class=m> <span id=nw>
* </span></small></h2>
* <div class=ct>
* • <a href=s/213231>Burze przeszły na wschód
Polski</a>
* <br>• <a href=s/262502>Wzrost dostaw kamer
cyfrowych</a><br>
*
* Przy powyższej odpowiedzi wyodrębnionym łańcuchem będzie:
* Burze przeszły na wschód Polski
*/
/**
* @author Przykłady kodu niestandardowego IBM
*/
public class ParseResponse implements
com.ibm.rational.test.lt.kernel.custom.ICustomCode2 {
/**
* Instancje tej klasy zostaną utworzone za pomocą konstruktora bez argumentów.
*/
public ParseResponse() {}
public String exec(ITestExecutionServices tes, String[] args) {
String HeadlineStr = "Brak nagłówków";
String RegExpStr = ".*Wiadomości[^;]*;[^;]*;[^;]*;<a
href=([^>]*)>([^<]*)<"; Pattern pattern =
Pattern.compile(RegExpStr, Pattern.DOTALL); Matcher matcher =
pattern.matcher(args[0]);
if (matcher.lookingAt())
HeadlineStr = matcher.group(2);
else
tes.getTestLogManager().reportMessage("Dane wejściowe są niezgodne
ze wzorcem.");
return HeadlineStr;
}
Klasa ExtractToken wyodrębnia konkretny łańcuch z argumentu wejściowego.
package customcode;
import com.ibm.rational.test.lt.kernel.services.ITestExecutionServices;
/**
* Klasa ExtractToken demonstruje użycie kodu niestandardowego do wyodrębnienia konkretnego
* elementu (łańcucha) z argumentu wejściowego. Może to być przydatne do obsługi
* niektórych typów korelacji danych dynamicznych.
*
* W tym przykładzie przyjęto, że łańcuch wejściowy args[0] jest rozdzielony przecinkami,
* a odpowiedni element jest przedostatni. Na przykład jeśli
* łańcuch args[0] to:
* javascript:parent.selectItem('1010','[Negative]1010','1010','','IBM',
* '30181','Rational','1','null','1','1','6fd8e261','RPT')
* klasa zwróci łańcuch 6fd8e261.
*/
/**
* @author Przykłady kodu niestandardowego IBM
*/
public class ExtractToken implements
com.ibm.rational.test.lt.kernel.custom.ICustomCode2 {
public ExtractToken() {
}
public String exec(ITestExecutionServices tes, String[] args) {
String ArgStr;
String NextToLastStr;
String[] Tokens = args[0].split(",");
if (Tokens.length > 2) {
ArgStr = Tokens[Tokens.length - 2]; // wyodrębnij przedostatni element
// usuń obejmujące znaki ''
NextToLastStr = ArgStr.substring(1, ArgStr.length() - 1);
} else {
tes.getTestLogManager().reportMessage("Nie można wyodrębnić wartości");
NextToLastStr = null;
}
return NextToLastStr;
}
}