Cet exemple montre comment utiliser la méthode GetTestData
de l'API Functional Tester
pour accéder par programmation aux valeurs des branches d'un contrôle de type arborescence (Tree).
L'application testée est l'exemple d'application Java fourni avec le produit, ClassicsCD (ClassicsJavaA) :
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 : Functional Test Script ' since 2005/12/14 ' author Administrator Public Function TestMain (ByVal args() As Object) ' Désactiver l'ouverture du visionneur de journal pour cet exemple SetOption(IOptionName.BRING_UP_LOGVIEWER, False) 'Démarrer l'application Java ClassicsCD StartApp("ClassicsJavaA") ' Attendre que l'arborescence apparaisse Tree2Tree().WaitForExistence() ' Afficher les types de données pouvant être testés dans l'arborescence System.Console.WriteLine("Types de données disponibles dans l'arborescence : " + _ Tree2Tree().GetTestDataTypes()) ' Déclarer des variables pour l'arborescence Dim CdTree As ITestDataTree Dim CdTreeNodes As ITestDataTreeNodes Dim CdTreeNode As ITestDataTreeNode ' Variables pour le stockage des données de l'arborescence CdTree = Tree2Tree().GetTestData("tree") CdTreeNodes = CdTree.GetTreeNodes()CdTreeNode = CdTreeNodes.GetRootNodes()
' Afficher le nombre total de noeuds System.Console.WriteLine("Nombre total de noeuds dans l'arborescence : " + _ CdTreeNodes.GetNodeCount()) System.Console.WriteLine("Nombre de noeuds racines : " + _ CdTreeNodes.GetRootNodeCount()) ' Itérer sur les branches de l'arborescence ; il s'agit d'une méthode récursive.
Dim I As Integer
For I = 0 To CdTreeNode.Length - 1 ShowTree(CdTreeNode(I), 0) Next I ' Fermer l'application Java ClassicsCD ClassicsJavaFrame(ANY,MAY_EXIT).Close() End Function Public Sub ShowTree(ByVal Node As ITestDataTreeNodeNode, ByVal _ Indent As Integer) ' Méthode récursive pour afficher les noeuds de l'arborescence avec les ' retraits (indentations) appropriés. ' Déterminer le nombre de tabulations à utiliser pour indenter correctement l'arborescence Dim TabCount As Integer IIf (Indent < Tabs.Length(), TabCount = Indent, _ TabCount = Tabs.Length()) ' Afficher le nom du noeud et le nombre de ses enfants System.Console.WriteLine(Tabs.Substring(0, TabCount) + _ Node.GetNode() + " (" + Node.GetChildCount() + " _ enfants)" ) ' Déterminer si le noeud a des enfants ; appeler récursivement cette même ' méthode pour afficher les noeuds enfants. 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 ' Chaîne de tabulations utilisée pour indenter la vue de l'arborescence 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
Sur le premier écran de l'application testée figure un composant Java Swing JTree
qui, au premier niveau,
répertorie cinq compositeurs classiques. Au niveau suivant de l'arborescence figure la liste
des oeuvres sur CD du compositeur sélectionné (et qui peuvent être commandés par l'utilisateur).
Le code de cet exemple de script lit les valeurs de toutes les branches de l'arbre et
les affiche dans la console.
La première étape consiste à utiliser la méthode GetTestData
pour extraire les données du contrôle. La syntaxe suivante est utilisée à cet effet :
Dim CdTree As ITestDataTree CdTree = Tree2Tree().GetTestData("tree")
L'étape suivante consiste à créer un tableau (array) contenant tous les noeuds de l'arborescence. Elle est réalisée comme suit :
Dim CdTreeNodes As ITestDataTreeNodes Dim CdTreeNode As ITestDataTreeNode() CdTreeNodes = CdTree.GetTreeNodes() CdTreeNode = CdTreeNodes.GetRootNodes()
Notez que ce processus comprend deux étapes. On utilise d'abord la méthode GetTreeNodes
pour renvoyer un objet TreeNodes. On appelle ensuite la méthode GetRootNodes
sur cet objet pour obtenir un tableau constitué des noeuds racines de l'arborescence.
Une fois les noeuds disponibles, on peut les parcourir un à un pour déterminer
leur valeur et le nombre d'enfants directs qu'ils contiennent.
On utilise pour cela la méthode récursive ShowTree
. Une méthode récursive
est une méthode qui s'appelle elle-même. Il s'agit d'un moyen efficace de parcourir
une structure arborescente. Pour lire la valeur de chaque noeud, on a recours à la
méthode GetNode
. Pour obtenir le nombre d'enfants du noeud,
on utilise la méthode GetChildCount
. La syntaxe suivante est utilisée à cet effet :
System.Console.WriteLine(Tabs.Substring(0, TabCount) + _ Node.GetNode()+" (" + Node.GetChildCount() + " enfants)")
Notez que le codage additionnel fourni dans la
méthode ShowTree
personnalisée a pour but de mettre en forme la présentation de l'arborescence. On utilise
à cet effet des tabulations pour refléter l'indentation (ou retrait) des éléments.
Conditions d'utilisation | Appréciations en retour
(C) Copyright IBM Corporation 2002, 2004. All Rights Reserved.