L'esempio riportato di seguito esegue il test dell'applicazione Java™ Classics:
import resources.GetTreeDataExampleHelper; import com.rational.test.ft.*; import com.rational.test.ft.object.interfaces.*; import com.rational.test.ft.object.interfaces.SAP.*; import com.rational.test.ft.object.interfaces.siebel.*; import com.rational.test.ft.script.*; import com.rational.test.ft.value.*; import com.rational.test.ft.vp.*; /** * Description : Functional Test Script * @author Administrator */ public class GetTreeDataExample extends GetTreeDataExampleHelper { /** * Script Name : GetTreeDataExample * Generated : Jul 14, 2006 4:46:31 PM * Description : Functional Test Script * Original Host : WinNT Version 5.1 Build 2600 (S) * * @since 2006/07/14 * @author Administrator */ public void testMain (Object[] args) { // Avviare l'applicazione Java Classics startApp("ClassicsJavaA"); // Frame: ClassicsCD tree2().waitForExistence(); //Visualizzare i tipi di dati di test disponibili dalla struttura ad albero System.out.println ("Available Tree Data Types: " + tree2().getTestDataTypes()); //Dichiarare le variabili per la struttura ad albero ITestDataTree cdTree; ITestDataTreeNodes cdTreeNodes; ITestDataTreeNode[] cdTreeNode; //Variabili di contenimento dei dati della struttura ad albero cdTree = (ITestDataTree)tree2().getTestData("tree"); cdTreeNodes = cdTree.getTreeNodes(); cdTreeNode = cdTreeNodes.getRootNodes(); //Stampare il numero totale di nodi System.out.println ("Tree Total Node Count: " + cdTreeNodes.getNodeCount()); System.out.println ("Tree Root Node Count : " + cdTreeNodes.getRootNodeCount()); //Eseguire l'iterazione sui rami della struttura ad albero; questo è un metodo ricorsivo. for (int i = 0;i<cdTreeNode.length;++i) showTree(cdTreeNode[i], 0); //Chiudere l'applicazione Java Classics classicsJava(ANY,MAY_EXIT).close(); } void showTree(ITestDataTreeNode node, int indent) { //Metodo ricorsivo per stampare i nodi della struttura ad albero con dei corretti rientri. //Determinare il numero di tabulazioni da utilizzare per dei corretti rientri della struttura ad albero int tabCount = ( indent < tabs.length() ? indent : tabs.length() ); //Stampare il nome del nodo + il numero degli elementi secondari System.out.println(tabs.substring(0, tabCount) + node.getNode() + " (" + node.getChildCount() + "children)" ); //Determinare se il nodo ha degli elementi secondari; richiamare ricorsivamente questo stesso //metodo per stampare i nodi secondari. ITestDataTreeNode[] children = node.getChildren(); int childCount = ( children != null ? children.length : 0 ); for ( int i = 0; i < childCount; ++i ) showTree(children[i], indent+1); } //Stringa di tabulazioni utilizzata per i rientri della vista ad albero final String tabs = "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"; }
Sulla prima schermata di questa applicazione c'è un componente Java Swing JTree, che elenca cinque compositori. Il livello successivo in basso elenca i CD disponibili per il compositore selezionato. Il codice in quest'esempio estrae i valori da tutti i rami della struttura ad albero e li visualizza nella finestra della console.
Il primo passo nell'estrazione dei dati consiste nell'utilizzare il metodo getTestData per estrarre i dati dal controllo. Ciò viene effettuato utilizzando la sintassi seguente:
ITestDataTree cdTree; cdTree = (ITestDataTree)tree2().getTestData("tree");
Il passo successivo consiste nella creazione di una matrice che contiene tutti i nodi sulla struttura ad albero. Ciò viene eseguito nel modo indicato di seguito:
ITestDataTreeNodes cdTreeNodes; ITestDataTreeNode[] cdTreeNode; cdTreeNodes = cdTree.getTreeNodes();//Incapsula i nodi root. cdTreeNode = cdTreeNodes.getRootNodes();;//Estrae gli effettivi nodi root.
Si noti che questo è un processo a due fasi. Occorre innanzitutto utilizzare il metodo getTreeNodes per restituire un oggetto TreeNodes. Si richiama quindi il metodo getRootNodes per estrarre una matrice dei nodi root per la struttura ad albero.
Quando si dispone dei nodi della struttura ad albero, è possibile utilizzare la ricorsione per analizzare ogni nodo per determinarne il valore ed il numero di elementi secondari diretti che contiene. Ciò viene eseguito dal metodo ricorsivo showTree. Un metodo ricorsivo è un metodo che richiama se stesso ed è un metodo efficace per analizzare in modo progressivo una struttura ad albero. Per estrarre il valore del nodo, viene utilizzato il metodo getNode. Per estrarre il numero di elementi secondari contenuto dal nodo, viene utilizzato il metodo getChildCount. In questo esempio, ciò viene eseguito utilizzando il seguente codice:
System.out.println(tabs.substring(0, tabCount) + node.getNode()+" (" + node.getChildCount() + " children)");
Notare che la codifica aggiuntiva fornita nel metodo showTree personalizzato serve ad abilitare una stampa formattata utilizzando le tabulazioni per indicare i rientri della struttura ad albero.