Este exemplo mostra como utilizar o método getTestData
do Functional
Test para acessar através de programação os valores nas ramificações de um controle de
árvore. O exemplo a seguir é testado no aplicativo Classics Java:
import resources.GetTreeDataExampleHelper;
import com.rational.test.ft.*;
import com.rational.test.ft.object.interfaces.*;
import com.rational.test.ft.script.*;
import com.rational.test.ft.value.*;
import com.rational.test.ft.vp.*;
/**
* Description : Teste Funcional Script
* @author administrator
**/
public class GetTreeDataExample
extends GetTreeDataExampleHelper
{
/**
* Script Name : <b>GetTreeDataExample</b>
* Generated : <b>Dec 14, 2002 6:24:48 AM</b>
* Modified : <b>Dec 14, 2002 6:24:48 AM</b>
* Description : Teste Funcional Script
* Original Host : WinNT Version 5.0 Build 2195 (Service Pack 3)
*
* @since 2002/12/14
* @author administrator
*/
public
void testMain (Object[] args)
{
//Desativar o Visualizador de Log neste exemplo
setOption(IOptionName.BRING_UP_LOGVIEWER, false);
//Iniciar o Aplicativo Classics Java
startApp("ClassicsJavaA");
//Aguardar o aparecimento da árvore
tree2Tree().waitForExistence();
//Exibir tipos de dados de teste disponíveis na árvore
System.out.println ("Available Tree Data Types: " +
tree2Tree().getTestDataTypes());
//Declarar variáveis para árvore
ITestDataTree cdTree;
ITestDataTreeNodes cdTreeNodes;
ITestDataTreeNode[] cdTreeNode;
//Variáveis que receberão dados da árvore
cdTree = (ITestDataTree)tree2Tree().getTestData("tree");
cdTreeNodes = cdTree.getTreeNodes();
cdTreeNode = cdTreeNodes.getRootNodes();
//Imprimir número total de nós
System.out.println ("Tree Total Node Count: " +
cdTreeNodes.getNodeCount());
System.out.println ("Tree Root Node Count : " +
cdTreeNodes.getRootNodeCount());
//Repetir por meio de ramificações da árvore; esse é um método recursivo.
for (int i = 0;i<cdTreeNode.length;++i)
showTree(cdTreeNode[i], 0);
//Encerrar o Aplicativo Classics Java
ClassicsJavaFrame(ANY,MAY_EXIT).close();
}
void showTree(ITestDataTreeNode node, int indent)
{
//Método recursivo para imprimir nós da árvore com recuo apropriado.
//Determinar o número de guias a serem utilizadas - para recuar adequadamente a árvore
int tabCount = ( indent < tabs.length() ? indent :
tabs.length() );
//Imprimir nome do nó + número de filhos
System.out.println(tabs.substring(0, tabCount) +
node.getNode() + " (" + node.getChildCount() + "
children)" );
//Determinar se o nó tem filhos; chamar recursivamente esse mesmo
//método para imprimir nós-filhos.
ITestDataTreeNode[] children = node.getChildren();
int childCount = ( children != null ? children.length : 0 );
for ( int i = 0; i < childCount; ++i )
showTree(children[i], indent+1);
}
//Cadeia de tabulações utilizadas para recuar a visualização em árvore
final String tabs = "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
}
A primeira tela desse aplicativo é um componente Java Swing JTree
que lista cinco compositores. O nível seguinte abaixo lista os CDs disponíveis
do compositor selecionado. O código nessa amostra extrai os valores
de todas as ramificações da árvore e os exibe na janela de
console.
A primeira etapa para extrair os dados é utilizar o método getTestData
para extrair os dados do controle. Isso é feito com a seguinte
sintaxe:
ITestDataTree cdTree;
cdTree = (ITestDataTree)tree2Tree().getTestData("tree");
A próxima etapa é criar uma matriz que contenha todos os nós da árvore. Isso é feito da seguinte forma:
ITestDataTreeNodes cdTreeNodes;
ITestDataTreeNode[] cdTreeNode;
cdTreeNodes = cdTree.getTreeNodes();//Encapsula os nós da
raiz.
cdTreeNode = cdTreeNodes.getRootNodes();;//Extrai os nós reais da
raiz.
Observe que este é um processo de duas etapas. Primeiro, você deve utilizar o método getTreeNodes
para retornar um objeto TreeNodes. Em seguida, você pode chamar o método getRootNodes
para extrair uma matriz dos nós raízes da árvore.
Com os nós da árvore em mãos, você pode utilizar um método recursivo para passar por cada
nó para determinar seu valor e o número de filhos diretos contidos.
Isso é feito no método recursivo showTree
. Um método
recursivo é aquele que chama a si próprio e é uma maneira eficiente de passar
por uma estrutura em árvore. Para extrair o valor do nó, utiliza-se o método
getNode
. Para extrair o número de filhos contidos pelo nó,
utiliza-se o método getChildCount
. No exemplo, isso é
feito com o seguinte código:
System.out.println(tabs.substring(0, tabCount) + node.getNode()+" (" + node.getChildCount() + " children)");
Observe que a codificação adicional fornecida no
método showTree
personalizado é para ativar uma impressão formatada
utilizando tabulações para indicar o recuo da árvore.
Termos de uso | Feedback
(C) Copyright IBM Corporation 2002, 2004. Todos os Direitos Reservados.