Repetindo por meio de Itens em um Controle de Árvore Utilizando o Método GetTestData

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:

Imports Rational.Test.Ft
Imports Rational.Test.Ft.Object.Interfaces
Imports Rational.Test.Ft.Script
Imports Rational.Test.Ft.Value
Imports Rational.Test.Ft.Vp
 
Public Class GetTreeDataExample Inherits GetTreeDataExampleHelper
    ' Script Name   : GetTreeDataExample
    ' Generated     : Dec 14, 2005 6:24:48 AM
    ' Modified      : Dec 14, 2005 6:24:48 AM
    ' Description   : Teste Funcional Script
 
    ' since 2005/12/14
    ' author Administrator
 
    Public Function TestMain (ByVal args() As Object)
        ' 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.Console.WriteLine("Available Tree Data Types: " + _
         Tree2Tree().GetTestDataTypes())
 
        ' Declarar variáveis para árvore
        Dim CdTree As ITestDataTree
        Dim CdTreeNodes As ITestDataTreeNodes
        Dim CdTreeNode As ITestDataTreeNode
 
        ' Variáveis que receberão dados da árvore
        CdTree = Tree2Tree().GetTestData("tree")
        CdTreeNodes = CdTree.GetTreeNodes()
        CdTreeNode = CdTreeNodes.GetRootNodes()


        ' Imprimir número total de nós         System.Console.WriteLine("Tree Total Node Count: " + _           CdTreeNodes.GetNodeCount())         System.Console.WriteLine("Tree Root Node Count : " + _           CdTreeNodes.GetRootNodeCount())          ' Repetir por meio de ramificações da árvore; esse é um método recursivo.
        Dim I As Integer     
        For I = 0 To CdTreeNode.Length - 1          ShowTree(CdTreeNode(I), 0)         Next I           ' Encerrar o Aplicativo Classics Java         ClassicsJavaFrame(ANY,MAY_EXIT).Close()         End Function           Public Sub ShowTree(ByVal Node As ITestDataTreeNodeNode, ByVal _             Indent As Integer)             ' 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         Dim TabCount As Integer         IIf (Indent < Tabs.Length(), TabCount = Indent, _           TabCount = Tabs.Length())           ' Imprimir nome do nó + número de filhos         System.Console.WriteLine(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.         Dim Children As ITestDataTreeNode[] = Node.GetChildren()         Dim ChildCount As Integer
        IIf (ChildCount <> 0, ChildCount = Children.Length, _          ChildCount = 0)     
        Dim I As Integer
        For I = 0 To ChildCount - 1           ShowTree(Children(I), Indent+1)         Next I     End Sub    ' Cadeia de tabulações utilizadas para recuar a visualização em árvore  Const Tabs As String = _     "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"  End Class

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:

     Dim CdTree As ITestDataTree
     CdTree = Tree2Tree().GetTestData("tree")

A próxima etapa é criar uma matriz que contenha todos os nós da árvore. Isso é feito da seguinte forma:

     Dim CdTreeNodes As ITestDataTreeNodes
     Dim CdTreeNode As ITestDataTreeNode()
 
     CdTreeNodes = CdTree.GetTreeNodes()
     CdTreeNode = CdTreeNodes.GetRootNodes()

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.Console.WriteLine(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.